├── .editorconfig ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .storybook ├── addons.js ├── tsconfig.json └── webpack.config.js ├── .vscode └── extensions.json ├── README.md ├── angular.json ├── apps ├── .gitkeep ├── cov-app-e2e │ ├── .nyc_output │ │ └── out.json │ ├── coverage.webpack.js │ ├── cypress.json │ ├── src │ │ ├── fixtures │ │ │ └── example.json │ │ ├── integration │ │ │ └── app.spec.ts │ │ ├── plugins │ │ │ └── index.js │ │ └── support │ │ │ ├── app.po.ts │ │ │ ├── commands.ts │ │ │ └── index.ts │ ├── tsconfig.e2e.json │ ├── tsconfig.json │ └── tslint.json ├── cov-app │ ├── browserslist │ ├── jest.config.js │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ └── app.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json └── ui-lib-e2e │ ├── .nyc_output │ └── out.json │ ├── cypress.json │ ├── src │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── task │ │ │ └── task.component.spec.ts │ ├── plugins │ │ └── index.js │ └── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.e2e.json │ ├── tsconfig.json │ └── tslint.json ├── jest.config.js ├── karma.conf.js ├── libs ├── .gitkeep └── ui-lib │ ├── .storybook │ ├── addons.js │ ├── config.js │ ├── tsconfig.json │ └── webpack.config.js │ ├── README.md │ ├── jest.config.js │ ├── src │ ├── index.ts │ ├── lib │ │ ├── task │ │ │ ├── task.component.css │ │ │ ├── task.component.html │ │ │ ├── task.component.spec.ts │ │ │ ├── task.component.stories.ts │ │ │ └── task.component.ts │ │ ├── ui-lib.module.spec.ts │ │ └── ui-lib.module.ts │ └── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ ├── tsconfig.spec.json │ └── tslint.json ├── nx.json ├── package-lock.json ├── package.json ├── tools ├── schematics │ └── .gitkeep └── tsconfig.tools.json ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /.storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-knobs/register'; 2 | -------------------------------------------------------------------------------- /.storybook/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "exclude": ["../**/test.ts", "../**/*.spec.ts"], 4 | "include": ["../**/*"] 5 | } 6 | -------------------------------------------------------------------------------- /.storybook/webpack.config.js: -------------------------------------------------------------------------------- 1 | // Export a function. Accept the base config as the only param. 2 | module.exports = async ({ config, mode }) => { 3 | // `mode` has a value of 'DEVELOPMENT' or 'PRODUCTION' 4 | // You can change the configuration based on that. 5 | // 'PRODUCTION' is used when building the static version of storybook. 6 | 7 | // Make whatever fine-grained changes you need 8 | 9 | // Return the altered config 10 | return config; 11 | }; 12 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "nrwl.angular-console", 4 | "angular.ng-template", 5 | "ms-vscode.vscode-typescript-tslint-plugin", 6 | "esbenp.prettier-vscode" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CoverageWorkspace 2 | 3 |

🔎 Nx is a set of Extensible Dev Tools for Monorepos.

4 | 5 | ## Further info on NX itself 6 | 7 | Visit the [Nx Documentation](https://nx.dev/angular) to learn more. 8 | 9 | ## Running the example 10 | 11 | ### Preparation 12 | 13 | Install the packages as usual with 14 | `npm install` 15 | 16 | If you haven't used nx before, you might need to run `npm install @nrwl/nx` as well. 17 | 18 | ### Running 19 | 20 | At least on Windows, there might be problems with locating `nyc`. You can solve that by either putting your `node_modules/.bin` on PATH (and of course restarting your terminal to make sure it's applied) or prefixing all execution commands with `npx`. 21 | 22 | #### NX-style 23 | 24 | NX generates a lot of commands to run the application, also with more elaborate configurations. They can be run directly in command line, being specified in `nx.json`. 25 | 26 | For running e2e-Tests of the app, run 27 | > nx run cov-app-e2e:e2e 28 | 29 | For running the Component-Tests against a Storybook-Instance, run 30 | > nx run ui-lib-e2e:e2e 31 | 32 | Both calls take care of starting their targets themselves. 33 | 34 | #### Plan B 35 | 36 | For users preferring scripts in package.json, you could also use scripts `app-e2e` for the classic e2e-Test against an application or `lib-e2e` for Component-Tests against Storybook 37 | 38 | In webpack.config mind the include - all correct paths to sources that shall be instrumented/you want coverage for in this e2e-Project, have to be declared correctly. 39 | If you want coverage for specs as well, remove corresponding entries from exclude. 40 | 41 | ## Changes needed in your NX-Setup 42 | 43 | This repo essentially followed the instructions of , but will expand on the details that took me a while to figure out, necessary to have a successful setup. 44 | 45 | ### Skylock's Setup, with hints 46 | 47 | - Install ngx-build-plus to extends the Angular CLI's build process and instrument the code. It enables adding an additional webpack-config which takes care of the instrumentation of the application when it is served. 48 | 49 | ```bash 50 | npm i -D ngx-build-plus 51 | ``` 52 | 53 | - Add webpack coverage config file coverage.webpack.js to cypress folder (in this example, it's the app cov-app-e2e). In `include`, make sure all desired source-folders are listed, with correct paths relative to the webpack config. 54 | 55 | ```JavaScript 56 | module.exports = { 57 | module: { 58 | rules: [ 59 | { 60 | test: /\.(js|ts)$/, 61 | loader: 'istanbul-instrumenter-loader', 62 | options: { esModules: true }, 63 | enforce: 'post', 64 | include: [ 65 | require('path').join(__dirname, '..', 'cov-app/src'), 66 | require('path').join(__dirname, '../..', 'libs/ui-lib/src') 67 | ], 68 | exclude: [ 69 | /\.(e2e|spec)\.ts$/, 70 | /node_modules/, 71 | /(ngfactory|ngstyle)\.js/ 72 | ] 73 | } 74 | ] 75 | } 76 | }; 77 | 78 | ``` 79 | 80 | - Update angular.json to use ngx-build with extra config, it extends the previous configuration with the instrumentation step. In NX Setup, serve is called on test startup, so with this configuration both `ng serve` and `nx run cov-app` result in instrumented code. 81 | 82 | ```JSON 83 | "serve": { 84 | "builder": "ngx-build-plus:dev-server", 85 | "options": { 86 | "browserTarget": "cypress-angular-coverage-example:build", 87 | "extraWebpackConfig": "./cypress/coverage.webpack.js" 88 | }, 89 | ``` 90 | 91 | - Instrument JS files with istanbul-lib-instrument for subsequent code coverage reporting 92 | 93 | ```bash 94 | npm i -D istanbul-instrumenter-loader 95 | ``` 96 | 97 | - Make Istanbul understand your Typescript source files 98 | 99 | ```bash 100 | npm i -D @istanbuljs/nyc-config-typescript source-map-support ts-node 101 | ``` 102 | 103 | - Make sure that Istanbul takes advantage of it by adding this configuration in your package.json or in .nycrc.json, on the same level as e.g. `scripts` 104 | 105 | ```JSON 106 | "nyc": { 107 | "extends": "@istanbuljs/nyc-config-typescript", 108 | "all": true 109 | }, 110 | ``` 111 | 112 | - Add cypress code coverage plugin 113 | 114 | ```bash 115 | npm install -D @cypress/code-coverage nyc istanbul-lib-coverage 116 | ``` 117 | 118 | - Then add the code below to your supportFile and pluginsFile 119 | 120 | ```JavaScript 121 | // cypress/support/index.js 122 | import '@cypress/code-coverage/support' 123 | ``` 124 | 125 | ```JavaScript 126 | // cypress/plugins/index.js 127 | module.exports = (on, config) => { 128 | on('task', require('@cypress/code-coverage/task')) 129 | } 130 | ``` 131 | 132 | ### Summarized setup for a regular app, i.e. cov-app + cov-app-e2e 133 | 134 | - Install dependencies 135 | 136 | ```bash 137 | npm i -D ngx-build-plus 138 | npm i -D istanbul-instrumenter-loader 139 | npm i -D @istanbuljs/nyc-config-typescript source-map-support ts-node 140 | npm install -D @cypress/code-coverage nyc istanbul-lib-coverage 141 | ``` 142 | 143 | - Provide additional webpack-config `coverage.webpack.js` in cov-app-e2e, make sure paths are all listed and correct 144 | 145 | ```JavaScript 146 | module.exports = { 147 | module: { 148 | rules: [ 149 | { 150 | test: /\.(js|ts)$/, 151 | loader: 'istanbul-instrumenter-loader', 152 | options: { esModules: true }, 153 | enforce: 'post', 154 | include: [ 155 | require('path').join(__dirname, '..', 'cov-app/src'), 156 | require('path').join(__dirname, '../..', 'libs/ui-lib/src') 157 | ], 158 | exclude: [ 159 | /\.(e2e|spec)\.ts$/, 160 | /node_modules/, 161 | /(ngfactory|ngstyle)\.js/ 162 | ] 163 | } 164 | ] 165 | } 166 | }; 167 | 168 | ``` 169 | 170 | - Change `angular.json` for cov-app 171 | 172 | ```JSON 173 | "serve": { 174 | "builder": "ngx-build-plus:dev-server", 175 | "options": { 176 | "browserTarget": "cypress-angular-coverage-example:build", 177 | "extraWebpackConfig": "./cypress/coverage.webpack.js" 178 | }, 179 | ``` 180 | 181 | - Add global config to `package.json` (same level as e.g. scripts) 182 | 183 | ```JSON 184 | "nyc": { 185 | "extends": "@istanbuljs/nyc-config-typescript", 186 | "all": true 187 | }, 188 | ``` 189 | 190 | - Configure cypress-plugin in cov-app-e2e 191 | 192 | ```JavaScript 193 | // cypress/support/index.js 194 | import '@cypress/code-coverage/support' 195 | ``` 196 | 197 | ```JavaScript 198 | // cypress/plugins/index.js 199 | module.exports = (on, config) => { 200 | on('task', require('@cypress/code-coverage/task')) 201 | } 202 | ``` 203 | 204 | Coverage Report with Highlighting can be found after test execution in `/coverage/lcov-report/index.html` 205 | 206 | ### Configuration for e2e-Tests against Storybook 207 | 208 | - Install dependencies, build-plus is (probably) not necessary as there's already a webpack-configuration we can modify towards our needs. 209 | 210 | ```bash 211 | npm i -D istanbul-instrumenter-loader 212 | npm i -D @istanbuljs/nyc-config-typescript source-map-support ts-node 213 | npm install -D @cypress/code-coverage nyc istanbul-lib-coverage 214 | ``` 215 | 216 | - Add instrumentation configuration into `webpack.config.js` in .storybook directory inside the tested library (here: ui-lib). As Storybook already makes use of Webpack, this step replaces the additional webpack-config and the alteration of the configuration in angular.json. 217 | 218 | ```JavaScript 219 | const rootWebpackConfig = require('../../../.storybook/webpack.config'); 220 | // Export a function. Accept the base config as the only param. 221 | module.exports = async ({ config, mode }) => { 222 | config = await rootWebpackConfig({ config, mode }); 223 | config.module.rules.push({ 224 | test: /\.(js|ts)$/, 225 | loader: 'istanbul-instrumenter-loader', 226 | options: { esModules: true }, 227 | enforce: 'post', 228 | include: require('path').join(__dirname, '..', 'src') 229 | }); 230 | // Return the altered config 231 | return config; 232 | }; 233 | 234 | ``` 235 | 236 | - Add global config to `package.json` (same level as e.g. scripts) 237 | 238 | ```JSON 239 | "nyc": { 240 | "extends": "@istanbuljs/nyc-config-typescript", 241 | "all": true 242 | }, 243 | ``` 244 | 245 | - Configure cypress-plugin in ui-lib-e2e 246 | 247 | ```JavaScript 248 | // cypress/support/index.js 249 | import '@cypress/code-coverage/support' 250 | ``` 251 | 252 | ```JavaScript 253 | // cypress/plugins/index.js 254 | module.exports = (on, config) => { 255 | on('task', require('@cypress/code-coverage/task')) 256 | } 257 | ``` 258 | 259 | Coverage Report with Highlighting can be found after test execution in `/coverage/lcov-report/index.html`. -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "projects": { 4 | "cov-app": { 5 | "projectType": "application", 6 | "schematics": {}, 7 | "root": "apps/cov-app", 8 | "sourceRoot": "apps/cov-app/src", 9 | "prefix": "coverage-workspace", 10 | "architect": { 11 | "build": { 12 | "builder": "@angular-devkit/build-angular:browser", 13 | "options": { 14 | "outputPath": "dist/apps/cov-app", 15 | "index": "apps/cov-app/src/index.html", 16 | "main": "apps/cov-app/src/main.ts", 17 | "polyfills": "apps/cov-app/src/polyfills.ts", 18 | "tsConfig": "apps/cov-app/tsconfig.app.json", 19 | "aot": true, 20 | "assets": [ 21 | "apps/cov-app/src/favicon.ico", 22 | "apps/cov-app/src/assets" 23 | ], 24 | "styles": [ 25 | "apps/cov-app/src/styles.css" 26 | ], 27 | "scripts": [] 28 | }, 29 | "configurations": { 30 | "production": { 31 | "fileReplacements": [ 32 | { 33 | "replace": "apps/cov-app/src/environments/environment.ts", 34 | "with": "apps/cov-app/src/environments/environment.prod.ts" 35 | } 36 | ], 37 | "optimization": true, 38 | "outputHashing": "all", 39 | "sourceMap": false, 40 | "extractCss": true, 41 | "namedChunks": false, 42 | "extractLicenses": true, 43 | "vendorChunk": false, 44 | "buildOptimizer": true, 45 | "budgets": [ 46 | { 47 | "type": "initial", 48 | "maximumWarning": "2mb", 49 | "maximumError": "5mb" 50 | }, 51 | { 52 | "type": "anyComponentStyle", 53 | "maximumWarning": "6kb", 54 | "maximumError": "10kb" 55 | } 56 | ] 57 | } 58 | } 59 | }, 60 | "serve": { 61 | "builder": "ngx-build-plus:dev-server", 62 | "options": { 63 | "browserTarget": "cov-app:build", 64 | "extraWebpackConfig": "./apps/cov-app-e2e/coverage.webpack.js" 65 | }, 66 | "configurations": { 67 | "production": { 68 | "browserTarget": "cov-app:build:production" 69 | } 70 | } 71 | }, 72 | "extract-i18n": { 73 | "builder": "@angular-devkit/build-angular:extract-i18n", 74 | "options": { 75 | "browserTarget": "cov-app:build" 76 | } 77 | }, 78 | "lint": { 79 | "builder": "@angular-devkit/build-angular:tslint", 80 | "options": { 81 | "tsConfig": [ 82 | "apps/cov-app/tsconfig.app.json", 83 | "apps/cov-app/tsconfig.spec.json" 84 | ], 85 | "exclude": [ 86 | "**/node_modules/**", 87 | "!apps/cov-app/**" 88 | ] 89 | } 90 | }, 91 | "test": { 92 | "builder": "@nrwl/jest:jest", 93 | "options": { 94 | "jestConfig": "apps/cov-app/jest.config.js", 95 | "tsConfig": "apps/cov-app/tsconfig.spec.json", 96 | "setupFile": "apps/cov-app/src/test-setup.ts" 97 | } 98 | } 99 | } 100 | }, 101 | "cov-app-e2e": { 102 | "root": "apps/cov-app-e2e", 103 | "sourceRoot": "apps/cov-app-e2e/src", 104 | "projectType": "application", 105 | "architect": { 106 | "e2e": { 107 | "builder": "@nrwl/cypress:cypress", 108 | "options": { 109 | "cypressConfig": "apps/cov-app-e2e/cypress.json", 110 | "tsConfig": "apps/cov-app-e2e/tsconfig.e2e.json", 111 | "devServerTarget": "cov-app:serve" 112 | }, 113 | "configurations": { 114 | "production": { 115 | "devServerTarget": "cov-app:serve:production" 116 | } 117 | } 118 | }, 119 | "lint": { 120 | "builder": "@angular-devkit/build-angular:tslint", 121 | "options": { 122 | "tsConfig": [ 123 | "apps/cov-app-e2e/tsconfig.e2e.json" 124 | ], 125 | "exclude": [ 126 | "**/node_modules/**", 127 | "!apps/cov-app-e2e/**" 128 | ] 129 | } 130 | } 131 | } 132 | }, 133 | "ui-lib": { 134 | "projectType": "library", 135 | "root": "libs/ui-lib", 136 | "sourceRoot": "libs/ui-lib/src", 137 | "prefix": "coverage-workspace", 138 | "architect": { 139 | "lint": { 140 | "builder": "@angular-devkit/build-angular:tslint", 141 | "options": { 142 | "tsConfig": [ 143 | "libs/ui-lib/tsconfig.lib.json", 144 | "libs/ui-lib/tsconfig.spec.json" 145 | ], 146 | "exclude": [ 147 | "**/node_modules/**", 148 | "!libs/ui-lib/**" 149 | ] 150 | } 151 | }, 152 | "test": { 153 | "builder": "@nrwl/jest:jest", 154 | "options": { 155 | "jestConfig": "libs/ui-lib/jest.config.js", 156 | "tsConfig": "libs/ui-lib/tsconfig.spec.json", 157 | "setupFile": "libs/ui-lib/src/test-setup.ts" 158 | } 159 | }, 160 | "storybook": { 161 | "builder": "@nrwl/storybook:storybook", 162 | "options": { 163 | "uiFramework": "@storybook/angular", 164 | "port": 4400, 165 | "config": { 166 | "configFolder": "libs/ui-lib/.storybook" 167 | } 168 | }, 169 | "configurations": { 170 | "ci": { 171 | "quiet": true 172 | } 173 | } 174 | }, 175 | "build-storybook": { 176 | "builder": "@nrwl/storybook:build", 177 | "options": { 178 | "uiFramework": "@storybook/angular", 179 | "outputPath": "dist/storybook/ui-lib", 180 | "config": { 181 | "configFolder": "libs/ui-lib/.storybook" 182 | } 183 | }, 184 | "configurations": { 185 | "ci": { 186 | "quiet": true 187 | } 188 | } 189 | } 190 | }, 191 | "schematics": {} 192 | }, 193 | "ui-lib-e2e": { 194 | "root": "apps/ui-lib-e2e", 195 | "sourceRoot": "apps/ui-lib-e2e/src", 196 | "projectType": "application", 197 | "architect": { 198 | "e2e": { 199 | "builder": "@nrwl/cypress:cypress", 200 | "options": { 201 | "cypressConfig": "apps/ui-lib-e2e/cypress.json", 202 | "tsConfig": "apps/ui-lib-e2e/tsconfig.e2e.json", 203 | "devServerTarget": "ui-lib:storybook" 204 | }, 205 | "configurations": { 206 | "production": { 207 | "devServerTarget": "ui-lib:serve:production" 208 | } 209 | } 210 | }, 211 | "lint": { 212 | "builder": "@angular-devkit/build-angular:tslint", 213 | "options": { 214 | "tsConfig": [ 215 | "apps/ui-lib-e2e/tsconfig.e2e.json" 216 | ], 217 | "exclude": [ 218 | "**/node_modules/**", 219 | "!apps/ui-lib-e2e/**" 220 | ] 221 | } 222 | } 223 | } 224 | } 225 | }, 226 | "cli": { 227 | "defaultCollection": "@nrwl/angular" 228 | }, 229 | "schematics": { 230 | "@nrwl/angular:application": { 231 | "unitTestRunner": "jest", 232 | "e2eTestRunner": "cypress" 233 | }, 234 | "@nrwl/angular:library": { 235 | "unitTestRunner": "jest" 236 | } 237 | }, 238 | "defaultProject": "cov-app" 239 | } 240 | -------------------------------------------------------------------------------- /apps/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/.nyc_output/out.json: -------------------------------------------------------------------------------- 1 | { 2 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\polyfills.ts": { 3 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\polyfills.ts", 4 | "statementMap": {}, 5 | "fnMap": {}, 6 | "branchMap": {}, 7 | "s": {}, 8 | "f": {}, 9 | "b": {}, 10 | "inputSourceMap": { 11 | "version": 3, 12 | "file": "polyfills.js", 13 | "sourceRoot": "", 14 | "sources": [ 15 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\polyfills.ts" 16 | ], 17 | "names": [], 18 | "mappings": "AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,+EAA+E;AAC/E,oEAAoE;AAEpE;;;;GAIG;AACH,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,OAAO,mBAAmB,CAAC,CAAC,6BAA6B;AAEzD;;GAEG", 19 | "sourcesContent": [ 20 | "/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/guide/browser-support\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n */\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n * because those flags need to be set before `zone.js` being loaded, and webpack\r\n * will put import in the top of bundle, so user need to create a separate file\r\n * in this directory (for example: zone-flags.ts), and put the following flags\r\n * into that file, and then add the following code before importing zone.js.\r\n * import './zone-flags.ts';\r\n *\r\n * The flags allowed in zone-flags.ts are listed here.\r\n *\r\n * The following flags will work for all browsers.\r\n *\r\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n *\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n *\r\n * (window as any).__Zone_enable_cross_context_check = true;\r\n *\r\n */\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n" 21 | ] 22 | }, 23 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 24 | "hash": "cfd72d230e1ea95965eac0ccf970be62303736a3" 25 | }, 26 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\environments\\environment.ts": { 27 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\environments\\environment.ts", 28 | "statementMap": { 29 | "0": { 30 | "start": { 31 | "line": 4, 32 | "column": 27 33 | }, 34 | "end": { 35 | "line": 6, 36 | "column": 1 37 | } 38 | } 39 | }, 40 | "fnMap": {}, 41 | "branchMap": {}, 42 | "s": { 43 | "0": 4 44 | }, 45 | "f": {}, 46 | "b": {}, 47 | "inputSourceMap": { 48 | "version": 3, 49 | "file": "environment.js", 50 | "sourceRoot": "", 51 | "sources": [ 52 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\environments\\environment.ts" 53 | ], 54 | "names": [], 55 | "mappings": "AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,gEAAgE;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,mEAAmE", 56 | "sourcesContent": [ 57 | "// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n" 58 | ] 59 | }, 60 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 61 | "hash": "d6b67e2ee48f8ed517bbfa0e07438a30cc3002de" 62 | }, 63 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.component.ts": { 64 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.component.ts", 65 | "statementMap": { 66 | "0": { 67 | "start": { 68 | "line": 6, 69 | "column": 8 70 | }, 71 | "end": { 72 | "line": 6, 73 | "column": 31 74 | } 75 | }, 76 | "1": { 77 | "start": { 78 | "line": 9, 79 | "column": 0 80 | }, 81 | "end": { 82 | "line": 9, 83 | "column": 91 84 | } 85 | }, 86 | "2": { 87 | "start": { 88 | "line": 9, 89 | "column": 55 90 | }, 91 | "end": { 92 | "line": 9, 93 | "column": 88 94 | } 95 | }, 96 | "3": { 97 | "start": { 98 | "line": 10, 99 | "column": 0 100 | }, 101 | "end": { 102 | "line": 101, 103 | "column": 7855 104 | } 105 | }, 106 | "4": { 107 | "start": { 108 | "line": 10, 109 | "column": 1210 110 | }, 111 | "end": { 112 | "line": 98, 113 | "column": 5 114 | } 115 | }, 116 | "5": { 117 | "start": { 118 | "line": 11, 119 | "column": 8 120 | }, 121 | "end": { 122 | "line": 11, 123 | "column": 37 124 | } 125 | }, 126 | "6": { 127 | "start": { 128 | "line": 12, 129 | "column": 8 130 | }, 131 | "end": { 132 | "line": 12, 133 | "column": 42 134 | } 135 | }, 136 | "7": { 137 | "start": { 138 | "line": 13, 139 | "column": 8 140 | }, 141 | "end": { 142 | "line": 13, 143 | "column": 34 144 | } 145 | }, 146 | "8": { 147 | "start": { 148 | "line": 14, 149 | "column": 8 150 | }, 151 | "end": { 152 | "line": 14, 153 | "column": 35 154 | } 155 | }, 156 | "9": { 157 | "start": { 158 | "line": 15, 159 | "column": 8 160 | }, 161 | "end": { 162 | "line": 15, 163 | "column": 21 164 | } 165 | }, 166 | "10": { 167 | "start": { 168 | "line": 16, 169 | "column": 8 170 | }, 171 | "end": { 172 | "line": 16, 173 | "column": 26 174 | } 175 | }, 176 | "11": { 177 | "start": { 178 | "line": 17, 179 | "column": 8 180 | }, 181 | "end": { 182 | "line": 17, 183 | "column": 26 184 | } 185 | }, 186 | "12": { 187 | "start": { 188 | "line": 18, 189 | "column": 8 190 | }, 191 | "end": { 192 | "line": 18, 193 | "column": 37 194 | } 195 | }, 196 | "13": { 197 | "start": { 198 | "line": 19, 199 | "column": 8 200 | }, 201 | "end": { 202 | "line": 19, 203 | "column": 35 204 | } 205 | }, 206 | "14": { 207 | "start": { 208 | "line": 20, 209 | "column": 8 210 | }, 211 | "end": { 212 | "line": 20, 213 | "column": 42 214 | } 215 | }, 216 | "15": { 217 | "start": { 218 | "line": 21, 219 | "column": 8 220 | }, 221 | "end": { 222 | "line": 21, 223 | "column": 26 224 | } 225 | }, 226 | "16": { 227 | "start": { 228 | "line": 22, 229 | "column": 8 230 | }, 231 | "end": { 232 | "line": 22, 233 | "column": 34 234 | } 235 | }, 236 | "17": { 237 | "start": { 238 | "line": 23, 239 | "column": 8 240 | }, 241 | "end": { 242 | "line": 23, 243 | "column": 78 244 | } 245 | }, 246 | "18": { 247 | "start": { 248 | "line": 24, 249 | "column": 8 250 | }, 251 | "end": { 252 | "line": 24, 253 | "column": 26 254 | } 255 | }, 256 | "19": { 257 | "start": { 258 | "line": 25, 259 | "column": 8 260 | }, 261 | "end": { 262 | "line": 25, 263 | "column": 40 264 | } 265 | }, 266 | "20": { 267 | "start": { 268 | "line": 26, 269 | "column": 8 270 | }, 271 | "end": { 272 | "line": 26, 273 | "column": 38 274 | } 275 | }, 276 | "21": { 277 | "start": { 278 | "line": 27, 279 | "column": 8 280 | }, 281 | "end": { 282 | "line": 27, 283 | "column": 66 284 | } 285 | }, 286 | "22": { 287 | "start": { 288 | "line": 28, 289 | "column": 8 290 | }, 291 | "end": { 292 | "line": 28, 293 | "column": 40 294 | } 295 | }, 296 | "23": { 297 | "start": { 298 | "line": 29, 299 | "column": 8 300 | }, 301 | "end": { 302 | "line": 29, 303 | "column": 28 304 | } 305 | }, 306 | "24": { 307 | "start": { 308 | "line": 30, 309 | "column": 8 310 | }, 311 | "end": { 312 | "line": 30, 313 | "column": 40 314 | } 315 | }, 316 | "25": { 317 | "start": { 318 | "line": 31, 319 | "column": 8 320 | }, 321 | "end": { 322 | "line": 31, 323 | "column": 36 324 | } 325 | }, 326 | "26": { 327 | "start": { 328 | "line": 32, 329 | "column": 8 330 | }, 331 | "end": { 332 | "line": 32, 333 | "column": 36 334 | } 335 | }, 336 | "27": { 337 | "start": { 338 | "line": 33, 339 | "column": 8 340 | }, 341 | "end": { 342 | "line": 33, 343 | "column": 26 344 | } 345 | }, 346 | "28": { 347 | "start": { 348 | "line": 34, 349 | "column": 8 350 | }, 351 | "end": { 352 | "line": 34, 353 | "column": 32 354 | } 355 | }, 356 | "29": { 357 | "start": { 358 | "line": 35, 359 | "column": 8 360 | }, 361 | "end": { 362 | "line": 35, 363 | "column": 26 364 | } 365 | }, 366 | "30": { 367 | "start": { 368 | "line": 36, 369 | "column": 8 370 | }, 371 | "end": { 372 | "line": 36, 373 | "column": 26 374 | } 375 | }, 376 | "31": { 377 | "start": { 378 | "line": 37, 379 | "column": 8 380 | }, 381 | "end": { 382 | "line": 37, 383 | "column": 26 384 | } 385 | }, 386 | "32": { 387 | "start": { 388 | "line": 38, 389 | "column": 8 390 | }, 391 | "end": { 392 | "line": 38, 393 | "column": 29 394 | } 395 | }, 396 | "33": { 397 | "start": { 398 | "line": 39, 399 | "column": 8 400 | }, 401 | "end": { 402 | "line": 39, 403 | "column": 35 404 | } 405 | }, 406 | "34": { 407 | "start": { 408 | "line": 40, 409 | "column": 8 410 | }, 411 | "end": { 412 | "line": 40, 413 | "column": 72 414 | } 415 | }, 416 | "35": { 417 | "start": { 418 | "line": 41, 419 | "column": 8 420 | }, 421 | "end": { 422 | "line": 41, 423 | "column": 26 424 | } 425 | }, 426 | "36": { 427 | "start": { 428 | "line": 42, 429 | "column": 8 430 | }, 431 | "end": { 432 | "line": 42, 433 | "column": 39 434 | } 435 | }, 436 | "37": { 437 | "start": { 438 | "line": 43, 439 | "column": 8 440 | }, 441 | "end": { 442 | "line": 43, 443 | "column": 39 444 | } 445 | }, 446 | "38": { 447 | "start": { 448 | "line": 44, 449 | "column": 8 450 | }, 451 | "end": { 452 | "line": 44, 453 | "column": 39 454 | } 455 | }, 456 | "39": { 457 | "start": { 458 | "line": 45, 459 | "column": 8 460 | }, 461 | "end": { 462 | "line": 45, 463 | "column": 43 464 | } 465 | }, 466 | "40": { 467 | "start": { 468 | "line": 46, 469 | "column": 8 470 | }, 471 | "end": { 472 | "line": 46, 473 | "column": 26 474 | } 475 | }, 476 | "41": { 477 | "start": { 478 | "line": 47, 479 | "column": 8 480 | }, 481 | "end": { 482 | "line": 47, 483 | "column": 26 484 | } 485 | }, 486 | "42": { 487 | "start": { 488 | "line": 48, 489 | "column": 8 490 | }, 491 | "end": { 492 | "line": 48, 493 | "column": 39 494 | } 495 | }, 496 | "43": { 497 | "start": { 498 | "line": 49, 499 | "column": 8 500 | }, 501 | "end": { 502 | "line": 49, 503 | "column": 39 504 | } 505 | }, 506 | "44": { 507 | "start": { 508 | "line": 50, 509 | "column": 8 510 | }, 511 | "end": { 512 | "line": 50, 513 | "column": 45 514 | } 515 | }, 516 | "45": { 517 | "start": { 518 | "line": 51, 519 | "column": 8 520 | }, 521 | "end": { 522 | "line": 51, 523 | "column": 26 524 | } 525 | }, 526 | "46": { 527 | "start": { 528 | "line": 52, 529 | "column": 8 530 | }, 531 | "end": { 532 | "line": 52, 533 | "column": 26 534 | } 535 | }, 536 | "47": { 537 | "start": { 538 | "line": 53, 539 | "column": 8 540 | }, 541 | "end": { 542 | "line": 53, 543 | "column": 39 544 | } 545 | }, 546 | "48": { 547 | "start": { 548 | "line": 54, 549 | "column": 8 550 | }, 551 | "end": { 552 | "line": 54, 553 | "column": 39 554 | } 555 | }, 556 | "49": { 557 | "start": { 558 | "line": 55, 559 | "column": 8 560 | }, 561 | "end": { 562 | "line": 55, 563 | "column": 48 564 | } 565 | }, 566 | "50": { 567 | "start": { 568 | "line": 56, 569 | "column": 8 570 | }, 571 | "end": { 572 | "line": 56, 573 | "column": 26 574 | } 575 | }, 576 | "51": { 577 | "start": { 578 | "line": 57, 579 | "column": 8 580 | }, 581 | "end": { 582 | "line": 57, 583 | "column": 26 584 | } 585 | }, 586 | "52": { 587 | "start": { 588 | "line": 58, 589 | "column": 8 590 | }, 591 | "end": { 592 | "line": 58, 593 | "column": 39 594 | } 595 | }, 596 | "53": { 597 | "start": { 598 | "line": 59, 599 | "column": 8 600 | }, 601 | "end": { 602 | "line": 59, 603 | "column": 39 604 | } 605 | }, 606 | "54": { 607 | "start": { 608 | "line": 60, 609 | "column": 8 610 | }, 611 | "end": { 612 | "line": 60, 613 | "column": 36 614 | } 615 | }, 616 | "55": { 617 | "start": { 618 | "line": 61, 619 | "column": 8 620 | }, 621 | "end": { 622 | "line": 61, 623 | "column": 42 624 | } 625 | }, 626 | "56": { 627 | "start": { 628 | "line": 62, 629 | "column": 8 630 | }, 631 | "end": { 632 | "line": 62, 633 | "column": 38 634 | } 635 | }, 636 | "57": { 637 | "start": { 638 | "line": 63, 639 | "column": 8 640 | }, 641 | "end": { 642 | "line": 63, 643 | "column": 26 644 | } 645 | }, 646 | "58": { 647 | "start": { 648 | "line": 64, 649 | "column": 8 650 | }, 651 | "end": { 652 | "line": 64, 653 | "column": 26 654 | } 655 | }, 656 | "59": { 657 | "start": { 658 | "line": 65, 659 | "column": 8 660 | }, 661 | "end": { 662 | "line": 65, 663 | "column": 26 664 | } 665 | }, 666 | "60": { 667 | "start": { 668 | "line": 66, 669 | "column": 8 670 | }, 671 | "end": { 672 | "line": 66, 673 | "column": 26 674 | } 675 | }, 676 | "61": { 677 | "start": { 678 | "line": 67, 679 | "column": 8 680 | }, 681 | "end": { 682 | "line": 67, 683 | "column": 36 684 | } 685 | }, 686 | "62": { 687 | "start": { 688 | "line": 68, 689 | "column": 8 690 | }, 691 | "end": { 692 | "line": 68, 693 | "column": 36 694 | } 695 | }, 696 | "63": { 697 | "start": { 698 | "line": 69, 699 | "column": 8 700 | }, 701 | "end": { 702 | "line": 69, 703 | "column": 26 704 | } 705 | }, 706 | "64": { 707 | "start": { 708 | "line": 70, 709 | "column": 8 710 | }, 711 | "end": { 712 | "line": 70, 713 | "column": 35 714 | } 715 | }, 716 | "65": { 717 | "start": { 718 | "line": 71, 719 | "column": 8 720 | }, 721 | "end": { 722 | "line": 71, 723 | "column": 66 724 | } 725 | }, 726 | "66": { 727 | "start": { 728 | "line": 72, 729 | "column": 8 730 | }, 731 | "end": { 732 | "line": 72, 733 | "column": 26 734 | } 735 | }, 736 | "67": { 737 | "start": { 738 | "line": 73, 739 | "column": 8 740 | }, 741 | "end": { 742 | "line": 73, 743 | "column": 45 744 | } 745 | }, 746 | "68": { 747 | "start": { 748 | "line": 74, 749 | "column": 8 750 | }, 751 | "end": { 752 | "line": 74, 753 | "column": 41 754 | } 755 | }, 756 | "69": { 757 | "start": { 758 | "line": 75, 759 | "column": 8 760 | }, 761 | "end": { 762 | "line": 75, 763 | "column": 40 764 | } 765 | }, 766 | "70": { 767 | "start": { 768 | "line": 76, 769 | "column": 8 770 | }, 771 | "end": { 772 | "line": 76, 773 | "column": 26 774 | } 775 | }, 776 | "71": { 777 | "start": { 778 | "line": 77, 779 | "column": 8 780 | }, 781 | "end": { 782 | "line": 77, 783 | "column": 37 784 | } 785 | }, 786 | "72": { 787 | "start": { 788 | "line": 78, 789 | "column": 8 790 | }, 791 | "end": { 792 | "line": 78, 793 | "column": 138 794 | } 795 | }, 796 | "73": { 797 | "start": { 798 | "line": 79, 799 | "column": 8 800 | }, 801 | "end": { 802 | "line": 79, 803 | "column": 26 804 | } 805 | }, 806 | "74": { 807 | "start": { 808 | "line": 80, 809 | "column": 8 810 | }, 811 | "end": { 812 | "line": 80, 813 | "column": 26 814 | } 815 | }, 816 | "75": { 817 | "start": { 818 | "line": 81, 819 | "column": 8 820 | }, 821 | "end": { 822 | "line": 81, 823 | "column": 41 824 | } 825 | }, 826 | "76": { 827 | "start": { 828 | "line": 82, 829 | "column": 8 830 | }, 831 | "end": { 832 | "line": 82, 833 | "column": 41 834 | } 835 | }, 836 | "77": { 837 | "start": { 838 | "line": 83, 839 | "column": 8 840 | }, 841 | "end": { 842 | "line": 83, 843 | "column": 47 844 | } 845 | }, 846 | "78": { 847 | "start": { 848 | "line": 84, 849 | "column": 8 850 | }, 851 | "end": { 852 | "line": 84, 853 | "column": 26 854 | } 855 | }, 856 | "79": { 857 | "start": { 858 | "line": 85, 859 | "column": 8 860 | }, 861 | "end": { 862 | "line": 85, 863 | "column": 37 864 | } 865 | }, 866 | "80": { 867 | "start": { 868 | "line": 86, 869 | "column": 8 870 | }, 871 | "end": { 872 | "line": 86, 873 | "column": 38 874 | } 875 | }, 876 | "81": { 877 | "start": { 878 | "line": 87, 879 | "column": 8 880 | }, 881 | "end": { 882 | "line": 87, 883 | "column": 26 884 | } 885 | }, 886 | "82": { 887 | "start": { 888 | "line": 88, 889 | "column": 8 890 | }, 891 | "end": { 892 | "line": 88, 893 | "column": 26 894 | } 895 | }, 896 | "83": { 897 | "start": { 898 | "line": 89, 899 | "column": 8 900 | }, 901 | "end": { 902 | "line": 89, 903 | "column": 41 904 | } 905 | }, 906 | "84": { 907 | "start": { 908 | "line": 90, 909 | "column": 8 910 | }, 911 | "end": { 912 | "line": 90, 913 | "column": 41 914 | } 915 | }, 916 | "85": { 917 | "start": { 918 | "line": 91, 919 | "column": 8 920 | }, 921 | "end": { 922 | "line": 91, 923 | "column": 47 924 | } 925 | }, 926 | "86": { 927 | "start": { 928 | "line": 92, 929 | "column": 8 930 | }, 931 | "end": { 932 | "line": 92, 933 | "column": 26 934 | } 935 | }, 936 | "87": { 937 | "start": { 938 | "line": 93, 939 | "column": 8 940 | }, 941 | "end": { 942 | "line": 93, 943 | "column": 37 944 | } 945 | }, 946 | "88": { 947 | "start": { 948 | "line": 94, 949 | "column": 8 950 | }, 951 | "end": { 952 | "line": 94, 953 | "column": 197 954 | } 955 | }, 956 | "89": { 957 | "start": { 958 | "line": 95, 959 | "column": 8 960 | }, 961 | "end": { 962 | "line": 95, 963 | "column": 26 964 | } 965 | }, 966 | "90": { 967 | "start": { 968 | "line": 96, 969 | "column": 8 970 | }, 971 | "end": { 972 | "line": 96, 973 | "column": 26 974 | } 975 | }, 976 | "91": { 977 | "start": { 978 | "line": 97, 979 | "column": 8 980 | }, 981 | "end": { 982 | "line": 97, 983 | "column": 26 984 | } 985 | }, 986 | "92": { 987 | "start": { 988 | "line": 98, 989 | "column": 6 990 | }, 991 | "end": { 992 | "line": 101, 993 | "column": 5 994 | } 995 | }, 996 | "93": { 997 | "start": { 998 | "line": 99, 999 | "column": 8 1000 | }, 1001 | "end": { 1002 | "line": 99, 1003 | "column": 24 1004 | } 1005 | }, 1006 | "94": { 1007 | "start": { 1008 | "line": 100, 1009 | "column": 8 1010 | }, 1011 | "end": { 1012 | "line": 100, 1013 | "column": 61 1014 | } 1015 | }, 1016 | "95": { 1017 | "start": { 1018 | "line": 102, 1019 | "column": 14 1020 | }, 1021 | "end": { 1022 | "line": 109, 1023 | "column": 26 1024 | } 1025 | }, 1026 | "96": { 1027 | "start": { 1028 | "line": 102, 1029 | "column": 29 1030 | }, 1031 | "end": { 1032 | "line": 109, 1033 | "column": 20 1034 | } 1035 | } 1036 | }, 1037 | "fnMap": { 1038 | "0": { 1039 | "name": "(anonymous_0)", 1040 | "decl": { 1041 | "start": { 1042 | "line": 5, 1043 | "column": 4 1044 | }, 1045 | "end": { 1046 | "line": 5, 1047 | "column": 5 1048 | } 1049 | }, 1050 | "loc": { 1051 | "start": { 1052 | "line": 5, 1053 | "column": 18 1054 | }, 1055 | "end": { 1056 | "line": 7, 1057 | "column": 5 1058 | } 1059 | }, 1060 | "line": 5 1061 | }, 1062 | "1": { 1063 | "name": "AppComponent_Factory", 1064 | "decl": { 1065 | "start": { 1066 | "line": 9, 1067 | "column": 29 1068 | }, 1069 | "end": { 1070 | "line": 9, 1071 | "column": 49 1072 | } 1073 | }, 1074 | "loc": { 1075 | "start": { 1076 | "line": 9, 1077 | "column": 53 1078 | }, 1079 | "end": { 1080 | "line": 9, 1081 | "column": 90 1082 | } 1083 | }, 1084 | "line": 9 1085 | }, 1086 | "2": { 1087 | "name": "AppComponent_Template", 1088 | "decl": { 1089 | "start": { 1090 | "line": 10, 1091 | "column": 1177 1092 | }, 1093 | "end": { 1094 | "line": 10, 1095 | "column": 1198 1096 | } 1097 | }, 1098 | "loc": { 1099 | "start": { 1100 | "line": 10, 1101 | "column": 1208 1102 | }, 1103 | "end": { 1104 | "line": 101, 1105 | "column": 7 1106 | } 1107 | }, 1108 | "line": 10 1109 | }, 1110 | "3": { 1111 | "name": "(anonymous_3)", 1112 | "decl": { 1113 | "start": { 1114 | "line": 102, 1115 | "column": 15 1116 | }, 1117 | "end": { 1118 | "line": 102, 1119 | "column": 16 1120 | } 1121 | }, 1122 | "loc": { 1123 | "start": { 1124 | "line": 102, 1125 | "column": 27 1126 | }, 1127 | "end": { 1128 | "line": 109, 1129 | "column": 22 1130 | } 1131 | }, 1132 | "line": 102 1133 | } 1134 | }, 1135 | "branchMap": { 1136 | "0": { 1137 | "loc": { 1138 | "start": { 1139 | "line": 9, 1140 | "column": 67 1141 | }, 1142 | "end": { 1143 | "line": 9, 1144 | "column": 84 1145 | } 1146 | }, 1147 | "type": "binary-expr", 1148 | "locations": [ 1149 | { 1150 | "start": { 1151 | "line": 9, 1152 | "column": 67 1153 | }, 1154 | "end": { 1155 | "line": 9, 1156 | "column": 68 1157 | } 1158 | }, 1159 | { 1160 | "start": { 1161 | "line": 9, 1162 | "column": 72 1163 | }, 1164 | "end": { 1165 | "line": 9, 1166 | "column": 84 1167 | } 1168 | } 1169 | ], 1170 | "line": 9 1171 | }, 1172 | "1": { 1173 | "loc": { 1174 | "start": { 1175 | "line": 10, 1176 | "column": 1210 1177 | }, 1178 | "end": { 1179 | "line": 98, 1180 | "column": 5 1181 | } 1182 | }, 1183 | "type": "if", 1184 | "locations": [ 1185 | { 1186 | "start": { 1187 | "line": 10, 1188 | "column": 1210 1189 | }, 1190 | "end": { 1191 | "line": 98, 1192 | "column": 5 1193 | } 1194 | }, 1195 | { 1196 | "start": { 1197 | "line": 10, 1198 | "column": 1210 1199 | }, 1200 | "end": { 1201 | "line": 98, 1202 | "column": 5 1203 | } 1204 | } 1205 | ], 1206 | "line": 10 1207 | }, 1208 | "2": { 1209 | "loc": { 1210 | "start": { 1211 | "line": 98, 1212 | "column": 6 1213 | }, 1214 | "end": { 1215 | "line": 101, 1216 | "column": 5 1217 | } 1218 | }, 1219 | "type": "if", 1220 | "locations": [ 1221 | { 1222 | "start": { 1223 | "line": 98, 1224 | "column": 6 1225 | }, 1226 | "end": { 1227 | "line": 101, 1228 | "column": 5 1229 | } 1230 | }, 1231 | { 1232 | "start": { 1233 | "line": 98, 1234 | "column": 6 1235 | }, 1236 | "end": { 1237 | "line": 101, 1238 | "column": 5 1239 | } 1240 | } 1241 | ], 1242 | "line": 98 1243 | } 1244 | }, 1245 | "s": { 1246 | "0": 4, 1247 | "1": 4, 1248 | "2": 4, 1249 | "3": 4, 1250 | "4": 20, 1251 | "5": 4, 1252 | "6": 4, 1253 | "7": 4, 1254 | "8": 4, 1255 | "9": 4, 1256 | "10": 4, 1257 | "11": 4, 1258 | "12": 4, 1259 | "13": 4, 1260 | "14": 4, 1261 | "15": 4, 1262 | "16": 4, 1263 | "17": 4, 1264 | "18": 4, 1265 | "19": 4, 1266 | "20": 4, 1267 | "21": 4, 1268 | "22": 4, 1269 | "23": 4, 1270 | "24": 4, 1271 | "25": 4, 1272 | "26": 4, 1273 | "27": 4, 1274 | "28": 4, 1275 | "29": 4, 1276 | "30": 4, 1277 | "31": 4, 1278 | "32": 4, 1279 | "33": 4, 1280 | "34": 4, 1281 | "35": 4, 1282 | "36": 4, 1283 | "37": 4, 1284 | "38": 4, 1285 | "39": 4, 1286 | "40": 4, 1287 | "41": 4, 1288 | "42": 4, 1289 | "43": 4, 1290 | "44": 4, 1291 | "45": 4, 1292 | "46": 4, 1293 | "47": 4, 1294 | "48": 4, 1295 | "49": 4, 1296 | "50": 4, 1297 | "51": 4, 1298 | "52": 4, 1299 | "53": 4, 1300 | "54": 4, 1301 | "55": 4, 1302 | "56": 4, 1303 | "57": 4, 1304 | "58": 4, 1305 | "59": 4, 1306 | "60": 4, 1307 | "61": 4, 1308 | "62": 4, 1309 | "63": 4, 1310 | "64": 4, 1311 | "65": 4, 1312 | "66": 4, 1313 | "67": 4, 1314 | "68": 4, 1315 | "69": 4, 1316 | "70": 4, 1317 | "71": 4, 1318 | "72": 4, 1319 | "73": 4, 1320 | "74": 4, 1321 | "75": 4, 1322 | "76": 4, 1323 | "77": 4, 1324 | "78": 4, 1325 | "79": 4, 1326 | "80": 4, 1327 | "81": 4, 1328 | "82": 4, 1329 | "83": 4, 1330 | "84": 4, 1331 | "85": 4, 1332 | "86": 4, 1333 | "87": 4, 1334 | "88": 4, 1335 | "89": 4, 1336 | "90": 4, 1337 | "91": 4, 1338 | "92": 20, 1339 | "93": 16, 1340 | "94": 16, 1341 | "95": 4, 1342 | "96": 4 1343 | }, 1344 | "f": { 1345 | "0": 4, 1346 | "1": 4, 1347 | "2": 20, 1348 | "3": 4 1349 | }, 1350 | "b": { 1351 | "0": [ 1352 | 4, 1353 | 4 1354 | ], 1355 | "1": [ 1356 | 4, 1357 | 16 1358 | ], 1359 | "2": [ 1360 | 16, 1361 | 4 1362 | ] 1363 | }, 1364 | "inputSourceMap": { 1365 | "version": 3, 1366 | "file": "app.component.js", 1367 | "sourceRoot": "", 1368 | "sources": [ 1369 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.component.ts", 1370 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.component.html" 1371 | ], 1372 | "names": [], 1373 | "mappings": "AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;;AAO1C,MAAM,OAAO,YAAY;IALzB;QAME,UAAK,GAAG,SAAS,CAAC;KACnB;;wEAFY,YAAY;iDAAZ,YAAY;QCPzB,4BAAuB;QAEvB,iCACE;QAAA,yBAKA;QAAA,0BAAI;QAAA,YAAuB;QAAA,iBAAK;QAClC,iBAAS;QACT,4BACE;QAAA,0BAAI;QAAA,iCAAqB;QAAA,iBAAK;QAC9B,yBACE;QAAA,qEACF;QAAA,iBAAI;QACJ,+BACE;QAAA,6BAKE;QAAA,yDACA;QAAA,+BACE;QAAA,mBAOE;QAPF,+BAOE;QAAA,2BACA;QAAA,2BAGF;QAAA,iBAAM;QACN,uBACF;QAAA,iBAAM;QACR,iBAAI;QACN,iBAAM;QACN,oBACE;QADF,0BACE;QAAA,+DACF;QAAA,iBAAI;QACJ,8BACE;QAAA,8BACE;QAAA,8BAIE;QAAA,kCACF;QAAA,iBAAI;QACN,iBAAK;QACL,8BACE;QAAA,8BAIE;QAAA,oCACF;QAAA,iBAAI;QACN,iBAAK;QACL,8BACE;QAAA,8BAIE;QAAA,uCACF;QAAA,iBAAI;QACN,iBAAK;QACL,8BACE;QAAA,8BACE;QAAA,2BAKA;QAAA,iCAA0B;QAAA,6BAAY;QAAA,iBAAO;QAC/C,iBAAI;QACN,iBAAK;QACP,iBAAK;QACL,2BAAI;QAAA,2BAAU;QAAA,iBAAK;QACnB,0BAAG;QAAA,yDAAwC;QAAA,iBAAI;QAC/C,oCACE;QAAA,gCAAS;QAAA,+BAAc;QAAA,iBAAU;QACjC,4BACJ;QAAA,iIAI6C;QAAA,iBACxC;QACH,iBAAU;QACV,gCACE;QAAA,gCAAS;QAAA,sCAAqB;QAAA,iBAAU;QACxC,4BAAK;QAAA,6BAAY;QAAA,iBAAM;QACzB,iBAAU;QACV,gCACE;QAAA,gCAAS;QAAA,sCAAqB;QAAA,iBAAU;QACxC,4BACJ;QAAA,4LAQA;QAAA,iBACK;QACH,iBAAU;QACZ,iBAAO;;QApGD,eAAuB;QAAvB,oDAAuB;;kDDDhB,YAAY;cALxB,SAAS;eAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,WAAW,EAAE,sBAAsB;gBACnC,SAAS,EAAE,CAAC,qBAAqB,CAAC;aACnC", 1374 | "sourcesContent": [ 1375 | "import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'coverage-workspace-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'cov-app';\r\n}\r\n", 1376 | "\r\n\r\n
\r\n \r\n

Welcome to {{ title }}!

\r\n
\r\n
\r\n

Resources & Tools

\r\n

\r\n Thank you for using and showing some ♥ for Nx.\r\n

\r\n
\r\n \r\n If you like Nx, please give it a star:\r\n
\r\n \r\n \r\n \r\n \r\n Star\r\n
\r\n \r\n
\r\n

\r\n Here are some links to help you get started.\r\n

\r\n \r\n

Next Steps

\r\n

Here are some things you can do with Nx.

\r\n
\r\n Add UI library\r\n
\r\n# Generate UI lib\r\nng g @nrwl/angular:lib ui\r\n\r\n# Add a component\r\nng g @nrwl/angular:component xyz --project ui\r\n  
\r\n
\r\n View dependency graph\r\n
nx dep-graph
\r\n
\r\n
\r\n Run affected commands\r\n
\r\n# see what's been affected by changes\r\nng affected:dep-graph\r\n\r\n# run tests for current changes\r\nng affected:test\r\n\r\n# run e2e tests for current changes\r\nng affected:e2e\r\n\r\n  
\r\n
\r\n" 1377 | ] 1378 | }, 1379 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 1380 | "hash": "97606225e327dec8bd2f2be34b2d1fee2300896c" 1381 | }, 1382 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.module.ts": { 1383 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.module.ts", 1384 | "statementMap": { 1385 | "0": { 1386 | "start": { 1387 | "line": 8, 1388 | "column": 0 1389 | }, 1390 | "end": { 1391 | "line": 8, 1392 | "column": 85 1393 | } 1394 | }, 1395 | "1": { 1396 | "start": { 1397 | "line": 9, 1398 | "column": 0 1399 | }, 1400 | "end": { 1401 | "line": 9, 1402 | "column": 172 1403 | } 1404 | }, 1405 | "2": { 1406 | "start": { 1407 | "line": 9, 1408 | "column": 80 1409 | }, 1410 | "end": { 1411 | "line": 9, 1412 | "column": 110 1413 | } 1414 | }, 1415 | "3": { 1416 | "start": { 1417 | "line": 10, 1418 | "column": 0 1419 | }, 1420 | "end": { 1421 | "line": 10, 1422 | "column": 178 1423 | } 1424 | }, 1425 | "4": { 1426 | "start": { 1427 | "line": 10, 1428 | "column": 15 1429 | }, 1430 | "end": { 1431 | "line": 10, 1432 | "column": 172 1433 | } 1434 | }, 1435 | "5": { 1436 | "start": { 1437 | "line": 11, 1438 | "column": 14 1439 | }, 1440 | "end": { 1441 | "line": 19, 1442 | "column": 26 1443 | } 1444 | }, 1445 | "6": { 1446 | "start": { 1447 | "line": 11, 1448 | "column": 29 1449 | }, 1450 | "end": { 1451 | "line": 19, 1452 | "column": 20 1453 | } 1454 | } 1455 | }, 1456 | "fnMap": { 1457 | "0": { 1458 | "name": "AppModule_Factory", 1459 | "decl": { 1460 | "start": { 1461 | "line": 9, 1462 | "column": 57 1463 | }, 1464 | "end": { 1465 | "line": 9, 1466 | "column": 74 1467 | } 1468 | }, 1469 | "loc": { 1470 | "start": { 1471 | "line": 9, 1472 | "column": 78 1473 | }, 1474 | "end": { 1475 | "line": 9, 1476 | "column": 112 1477 | } 1478 | }, 1479 | "line": 9 1480 | }, 1481 | "1": { 1482 | "name": "(anonymous_1)", 1483 | "decl": { 1484 | "start": { 1485 | "line": 10, 1486 | "column": 1 1487 | }, 1488 | "end": { 1489 | "line": 10, 1490 | "column": 2 1491 | } 1492 | }, 1493 | "loc": { 1494 | "start": { 1495 | "line": 10, 1496 | "column": 13 1497 | }, 1498 | "end": { 1499 | "line": 10, 1500 | "column": 174 1501 | } 1502 | }, 1503 | "line": 10 1504 | }, 1505 | "2": { 1506 | "name": "(anonymous_2)", 1507 | "decl": { 1508 | "start": { 1509 | "line": 11, 1510 | "column": 15 1511 | }, 1512 | "end": { 1513 | "line": 11, 1514 | "column": 16 1515 | } 1516 | }, 1517 | "loc": { 1518 | "start": { 1519 | "line": 11, 1520 | "column": 27 1521 | }, 1522 | "end": { 1523 | "line": 19, 1524 | "column": 22 1525 | } 1526 | }, 1527 | "line": 11 1528 | } 1529 | }, 1530 | "branchMap": { 1531 | "0": { 1532 | "loc": { 1533 | "start": { 1534 | "line": 9, 1535 | "column": 92 1536 | }, 1537 | "end": { 1538 | "line": 9, 1539 | "column": 106 1540 | } 1541 | }, 1542 | "type": "binary-expr", 1543 | "locations": [ 1544 | { 1545 | "start": { 1546 | "line": 9, 1547 | "column": 92 1548 | }, 1549 | "end": { 1550 | "line": 9, 1551 | "column": 93 1552 | } 1553 | }, 1554 | { 1555 | "start": { 1556 | "line": 9, 1557 | "column": 97 1558 | }, 1559 | "end": { 1560 | "line": 9, 1561 | "column": 106 1562 | } 1563 | } 1564 | ], 1565 | "line": 9 1566 | }, 1567 | "1": { 1568 | "loc": { 1569 | "start": { 1570 | "line": 10, 1571 | "column": 15 1572 | }, 1573 | "end": { 1574 | "line": 10, 1575 | "column": 171 1576 | } 1577 | }, 1578 | "type": "binary-expr", 1579 | "locations": [ 1580 | { 1581 | "start": { 1582 | "line": 10, 1583 | "column": 16 1584 | }, 1585 | "end": { 1586 | "line": 10, 1587 | "column": 48 1588 | } 1589 | }, 1590 | { 1591 | "start": { 1592 | "line": 10, 1593 | "column": 52 1594 | }, 1595 | "end": { 1596 | "line": 10, 1597 | "column": 61 1598 | } 1599 | }, 1600 | { 1601 | "start": { 1602 | "line": 10, 1603 | "column": 66 1604 | }, 1605 | "end": { 1606 | "line": 10, 1607 | "column": 171 1608 | } 1609 | } 1610 | ], 1611 | "line": 10 1612 | } 1613 | }, 1614 | "s": { 1615 | "0": 4, 1616 | "1": 4, 1617 | "2": 4, 1618 | "3": 4, 1619 | "4": 4, 1620 | "5": 4, 1621 | "6": 4 1622 | }, 1623 | "f": { 1624 | "0": 4, 1625 | "1": 4, 1626 | "2": 4 1627 | }, 1628 | "b": { 1629 | "0": [ 1630 | 4, 1631 | 4 1632 | ], 1633 | "1": [ 1634 | 4, 1635 | 0, 1636 | 4 1637 | ] 1638 | }, 1639 | "inputSourceMap": { 1640 | "version": 3, 1641 | "file": "app.module.js", 1642 | "sourceRoot": "", 1643 | "sources": [ 1644 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\app\\app.module.ts" 1645 | ], 1646 | "names": [], 1647 | "mappings": "AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;;AAQxD,MAAM,OAAO,SAAS;;6CAAT,SAAS,cAFR,YAAY;iGAEb,SAAS,mBAHT,EAAE,YADJ,CAAC,aAAa,EAAE,WAAW,CAAC;wFAI1B,SAAS,mBALL,YAAY,aACjB,aAAa,EAAE,WAAW;kDAIzB,SAAS;cANrB,QAAQ;eAAC;gBACR,YAAY,EAAE,CAAC,YAAY,CAAC;gBAC5B,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;gBACrC,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,CAAC,YAAY,CAAC;aAC1B", 1648 | "sourcesContent": [ 1649 | "import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { UiLibModule } from '@coverage-workspace/ui-lib'\r\n\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [BrowserModule, UiLibModule],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {}\r\n" 1650 | ] 1651 | }, 1652 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 1653 | "hash": "89eca7a41a69091b88df57d8ddc14cc54fe0ea51" 1654 | }, 1655 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\main.ts": { 1656 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\main.ts", 1657 | "statementMap": { 1658 | "0": { 1659 | "start": { 1660 | "line": 5, 1661 | "column": 0 1662 | }, 1663 | "end": { 1664 | "line": 7, 1665 | "column": 1 1666 | } 1667 | }, 1668 | "1": { 1669 | "start": { 1670 | "line": 6, 1671 | "column": 4 1672 | }, 1673 | "end": { 1674 | "line": 6, 1675 | "column": 21 1676 | } 1677 | }, 1678 | "2": { 1679 | "start": { 1680 | "line": 8, 1681 | "column": 0 1682 | }, 1683 | "end": { 1684 | "line": 9, 1685 | "column": 38 1686 | } 1687 | }, 1688 | "3": { 1689 | "start": { 1690 | "line": 9, 1691 | "column": 18 1692 | }, 1693 | "end": { 1694 | "line": 9, 1695 | "column": 36 1696 | } 1697 | } 1698 | }, 1699 | "fnMap": { 1700 | "0": { 1701 | "name": "(anonymous_0)", 1702 | "decl": { 1703 | "start": { 1704 | "line": 9, 1705 | "column": 11 1706 | }, 1707 | "end": { 1708 | "line": 9, 1709 | "column": 12 1710 | } 1711 | }, 1712 | "loc": { 1713 | "start": { 1714 | "line": 9, 1715 | "column": 18 1716 | }, 1717 | "end": { 1718 | "line": 9, 1719 | "column": 36 1720 | } 1721 | }, 1722 | "line": 9 1723 | } 1724 | }, 1725 | "branchMap": { 1726 | "0": { 1727 | "loc": { 1728 | "start": { 1729 | "line": 5, 1730 | "column": 0 1731 | }, 1732 | "end": { 1733 | "line": 7, 1734 | "column": 1 1735 | } 1736 | }, 1737 | "type": "if", 1738 | "locations": [ 1739 | { 1740 | "start": { 1741 | "line": 5, 1742 | "column": 0 1743 | }, 1744 | "end": { 1745 | "line": 7, 1746 | "column": 1 1747 | } 1748 | }, 1749 | { 1750 | "start": { 1751 | "line": 5, 1752 | "column": 0 1753 | }, 1754 | "end": { 1755 | "line": 7, 1756 | "column": 1 1757 | } 1758 | } 1759 | ], 1760 | "line": 5 1761 | } 1762 | }, 1763 | "s": { 1764 | "0": 4, 1765 | "1": 0, 1766 | "2": 4, 1767 | "3": 0 1768 | }, 1769 | "f": { 1770 | "0": 0 1771 | }, 1772 | "b": { 1773 | "0": [ 1774 | 0, 1775 | 4 1776 | ] 1777 | }, 1778 | "inputSourceMap": { 1779 | "version": 3, 1780 | "file": "main.js", 1781 | "sourceRoot": "", 1782 | "sources": [ 1783 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\apps\\cov-app\\src\\main.ts" 1784 | ], 1785 | "names": [], 1786 | "mappings": "AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;;;AAEzD,IAAI,WAAW,CAAC,UAAU,EAAE;IAC1B,cAAc,EAAE,CAAC;CAClB;AAED,qCAAwB,gBACN,+BAAW;KAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC", 1787 | "sourcesContent": [ 1788 | "import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n" 1789 | ] 1790 | }, 1791 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 1792 | "hash": "d3fd73ed7a58f04db5c1f427f8d259cd45e9f89f" 1793 | }, 1794 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts": { 1795 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 1796 | "statementMap": { 1797 | "0": { 1798 | "start": { 1799 | "line": 4, 1800 | "column": 47 1801 | }, 1802 | "end": { 1803 | "line": 10, 1804 | "column": 1 1805 | } 1806 | }, 1807 | "1": { 1808 | "start": { 1809 | "line": 5, 1810 | "column": 16 1811 | }, 1812 | "end": { 1813 | "line": 5, 1814 | "column": 37 1815 | } 1816 | }, 1817 | "2": { 1818 | "start": { 1819 | "line": 6, 1820 | "column": 4 1821 | }, 1822 | "end": { 1823 | "line": 6, 1824 | "column": 33 1825 | } 1826 | }, 1827 | "3": { 1828 | "start": { 1829 | "line": 7, 1830 | "column": 4 1831 | }, 1832 | "end": { 1833 | "line": 7, 1834 | "column": 190 1835 | } 1836 | }, 1837 | "4": { 1838 | "start": { 1839 | "line": 7, 1840 | "column": 92 1841 | }, 1842 | "end": { 1843 | "line": 7, 1844 | "column": 114 1845 | } 1846 | }, 1847 | "5": { 1848 | "start": { 1849 | "line": 7, 1850 | "column": 130 1851 | }, 1852 | "end": { 1853 | "line": 7, 1854 | "column": 148 1855 | } 1856 | }, 1857 | "6": { 1858 | "start": { 1859 | "line": 7, 1860 | "column": 150 1861 | }, 1862 | "end": { 1863 | "line": 7, 1864 | "column": 186 1865 | } 1866 | }, 1867 | "7": { 1868 | "start": { 1869 | "line": 8, 1870 | "column": 4 1871 | }, 1872 | "end": { 1873 | "line": 8, 1874 | "column": 31 1875 | } 1876 | }, 1877 | "8": { 1878 | "start": { 1879 | "line": 9, 1880 | "column": 4 1881 | }, 1882 | "end": { 1883 | "line": 9, 1884 | "column": 22 1885 | } 1886 | }, 1887 | "9": { 1888 | "start": { 1889 | "line": 13, 1890 | "column": 8 1891 | }, 1892 | "end": { 1893 | "line": 13, 1894 | "column": 44 1895 | } 1896 | }, 1897 | "10": { 1898 | "start": { 1899 | "line": 14, 1900 | "column": 8 1901 | }, 1902 | "end": { 1903 | "line": 14, 1904 | "column": 48 1905 | } 1906 | }, 1907 | "11": { 1908 | "start": { 1909 | "line": 18, 1910 | "column": 8 1911 | }, 1912 | "end": { 1913 | "line": 18, 1914 | "column": 32 1915 | } 1916 | }, 1917 | "12": { 1918 | "start": { 1919 | "line": 21, 1920 | "column": 8 1921 | }, 1922 | "end": { 1923 | "line": 21, 1924 | "column": 36 1925 | } 1926 | }, 1927 | "13": { 1928 | "start": { 1929 | "line": 24, 1930 | "column": 0 1931 | }, 1932 | "end": { 1933 | "line": 24, 1934 | "column": 94 1935 | } 1936 | }, 1937 | "14": { 1938 | "start": { 1939 | "line": 24, 1940 | "column": 57 1941 | }, 1942 | "end": { 1943 | "line": 24, 1944 | "column": 91 1945 | } 1946 | }, 1947 | "15": { 1948 | "start": { 1949 | "line": 25, 1950 | "column": 0 1951 | }, 1952 | "end": { 1953 | "line": 48, 1954 | "column": 243 1955 | } 1956 | }, 1957 | "16": { 1958 | "start": { 1959 | "line": 25, 1960 | "column": 579 1961 | }, 1962 | "end": { 1963 | "line": 40, 1964 | "column": 5 1965 | } 1966 | }, 1967 | "17": { 1968 | "start": { 1969 | "line": 26, 1970 | "column": 8 1971 | }, 1972 | "end": { 1973 | "line": 26, 1974 | "column": 36 1975 | } 1976 | }, 1977 | "18": { 1978 | "start": { 1979 | "line": 27, 1980 | "column": 8 1981 | }, 1982 | "end": { 1983 | "line": 27, 1984 | "column": 41 1985 | } 1986 | }, 1987 | "19": { 1988 | "start": { 1989 | "line": 28, 1990 | "column": 8 1991 | }, 1992 | "end": { 1993 | "line": 28, 1994 | "column": 36 1995 | } 1996 | }, 1997 | "20": { 1998 | "start": { 1999 | "line": 29, 2000 | "column": 8 2001 | }, 2002 | "end": { 2003 | "line": 29, 2004 | "column": 40 2005 | } 2006 | }, 2007 | "21": { 2008 | "start": { 2009 | "line": 30, 2010 | "column": 8 2011 | }, 2012 | "end": { 2013 | "line": 30, 2014 | "column": 133 2015 | } 2016 | }, 2017 | "22": { 2018 | "start": { 2019 | "line": 30, 2020 | "column": 95 2021 | }, 2022 | "end": { 2023 | "line": 30, 2024 | "column": 129 2025 | } 2026 | }, 2027 | "23": { 2028 | "start": { 2029 | "line": 31, 2030 | "column": 8 2031 | }, 2032 | "end": { 2033 | "line": 31, 2034 | "column": 26 2035 | } 2036 | }, 2037 | "24": { 2038 | "start": { 2039 | "line": 32, 2040 | "column": 8 2041 | }, 2042 | "end": { 2043 | "line": 32, 2044 | "column": 26 2045 | } 2046 | }, 2047 | "25": { 2048 | "start": { 2049 | "line": 33, 2050 | "column": 8 2051 | }, 2052 | "end": { 2053 | "line": 33, 2054 | "column": 39 2055 | } 2056 | }, 2057 | "26": { 2058 | "start": { 2059 | "line": 34, 2060 | "column": 8 2061 | }, 2062 | "end": { 2063 | "line": 34, 2064 | "column": 36 2065 | } 2066 | }, 2067 | "27": { 2068 | "start": { 2069 | "line": 35, 2070 | "column": 8 2071 | }, 2072 | "end": { 2073 | "line": 35, 2074 | "column": 26 2075 | } 2076 | }, 2077 | "28": { 2078 | "start": { 2079 | "line": 36, 2080 | "column": 8 2081 | }, 2082 | "end": { 2083 | "line": 36, 2084 | "column": 39 2085 | } 2086 | }, 2087 | "29": { 2088 | "start": { 2089 | "line": 37, 2090 | "column": 8 2091 | }, 2092 | "end": { 2093 | "line": 37, 2094 | "column": 67 2095 | } 2096 | }, 2097 | "30": { 2098 | "start": { 2099 | "line": 38, 2100 | "column": 8 2101 | }, 2102 | "end": { 2103 | "line": 38, 2104 | "column": 26 2105 | } 2106 | }, 2107 | "31": { 2108 | "start": { 2109 | "line": 39, 2110 | "column": 8 2111 | }, 2112 | "end": { 2113 | "line": 39, 2114 | "column": 26 2115 | } 2116 | }, 2117 | "32": { 2118 | "start": { 2119 | "line": 40, 2120 | "column": 6 2121 | }, 2122 | "end": { 2123 | "line": 48, 2124 | "column": 5 2125 | } 2126 | }, 2127 | "33": { 2128 | "start": { 2129 | "line": 41, 2130 | "column": 8 2131 | }, 2132 | "end": { 2133 | "line": 41, 2134 | "column": 94 2135 | } 2136 | }, 2137 | "34": { 2138 | "start": { 2139 | "line": 42, 2140 | "column": 8 2141 | }, 2142 | "end": { 2143 | "line": 42, 2144 | "column": 24 2145 | } 2146 | }, 2147 | "35": { 2148 | "start": { 2149 | "line": 43, 2150 | "column": 8 2151 | }, 2152 | "end": { 2153 | "line": 43, 2154 | "column": 104 2155 | } 2156 | }, 2157 | "36": { 2158 | "start": { 2159 | "line": 44, 2160 | "column": 8 2161 | }, 2162 | "end": { 2163 | "line": 44, 2164 | "column": 24 2165 | } 2166 | }, 2167 | "37": { 2168 | "start": { 2169 | "line": 45, 2170 | "column": 8 2171 | }, 2172 | "end": { 2173 | "line": 45, 2174 | "column": 73 2175 | } 2176 | }, 2177 | "38": { 2178 | "start": { 2179 | "line": 46, 2180 | "column": 8 2181 | }, 2182 | "end": { 2183 | "line": 46, 2184 | "column": 24 2185 | } 2186 | }, 2187 | "39": { 2188 | "start": { 2189 | "line": 47, 2190 | "column": 8 2191 | }, 2192 | "end": { 2193 | "line": 47, 2194 | "column": 94 2195 | } 2196 | }, 2197 | "40": { 2198 | "start": { 2199 | "line": 49, 2200 | "column": 14 2201 | }, 2202 | "end": { 2203 | "line": 62, 2204 | "column": 20 2205 | } 2206 | }, 2207 | "41": { 2208 | "start": { 2209 | "line": 49, 2210 | "column": 29 2211 | }, 2212 | "end": { 2213 | "line": 62, 2214 | "column": 14 2215 | } 2216 | }, 2217 | "42": { 2218 | "start": { 2219 | "line": 56, 2220 | "column": 22 2221 | }, 2222 | "end": { 2223 | "line": 56, 2224 | "column": 32 2225 | } 2226 | } 2227 | }, 2228 | "fnMap": { 2229 | "0": { 2230 | "name": "TaskComponent_a_7_Template", 2231 | "decl": { 2232 | "start": { 2233 | "line": 4, 2234 | "column": 9 2235 | }, 2236 | "end": { 2237 | "line": 4, 2238 | "column": 35 2239 | } 2240 | }, 2241 | "loc": { 2242 | "start": { 2243 | "line": 4, 2244 | "column": 45 2245 | }, 2246 | "end": { 2247 | "line": 10, 2248 | "column": 3 2249 | } 2250 | }, 2251 | "line": 4 2252 | }, 2253 | "1": { 2254 | "name": "TaskComponent_a_7_Template_a_click_0_listener", 2255 | "decl": { 2256 | "start": { 2257 | "line": 7, 2258 | "column": 36 2259 | }, 2260 | "end": { 2261 | "line": 7, 2262 | "column": 81 2263 | } 2264 | }, 2265 | "loc": { 2266 | "start": { 2267 | "line": 7, 2268 | "column": 90 2269 | }, 2270 | "end": { 2271 | "line": 7, 2272 | "column": 188 2273 | } 2274 | }, 2275 | "line": 7 2276 | }, 2277 | "2": { 2278 | "name": "(anonymous_2)", 2279 | "decl": { 2280 | "start": { 2281 | "line": 12, 2282 | "column": 4 2283 | }, 2284 | "end": { 2285 | "line": 12, 2286 | "column": 5 2287 | } 2288 | }, 2289 | "loc": { 2290 | "start": { 2291 | "line": 12, 2292 | "column": 18 2293 | }, 2294 | "end": { 2295 | "line": 15, 2296 | "column": 5 2297 | } 2298 | }, 2299 | "line": 12 2300 | }, 2301 | "3": { 2302 | "name": "(anonymous_3)", 2303 | "decl": { 2304 | "start": { 2305 | "line": 16, 2306 | "column": 4 2307 | }, 2308 | "end": { 2309 | "line": 16, 2310 | "column": 5 2311 | } 2312 | }, 2313 | "loc": { 2314 | "start": { 2315 | "line": 16, 2316 | "column": 15 2317 | }, 2318 | "end": { 2319 | "line": 16, 2320 | "column": 18 2321 | } 2322 | }, 2323 | "line": 16 2324 | }, 2325 | "4": { 2326 | "name": "(anonymous_4)", 2327 | "decl": { 2328 | "start": { 2329 | "line": 17, 2330 | "column": 4 2331 | }, 2332 | "end": { 2333 | "line": 17, 2334 | "column": 5 2335 | } 2336 | }, 2337 | "loc": { 2338 | "start": { 2339 | "line": 17, 2340 | "column": 14 2341 | }, 2342 | "end": { 2343 | "line": 19, 2344 | "column": 5 2345 | } 2346 | }, 2347 | "line": 17 2348 | }, 2349 | "5": { 2350 | "name": "(anonymous_5)", 2351 | "decl": { 2352 | "start": { 2353 | "line": 20, 2354 | "column": 4 2355 | }, 2356 | "end": { 2357 | "line": 20, 2358 | "column": 5 2359 | } 2360 | }, 2361 | "loc": { 2362 | "start": { 2363 | "line": 20, 2364 | "column": 18 2365 | }, 2366 | "end": { 2367 | "line": 22, 2368 | "column": 5 2369 | } 2370 | }, 2371 | "line": 20 2372 | }, 2373 | "6": { 2374 | "name": "TaskComponent_Factory", 2375 | "decl": { 2376 | "start": { 2377 | "line": 24, 2378 | "column": 30 2379 | }, 2380 | "end": { 2381 | "line": 24, 2382 | "column": 51 2383 | } 2384 | }, 2385 | "loc": { 2386 | "start": { 2387 | "line": 24, 2388 | "column": 55 2389 | }, 2390 | "end": { 2391 | "line": 24, 2392 | "column": 93 2393 | } 2394 | }, 2395 | "line": 24 2396 | }, 2397 | "7": { 2398 | "name": "TaskComponent_Template", 2399 | "decl": { 2400 | "start": { 2401 | "line": 25, 2402 | "column": 545 2403 | }, 2404 | "end": { 2405 | "line": 25, 2406 | "column": 567 2407 | } 2408 | }, 2409 | "loc": { 2410 | "start": { 2411 | "line": 25, 2412 | "column": 577 2413 | }, 2414 | "end": { 2415 | "line": 48, 2416 | "column": 7 2417 | } 2418 | }, 2419 | "line": 25 2420 | }, 2421 | "8": { 2422 | "name": "TaskComponent_Template_span_click_3_listener", 2423 | "decl": { 2424 | "start": { 2425 | "line": 30, 2426 | "column": 40 2427 | }, 2428 | "end": { 2429 | "line": 30, 2430 | "column": 84 2431 | } 2432 | }, 2433 | "loc": { 2434 | "start": { 2435 | "line": 30, 2436 | "column": 93 2437 | }, 2438 | "end": { 2439 | "line": 30, 2440 | "column": 131 2441 | } 2442 | }, 2443 | "line": 30 2444 | }, 2445 | "9": { 2446 | "name": "(anonymous_9)", 2447 | "decl": { 2448 | "start": { 2449 | "line": 49, 2450 | "column": 15 2451 | }, 2452 | "end": { 2453 | "line": 49, 2454 | "column": 16 2455 | } 2456 | }, 2457 | "loc": { 2458 | "start": { 2459 | "line": 49, 2460 | "column": 27 2461 | }, 2462 | "end": { 2463 | "line": 62, 2464 | "column": 16 2465 | } 2466 | }, 2467 | "line": 49 2468 | }, 2469 | "10": { 2470 | "name": "(anonymous_10)", 2471 | "decl": { 2472 | "start": { 2473 | "line": 56, 2474 | "column": 8 2475 | }, 2476 | "end": { 2477 | "line": 56, 2478 | "column": 9 2479 | } 2480 | }, 2481 | "loc": { 2482 | "start": { 2483 | "line": 56, 2484 | "column": 20 2485 | }, 2486 | "end": { 2487 | "line": 56, 2488 | "column": 34 2489 | } 2490 | }, 2491 | "line": 56 2492 | } 2493 | }, 2494 | "branchMap": { 2495 | "0": { 2496 | "loc": { 2497 | "start": { 2498 | "line": 4, 2499 | "column": 47 2500 | }, 2501 | "end": { 2502 | "line": 10, 2503 | "column": 1 2504 | } 2505 | }, 2506 | "type": "if", 2507 | "locations": [ 2508 | { 2509 | "start": { 2510 | "line": 4, 2511 | "column": 47 2512 | }, 2513 | "end": { 2514 | "line": 10, 2515 | "column": 1 2516 | } 2517 | }, 2518 | { 2519 | "start": { 2520 | "line": 4, 2521 | "column": 47 2522 | }, 2523 | "end": { 2524 | "line": 10, 2525 | "column": 1 2526 | } 2527 | } 2528 | ], 2529 | "line": 4 2530 | }, 2531 | "1": { 2532 | "loc": { 2533 | "start": { 2534 | "line": 24, 2535 | "column": 69 2536 | }, 2537 | "end": { 2538 | "line": 24, 2539 | "column": 87 2540 | } 2541 | }, 2542 | "type": "binary-expr", 2543 | "locations": [ 2544 | { 2545 | "start": { 2546 | "line": 24, 2547 | "column": 69 2548 | }, 2549 | "end": { 2550 | "line": 24, 2551 | "column": 70 2552 | } 2553 | }, 2554 | { 2555 | "start": { 2556 | "line": 24, 2557 | "column": 74 2558 | }, 2559 | "end": { 2560 | "line": 24, 2561 | "column": 87 2562 | } 2563 | } 2564 | ], 2565 | "line": 24 2566 | }, 2567 | "2": { 2568 | "loc": { 2569 | "start": { 2570 | "line": 25, 2571 | "column": 579 2572 | }, 2573 | "end": { 2574 | "line": 40, 2575 | "column": 5 2576 | } 2577 | }, 2578 | "type": "if", 2579 | "locations": [ 2580 | { 2581 | "start": { 2582 | "line": 25, 2583 | "column": 579 2584 | }, 2585 | "end": { 2586 | "line": 40, 2587 | "column": 5 2588 | } 2589 | }, 2590 | { 2591 | "start": { 2592 | "line": 25, 2593 | "column": 579 2594 | }, 2595 | "end": { 2596 | "line": 40, 2597 | "column": 5 2598 | } 2599 | } 2600 | ], 2601 | "line": 25 2602 | }, 2603 | "3": { 2604 | "loc": { 2605 | "start": { 2606 | "line": 40, 2607 | "column": 6 2608 | }, 2609 | "end": { 2610 | "line": 48, 2611 | "column": 5 2612 | } 2613 | }, 2614 | "type": "if", 2615 | "locations": [ 2616 | { 2617 | "start": { 2618 | "line": 40, 2619 | "column": 6 2620 | }, 2621 | "end": { 2622 | "line": 48, 2623 | "column": 5 2624 | } 2625 | }, 2626 | { 2627 | "start": { 2628 | "line": 40, 2629 | "column": 6 2630 | }, 2631 | "end": { 2632 | "line": 48, 2633 | "column": 5 2634 | } 2635 | } 2636 | ], 2637 | "line": 40 2638 | }, 2639 | "4": { 2640 | "loc": { 2641 | "start": { 2642 | "line": 41, 2643 | "column": 48 2644 | }, 2645 | "end": { 2646 | "line": 41, 2647 | "column": 88 2648 | } 2649 | }, 2650 | "type": "cond-expr", 2651 | "locations": [ 2652 | { 2653 | "start": { 2654 | "line": 41, 2655 | "column": 67 2656 | }, 2657 | "end": { 2658 | "line": 41, 2659 | "column": 71 2660 | } 2661 | }, 2662 | { 2663 | "start": { 2664 | "line": 41, 2665 | "column": 74 2666 | }, 2667 | "end": { 2668 | "line": 41, 2669 | "column": 88 2670 | } 2671 | } 2672 | ], 2673 | "line": 41 2674 | }, 2675 | "5": { 2676 | "loc": { 2677 | "start": { 2678 | "line": 43, 2679 | "column": 41 2680 | }, 2681 | "end": { 2682 | "line": 43, 2683 | "column": 81 2684 | } 2685 | }, 2686 | "type": "cond-expr", 2687 | "locations": [ 2688 | { 2689 | "start": { 2690 | "line": 43, 2691 | "column": 60 2692 | }, 2693 | "end": { 2694 | "line": 43, 2695 | "column": 64 2696 | } 2697 | }, 2698 | { 2699 | "start": { 2700 | "line": 43, 2701 | "column": 67 2702 | }, 2703 | "end": { 2704 | "line": 43, 2705 | "column": 81 2706 | } 2707 | } 2708 | ], 2709 | "line": 43 2710 | }, 2711 | "6": { 2712 | "loc": { 2713 | "start": { 2714 | "line": 45, 2715 | "column": 31 2716 | }, 2717 | "end": { 2718 | "line": 45, 2719 | "column": 71 2720 | } 2721 | }, 2722 | "type": "cond-expr", 2723 | "locations": [ 2724 | { 2725 | "start": { 2726 | "line": 45, 2727 | "column": 50 2728 | }, 2729 | "end": { 2730 | "line": 45, 2731 | "column": 54 2732 | } 2733 | }, 2734 | { 2735 | "start": { 2736 | "line": 45, 2737 | "column": 57 2738 | }, 2739 | "end": { 2740 | "line": 45, 2741 | "column": 71 2742 | } 2743 | } 2744 | ], 2745 | "line": 45 2746 | }, 2747 | "7": { 2748 | "loc": { 2749 | "start": { 2750 | "line": 47, 2751 | "column": 31 2752 | }, 2753 | "end": { 2754 | "line": 47, 2755 | "column": 71 2756 | } 2757 | }, 2758 | "type": "cond-expr", 2759 | "locations": [ 2760 | { 2761 | "start": { 2762 | "line": 47, 2763 | "column": 50 2764 | }, 2765 | "end": { 2766 | "line": 47, 2767 | "column": 54 2768 | } 2769 | }, 2770 | { 2771 | "start": { 2772 | "line": 47, 2773 | "column": 57 2774 | }, 2775 | "end": { 2776 | "line": 47, 2777 | "column": 71 2778 | } 2779 | } 2780 | ], 2781 | "line": 47 2782 | } 2783 | }, 2784 | "s": { 2785 | "0": 10, 2786 | "1": 2, 2787 | "2": 2, 2788 | "3": 2, 2789 | "4": 0, 2790 | "5": 0, 2791 | "6": 0, 2792 | "7": 2, 2793 | "8": 2, 2794 | "9": 2, 2795 | "10": 2, 2796 | "11": 0, 2797 | "12": 0, 2798 | "13": 2, 2799 | "14": 2, 2800 | "15": 2, 2801 | "16": 10, 2802 | "17": 2, 2803 | "18": 2, 2804 | "19": 2, 2805 | "20": 2, 2806 | "21": 2, 2807 | "22": 0, 2808 | "23": 2, 2809 | "24": 2, 2810 | "25": 2, 2811 | "26": 2, 2812 | "27": 2, 2813 | "28": 2, 2814 | "29": 2, 2815 | "30": 2, 2816 | "31": 2, 2817 | "32": 10, 2818 | "33": 8, 2819 | "34": 8, 2820 | "35": 8, 2821 | "36": 8, 2822 | "37": 8, 2823 | "38": 8, 2824 | "39": 8, 2825 | "40": 2, 2826 | "41": 2, 2827 | "42": 0 2828 | }, 2829 | "f": { 2830 | "0": 10, 2831 | "1": 0, 2832 | "2": 2, 2833 | "3": 2, 2834 | "4": 0, 2835 | "5": 0, 2836 | "6": 2, 2837 | "7": 10, 2838 | "8": 0, 2839 | "9": 2, 2840 | "10": 0 2841 | }, 2842 | "b": { 2843 | "0": [ 2844 | 2, 2845 | 8 2846 | ], 2847 | "1": [ 2848 | 2, 2849 | 2 2850 | ], 2851 | "2": [ 2852 | 2, 2853 | 8 2854 | ], 2855 | "3": [ 2856 | 8, 2857 | 2 2858 | ], 2859 | "4": [ 2860 | 8, 2861 | 0 2862 | ], 2863 | "5": [ 2864 | 8, 2865 | 0 2866 | ], 2867 | "6": [ 2868 | 8, 2869 | 0 2870 | ], 2871 | "7": [ 2872 | 8, 2873 | 0 2874 | ] 2875 | }, 2876 | "inputSourceMap": { 2877 | "version": 3, 2878 | "file": "task.component.js", 2879 | "sourceRoot": "", 2880 | "sources": [ 2881 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 2882 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.html" 2883 | ], 2884 | "names": [], 2885 | "mappings": "AAAA,OAAO,EAAC,SAAS,EAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;;ICexE,4BACE;IADyC,yLAAwB;IACjE,0BAA2C;IAC7C,iBAAI;;ADVV,MAAM,OAAO,aAAa;IAOxB;QAHU,cAAS,GAAsB,IAAI,YAAY,EAAE,CAAC;QAClD,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;IAEjD,CAAC;IAEhB,QAAQ,KAAI,CAAC;IAEb,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;;0EAjBU,aAAa;kDAAb,aAAa;QCP1B,2BACI;QAAA,gCACE;QAAA,2BAMA;QAAA,+BAAkE;QAApC,8FAAS,0BAAkB,IAAC;QAAC,iBAAO;QACpE,iBAAQ;QACR,8BACE;QAAA,2BACF;QAAA,iBAAM;QAEN,8BACE;QAAA,0DACE;QAEJ,iBAAM;QACR,iBAAM;;QAnBH,qFAAmC;QAKhC,eAAkD;QAAlD,+FAAkD;QAMpB,eAAqB;QAArB,gEAAqB;QAIlD,eAAuC;QAAvC,qFAAuC;;kDDRnC,aAAa;cALzB,SAAS;eAAC;gBACT,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,CAAC,sBAAsB,CAAC;aACpC;;kBAIE,KAAK;;kBACL,MAAM;;kBACN,MAAM", 2886 | "sourcesContent": [ 2887 | "import {Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'task-item',\r\n templateUrl: './task.component.html',\r\n styleUrls: ['./task.component.css']\r\n})\r\nexport class TaskComponent implements OnInit {\r\n\r\n title: string;\r\n @Input() task: any;\r\n @Output() onPinTask: EventEmitter = new EventEmitter();\r\n @Output() onArchiveTask: EventEmitter = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n onPin(id) {\r\n this.onPinTask.emit(id);\r\n }\r\n\r\n onArchive(id) {\r\n this.onArchiveTask.emit(id);\r\n }\r\n\r\n}\r\n\r\nexport interface Task {\r\n id: string;\r\n title: string;\r\n state: string;\r\n}", 2888 | "
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
" 2889 | ] 2890 | }, 2891 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 2892 | "hash": "cc92679e14ab00f02c2091da318ed0db14060bf4" 2893 | }, 2894 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\ui-lib.module.ts": { 2895 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\ui-lib.module.ts", 2896 | "statementMap": { 2897 | "0": { 2898 | "start": { 2899 | "line": 7, 2900 | "column": 0 2901 | }, 2902 | "end": { 2903 | "line": 7, 2904 | "column": 62 2905 | } 2906 | }, 2907 | "1": { 2908 | "start": { 2909 | "line": 8, 2910 | "column": 0 2911 | }, 2912 | "end": { 2913 | "line": 8, 2914 | "column": 149 2915 | } 2916 | }, 2917 | "2": { 2918 | "start": { 2919 | "line": 8, 2920 | "column": 84 2921 | }, 2922 | "end": { 2923 | "line": 8, 2924 | "column": 116 2925 | } 2926 | }, 2927 | "3": { 2928 | "start": { 2929 | "line": 9, 2930 | "column": 0 2931 | }, 2932 | "end": { 2933 | "line": 9, 2934 | "column": 193 2935 | } 2936 | }, 2937 | "4": { 2938 | "start": { 2939 | "line": 9, 2940 | "column": 15 2941 | }, 2942 | "end": { 2943 | "line": 9, 2944 | "column": 187 2945 | } 2946 | }, 2947 | "5": { 2948 | "start": { 2949 | "line": 10, 2950 | "column": 14 2951 | }, 2952 | "end": { 2953 | "line": 17, 2954 | "column": 26 2955 | } 2956 | }, 2957 | "6": { 2958 | "start": { 2959 | "line": 10, 2960 | "column": 29 2961 | }, 2962 | "end": { 2963 | "line": 17, 2964 | "column": 20 2965 | } 2966 | } 2967 | }, 2968 | "fnMap": { 2969 | "0": { 2970 | "name": "UiLibModule_Factory", 2971 | "decl": { 2972 | "start": { 2973 | "line": 8, 2974 | "column": 59 2975 | }, 2976 | "end": { 2977 | "line": 8, 2978 | "column": 78 2979 | } 2980 | }, 2981 | "loc": { 2982 | "start": { 2983 | "line": 8, 2984 | "column": 82 2985 | }, 2986 | "end": { 2987 | "line": 8, 2988 | "column": 118 2989 | } 2990 | }, 2991 | "line": 8 2992 | }, 2993 | "1": { 2994 | "name": "(anonymous_1)", 2995 | "decl": { 2996 | "start": { 2997 | "line": 9, 2998 | "column": 1 2999 | }, 3000 | "end": { 3001 | "line": 9, 3002 | "column": 2 3003 | } 3004 | }, 3005 | "loc": { 3006 | "start": { 3007 | "line": 9, 3008 | "column": 13 3009 | }, 3010 | "end": { 3011 | "line": 9, 3012 | "column": 189 3013 | } 3014 | }, 3015 | "line": 9 3016 | }, 3017 | "2": { 3018 | "name": "(anonymous_2)", 3019 | "decl": { 3020 | "start": { 3021 | "line": 10, 3022 | "column": 15 3023 | }, 3024 | "end": { 3025 | "line": 10, 3026 | "column": 16 3027 | } 3028 | }, 3029 | "loc": { 3030 | "start": { 3031 | "line": 10, 3032 | "column": 27 3033 | }, 3034 | "end": { 3035 | "line": 17, 3036 | "column": 22 3037 | } 3038 | }, 3039 | "line": 10 3040 | } 3041 | }, 3042 | "branchMap": { 3043 | "0": { 3044 | "loc": { 3045 | "start": { 3046 | "line": 8, 3047 | "column": 96 3048 | }, 3049 | "end": { 3050 | "line": 8, 3051 | "column": 112 3052 | } 3053 | }, 3054 | "type": "binary-expr", 3055 | "locations": [ 3056 | { 3057 | "start": { 3058 | "line": 8, 3059 | "column": 96 3060 | }, 3061 | "end": { 3062 | "line": 8, 3063 | "column": 97 3064 | } 3065 | }, 3066 | { 3067 | "start": { 3068 | "line": 8, 3069 | "column": 101 3070 | }, 3071 | "end": { 3072 | "line": 8, 3073 | "column": 112 3074 | } 3075 | } 3076 | ], 3077 | "line": 8 3078 | }, 3079 | "1": { 3080 | "loc": { 3081 | "start": { 3082 | "line": 9, 3083 | "column": 15 3084 | }, 3085 | "end": { 3086 | "line": 9, 3087 | "column": 186 3088 | } 3089 | }, 3090 | "type": "binary-expr", 3091 | "locations": [ 3092 | { 3093 | "start": { 3094 | "line": 9, 3095 | "column": 16 3096 | }, 3097 | "end": { 3098 | "line": 9, 3099 | "column": 48 3100 | } 3101 | }, 3102 | { 3103 | "start": { 3104 | "line": 9, 3105 | "column": 52 3106 | }, 3107 | "end": { 3108 | "line": 9, 3109 | "column": 61 3110 | } 3111 | }, 3112 | { 3113 | "start": { 3114 | "line": 9, 3115 | "column": 66 3116 | }, 3117 | "end": { 3118 | "line": 9, 3119 | "column": 186 3120 | } 3121 | } 3122 | ], 3123 | "line": 9 3124 | } 3125 | }, 3126 | "s": { 3127 | "0": 2, 3128 | "1": 2, 3129 | "2": 2, 3130 | "3": 2, 3131 | "4": 2, 3132 | "5": 2, 3133 | "6": 2 3134 | }, 3135 | "f": { 3136 | "0": 2, 3137 | "1": 2, 3138 | "2": 2 3139 | }, 3140 | "b": { 3141 | "0": [ 3142 | 2, 3143 | 2 3144 | ], 3145 | "1": [ 3146 | 2, 3147 | 0, 3148 | 2 3149 | ] 3150 | }, 3151 | "inputSourceMap": { 3152 | "version": 3, 3153 | "file": "ui-lib.module.js", 3154 | "sourceRoot": "", 3155 | "sources": [ 3156 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\ui-lib.module.ts" 3157 | ], 3158 | "names": [], 3159 | "mappings": "AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;;AAOtD,MAAM,OAAO,WAAW;;+CAAX,WAAW;qGAAX,WAAW,kBAJb,CAAC,YAAY,CAAC;wFAIZ,WAAW,mBAHP,aAAa,aADlB,YAAY,aAEZ,aAAa;kDAEZ,WAAW;cALvB,QAAQ;eAAC;gBACR,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,YAAY,EAAE,CAAC,aAAa,CAAC;gBAC7B,OAAO,EAAE,CAAC,aAAa,CAAC;aACzB", 3160 | "sourcesContent": [ 3161 | "import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\nimport { TaskComponent } from './task/task.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [TaskComponent],\r\n exports: [TaskComponent]\r\n})\r\nexport class UiLibModule {}\r\n" 3162 | ] 3163 | }, 3164 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 3165 | "hash": "15a94de5c8fcd62d36d3d2bae1bc54da306c779e" 3166 | }, 3167 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\index.ts": { 3168 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\index.ts", 3169 | "statementMap": {}, 3170 | "fnMap": {}, 3171 | "branchMap": {}, 3172 | "s": {}, 3173 | "f": {}, 3174 | "b": {}, 3175 | "inputSourceMap": { 3176 | "version": 3, 3177 | "file": "index.js", 3178 | "sourceRoot": "", 3179 | "sources": [ 3180 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\index.ts" 3181 | ], 3182 | "names": [], 3183 | "mappings": "AAAA,cAAc,qBAAqB,CAAC", 3184 | "sourcesContent": [ 3185 | "export * from './lib/ui-lib.module';\n" 3186 | ] 3187 | }, 3188 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 3189 | "hash": "abee3f595f35ab561a27558469be6ea10c84ce2c" 3190 | } 3191 | } -------------------------------------------------------------------------------- /apps/cov-app-e2e/coverage.webpack.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | module: { 3 | rules: [ 4 | { 5 | test: /\.(js|ts)$/, 6 | loader: 'istanbul-instrumenter-loader', 7 | options: { esModules: true }, 8 | enforce: 'post', 9 | include: [ 10 | require('path').join(__dirname, '..', 'cov-app/src'), 11 | require('path').join(__dirname, '../..', 'libs/ui-lib/src') 12 | ], 13 | exclude: [ 14 | /\.(e2e|spec)\.ts$/, 15 | /node_modules/, 16 | /(ngfactory|ngstyle)\.js/ 17 | ] 18 | } 19 | ] 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/cov-app-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/cov-app-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('cov-app', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to cov-app!'); 12 | }); 13 | 14 | it('should check if task-item is there', () => { 15 | cy.get('task-item').should('exist'); 16 | }) 17 | }); 18 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example plugins/index.js can be used to load plugins 3 | // 4 | // You can change the location of this file or turn off loading 5 | // the plugins file with the 'pluginsFile' configuration option. 6 | // 7 | // You can read more here: 8 | // https://on.cypress.io/plugins-guide 9 | // *********************************************************** 10 | 11 | // This function is called when a project is opened or re-opened (e.g. due to 12 | // the project's config changing) 13 | 14 | const { preprocessTypescript } = require('@nrwl/cypress/plugins/preprocessor'); 15 | 16 | module.exports = (on, config) => { 17 | // `on` is used to hook into various events Cypress emits 18 | // `config` is the resolved Cypress config 19 | 20 | // Preprocess Typescript file using Nx helper 21 | on('file:preprocessor', preprocessTypescript(config)); 22 | 23 | on('task', require('@cypress/code-coverage/task')) 24 | }; 25 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/support/commands.ts: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // eslint-disable-next-line @typescript-eslint/no-namespace 11 | declare namespace Cypress { 12 | interface Chainable { 13 | login(email: string, password: string): void; 14 | } 15 | } 16 | // 17 | // -- This is a parent command -- 18 | Cypress.Commands.add('login', (email, password) => { 19 | console.log('Custom command example: Login', email, password); 20 | }); 21 | // 22 | // -- This is a child command -- 23 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) 24 | // 25 | // 26 | // -- This is a dual command -- 27 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) 28 | // 29 | // 30 | // -- This will overwrite an existing command -- 31 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) 32 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | 19 | import '@cypress/code-coverage/support' -------------------------------------------------------------------------------- /apps/cov-app-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc" 6 | }, 7 | "include": ["src/**/*.ts", "src/**/*.js"] 8 | } 9 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["cypress", "node"] 5 | }, 6 | "include": ["**/*.ts", "**/*.js"] 7 | } 8 | -------------------------------------------------------------------------------- /apps/cov-app-e2e/tslint.json: -------------------------------------------------------------------------------- 1 | { "extends": "../../tslint.json", "rules": {} } 2 | -------------------------------------------------------------------------------- /apps/cov-app/browserslist: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | > 0.5% 9 | last 2 versions 10 | Firefox ESR 11 | not dead 12 | not IE 9-11 # For IE 9-11 support, remove 'not'. -------------------------------------------------------------------------------- /apps/cov-app/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'cov-app', 3 | preset: '../../jest.config.js', 4 | coverageDirectory: '../../coverage/apps/cov-app', 5 | snapshotSerializers: [ 6 | 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', 7 | 'jest-preset-angular/build/AngularSnapshotSerializer.js', 8 | 'jest-preset-angular/build/HTMLCommentSerializer.js' 9 | ] 10 | }; 11 | -------------------------------------------------------------------------------- /apps/cov-app/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Remove template code below 3 | */ 4 | :host { 5 | display: block; 6 | font-family: sans-serif; 7 | min-width: 300px; 8 | max-width: 600px; 9 | margin: 50px auto; 10 | } 11 | 12 | .gutter-left { 13 | margin-left: 9px; 14 | } 15 | 16 | .col-span-2 { 17 | grid-column: span 2; 18 | } 19 | 20 | .flex { 21 | display: flex; 22 | align-items: center; 23 | justify-content: center; 24 | } 25 | 26 | header { 27 | background-color: #143055; 28 | color: white; 29 | padding: 5px; 30 | border-radius: 3px; 31 | } 32 | 33 | main { 34 | padding: 0 36px; 35 | } 36 | 37 | p { 38 | text-align: center; 39 | } 40 | 41 | h1 { 42 | text-align: center; 43 | margin-left: 18px; 44 | font-size: 24px; 45 | } 46 | 47 | h2 { 48 | text-align: center; 49 | font-size: 20px; 50 | margin: 40px 0 10px 0; 51 | } 52 | 53 | .resources { 54 | text-align: center; 55 | list-style: none; 56 | padding: 0; 57 | display: grid; 58 | grid-gap: 9px; 59 | grid-template-columns: 1fr 1fr; 60 | } 61 | 62 | .resource { 63 | color: #0094ba; 64 | height: 36px; 65 | background-color: rgba(0, 0, 0, 0); 66 | border: 1px solid rgba(0, 0, 0, 0.12); 67 | border-radius: 4px; 68 | padding: 3px 9px; 69 | text-decoration: none; 70 | } 71 | 72 | .resource:hover { 73 | background-color: rgba(68, 138, 255, 0.04); 74 | } 75 | 76 | pre { 77 | padding: 9px; 78 | border-radius: 4px; 79 | background-color: black; 80 | color: #eee; 81 | } 82 | 83 | details { 84 | border-radius: 4px; 85 | color: #333; 86 | background-color: rgba(0, 0, 0, 0); 87 | border: 1px solid rgba(0, 0, 0, 0.12); 88 | padding: 3px 9px; 89 | margin-bottom: 9px; 90 | } 91 | 92 | summary { 93 | cursor: pointer; 94 | outline: none; 95 | height: 36px; 96 | line-height: 36px; 97 | } 98 | 99 | .github-star-container { 100 | margin-top: 12px; 101 | line-height: 20px; 102 | } 103 | 104 | .github-star-container a { 105 | display: flex; 106 | align-items: center; 107 | text-decoration: none; 108 | color: #333; 109 | } 110 | 111 | .github-star-badge { 112 | color: #24292e; 113 | display: flex; 114 | align-items: center; 115 | font-size: 12px; 116 | padding: 3px 10px; 117 | border: 1px solid rgba(27, 31, 35, 0.2); 118 | border-radius: 3px; 119 | background-image: linear-gradient(-180deg, #fafbfc, #eff3f6 90%); 120 | margin-left: 4px; 121 | font-weight: 600; 122 | } 123 | 124 | .github-star-badge:hover { 125 | background-image: linear-gradient(-180deg, #f0f3f6, #e6ebf1 90%); 126 | border-color: rgba(27, 31, 35, 0.35); 127 | background-position: -0.5em; 128 | } 129 | .github-star-badge .material-icons { 130 | height: 16px; 131 | width: 16px; 132 | margin-right: 4px; 133 | } 134 | -------------------------------------------------------------------------------- /apps/cov-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | Nx logo 9 |

Welcome to {{ title }}!

10 |
11 |
12 |

Resources & Tools

13 |

14 | Thank you for using and showing some ♥ for Nx. 15 |

16 | 40 |

41 | Here are some links to help you get started. 42 |

43 | 79 |

Next Steps

80 |

Here are some things you can do with Nx.

81 |
82 | Add UI library 83 |
 84 | # Generate UI lib
 85 | ng g @nrwl/angular:lib ui
 86 | 
 87 | # Add a component
 88 | ng g @nrwl/angular:component xyz --project ui
90 |
91 |
92 | View dependency graph 93 |
nx dep-graph
94 |
95 |
96 | Run affected commands 97 |
 98 | # see what's been affected by changes
 99 | ng affected:dep-graph
100 | 
101 | # run tests for current changes
102 | ng affected:test
103 | 
104 | # run e2e tests for current changes
105 | ng affected:e2e
106 | 
108 |
109 |
110 | -------------------------------------------------------------------------------- /apps/cov-app/src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, async } from '@angular/core/testing'; 2 | import { AppComponent } from './app.component'; 3 | 4 | describe('AppComponent', () => { 5 | beforeEach(async(() => { 6 | TestBed.configureTestingModule({ 7 | declarations: [AppComponent] 8 | }).compileComponents(); 9 | })); 10 | 11 | it('should create the app', () => { 12 | const fixture = TestBed.createComponent(AppComponent); 13 | const app = fixture.componentInstance; 14 | expect(app).toBeTruthy(); 15 | }); 16 | 17 | it(`should have as title 'cov-app'`, () => { 18 | const fixture = TestBed.createComponent(AppComponent); 19 | const app = fixture.componentInstance; 20 | expect(app.title).toEqual('cov-app'); 21 | }); 22 | 23 | it('should render title', () => { 24 | const fixture = TestBed.createComponent(AppComponent); 25 | fixture.detectChanges(); 26 | const compiled = fixture.nativeElement; 27 | expect(compiled.querySelector('h1').textContent).toContain( 28 | 'Welcome to cov-app!' 29 | ); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /apps/cov-app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'coverage-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'cov-app'; 10 | } 11 | -------------------------------------------------------------------------------- /apps/cov-app/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | 4 | import { AppComponent } from './app.component'; 5 | import { UiLibModule } from '@coverage-workspace/ui-lib' 6 | 7 | @NgModule({ 8 | declarations: [AppComponent], 9 | imports: [BrowserModule, UiLibModule], 10 | providers: [], 11 | bootstrap: [AppComponent] 12 | }) 13 | export class AppModule {} 14 | -------------------------------------------------------------------------------- /apps/cov-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flaxline/angular-nx-cypress-coverage-example/5b8c42860a6250bab446c897efe672a183e55423/apps/cov-app/src/assets/.gitkeep -------------------------------------------------------------------------------- /apps/cov-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /apps/cov-app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /apps/cov-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flaxline/angular-nx-cypress-coverage-example/5b8c42860a6250bab446c897efe672a183e55423/apps/cov-app/src/favicon.ico -------------------------------------------------------------------------------- /apps/cov-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CovApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/cov-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch(err => console.error(err)); 14 | -------------------------------------------------------------------------------- /apps/cov-app/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/guide/browser-support 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 22 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 23 | 24 | /** 25 | * Web Animations `@angular/platform-browser/animations` 26 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. 27 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). 28 | */ 29 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 30 | 31 | /** 32 | * By default, zone.js will patch all possible macroTask and DomEvents 33 | * user can disable parts of macroTask/DomEvents patch by setting following flags 34 | * because those flags need to be set before `zone.js` being loaded, and webpack 35 | * will put import in the top of bundle, so user need to create a separate file 36 | * in this directory (for example: zone-flags.ts), and put the following flags 37 | * into that file, and then add the following code before importing zone.js. 38 | * import './zone-flags.ts'; 39 | * 40 | * The flags allowed in zone-flags.ts are listed here. 41 | * 42 | * The following flags will work for all browsers. 43 | * 44 | * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 45 | * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 46 | * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 47 | * 48 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 49 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 50 | * 51 | * (window as any).__Zone_enable_cross_context_check = true; 52 | * 53 | */ 54 | 55 | /*************************************************************************************************** 56 | * Zone JS is required by default for Angular itself. 57 | */ 58 | import 'zone.js/dist/zone'; // Included with Angular CLI. 59 | 60 | /*************************************************************************************************** 61 | * APPLICATION IMPORTS 62 | */ 63 | -------------------------------------------------------------------------------- /apps/cov-app/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /apps/cov-app/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular'; 2 | -------------------------------------------------------------------------------- /apps/cov-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /apps/cov-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["node", "jest"] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/cov-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /apps/cov-app/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tslint.json", 3 | "rules": { 4 | "directive-selector": [true, "attribute", "coverageWorkspace", "camelCase"], 5 | "component-selector": [true, "element", "coverage-workspace", "kebab-case"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/.nyc_output/out.json: -------------------------------------------------------------------------------- 1 | { 2 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts": { 3 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 4 | "statementMap": { 5 | "0": { 6 | "start": { 7 | "line": 4, 8 | "column": 20 9 | }, 10 | "end": { 11 | "line": 16, 12 | "column": 1 13 | } 14 | }, 15 | "1": { 16 | "start": { 17 | "line": 6, 18 | "column": 8 19 | }, 20 | "end": { 21 | "line": 6, 22 | "column": 44 23 | } 24 | }, 25 | "2": { 26 | "start": { 27 | "line": 7, 28 | "column": 8 29 | }, 30 | "end": { 31 | "line": 7, 32 | "column": 48 33 | } 34 | }, 35 | "3": { 36 | "start": { 37 | "line": 11, 38 | "column": 8 39 | }, 40 | "end": { 41 | "line": 11, 42 | "column": 32 43 | } 44 | }, 45 | "4": { 46 | "start": { 47 | "line": 14, 48 | "column": 8 49 | }, 50 | "end": { 51 | "line": 14, 52 | "column": 36 53 | } 54 | }, 55 | "5": { 56 | "start": { 57 | "line": 17, 58 | "column": 0 59 | }, 60 | "end": { 61 | "line": 20, 62 | "column": 44 63 | } 64 | }, 65 | "6": { 66 | "start": { 67 | "line": 21, 68 | "column": 0 69 | }, 70 | "end": { 71 | "line": 24, 72 | "column": 49 73 | } 74 | }, 75 | "7": { 76 | "start": { 77 | "line": 25, 78 | "column": 0 79 | }, 80 | "end": { 81 | "line": 28, 82 | "column": 53 83 | } 84 | }, 85 | "8": { 86 | "start": { 87 | "line": 29, 88 | "column": 0 89 | }, 90 | "end": { 91 | "line": 36, 92 | "column": 18 93 | } 94 | } 95 | }, 96 | "fnMap": { 97 | "0": { 98 | "name": "(anonymous_0)", 99 | "decl": { 100 | "start": { 101 | "line": 5, 102 | "column": 4 103 | }, 104 | "end": { 105 | "line": 5, 106 | "column": 5 107 | } 108 | }, 109 | "loc": { 110 | "start": { 111 | "line": 5, 112 | "column": 18 113 | }, 114 | "end": { 115 | "line": 8, 116 | "column": 5 117 | } 118 | }, 119 | "line": 5 120 | }, 121 | "1": { 122 | "name": "(anonymous_1)", 123 | "decl": { 124 | "start": { 125 | "line": 9, 126 | "column": 4 127 | }, 128 | "end": { 129 | "line": 9, 130 | "column": 5 131 | } 132 | }, 133 | "loc": { 134 | "start": { 135 | "line": 9, 136 | "column": 15 137 | }, 138 | "end": { 139 | "line": 9, 140 | "column": 18 141 | } 142 | }, 143 | "line": 9 144 | }, 145 | "2": { 146 | "name": "(anonymous_2)", 147 | "decl": { 148 | "start": { 149 | "line": 10, 150 | "column": 4 151 | }, 152 | "end": { 153 | "line": 10, 154 | "column": 5 155 | } 156 | }, 157 | "loc": { 158 | "start": { 159 | "line": 10, 160 | "column": 14 161 | }, 162 | "end": { 163 | "line": 12, 164 | "column": 5 165 | } 166 | }, 167 | "line": 10 168 | }, 169 | "3": { 170 | "name": "(anonymous_3)", 171 | "decl": { 172 | "start": { 173 | "line": 13, 174 | "column": 4 175 | }, 176 | "end": { 177 | "line": 13, 178 | "column": 5 179 | } 180 | }, 181 | "loc": { 182 | "start": { 183 | "line": 13, 184 | "column": 18 185 | }, 186 | "end": { 187 | "line": 15, 188 | "column": 5 189 | } 190 | }, 191 | "line": 13 192 | } 193 | }, 194 | "branchMap": { 195 | "0": { 196 | "loc": { 197 | "start": { 198 | "line": 23, 199 | "column": 30 200 | }, 201 | "end": { 202 | "line": 23, 203 | "column": 124 204 | } 205 | }, 206 | "type": "cond-expr", 207 | "locations": [ 208 | { 209 | "start": { 210 | "line": 23, 211 | "column": 113 212 | }, 213 | "end": { 214 | "line": 23, 215 | "column": 115 216 | } 217 | }, 218 | { 219 | "start": { 220 | "line": 23, 221 | "column": 118 222 | }, 223 | "end": { 224 | "line": 23, 225 | "column": 124 226 | } 227 | } 228 | ], 229 | "line": 23 230 | }, 231 | "1": { 232 | "loc": { 233 | "start": { 234 | "line": 23, 235 | "column": 43 236 | }, 237 | "end": { 238 | "line": 23, 239 | "column": 94 240 | } 241 | }, 242 | "type": "binary-expr", 243 | "locations": [ 244 | { 245 | "start": { 246 | "line": 23, 247 | "column": 43 248 | }, 249 | "end": { 250 | "line": 23, 251 | "column": 78 252 | } 253 | }, 254 | { 255 | "start": { 256 | "line": 23, 257 | "column": 82 258 | }, 259 | "end": { 260 | "line": 23, 261 | "column": 94 262 | } 263 | } 264 | ], 265 | "line": 23 266 | }, 267 | "2": { 268 | "loc": { 269 | "start": { 270 | "line": 27, 271 | "column": 30 272 | }, 273 | "end": { 274 | "line": 27, 275 | "column": 124 276 | } 277 | }, 278 | "type": "cond-expr", 279 | "locations": [ 280 | { 281 | "start": { 282 | "line": 27, 283 | "column": 113 284 | }, 285 | "end": { 286 | "line": 27, 287 | "column": 115 288 | } 289 | }, 290 | { 291 | "start": { 292 | "line": 27, 293 | "column": 118 294 | }, 295 | "end": { 296 | "line": 27, 297 | "column": 124 298 | } 299 | } 300 | ], 301 | "line": 27 302 | }, 303 | "3": { 304 | "loc": { 305 | "start": { 306 | "line": 27, 307 | "column": 43 308 | }, 309 | "end": { 310 | "line": 27, 311 | "column": 94 312 | } 313 | }, 314 | "type": "binary-expr", 315 | "locations": [ 316 | { 317 | "start": { 318 | "line": 27, 319 | "column": 43 320 | }, 321 | "end": { 322 | "line": 27, 323 | "column": 78 324 | } 325 | }, 326 | { 327 | "start": { 328 | "line": 27, 329 | "column": 82 330 | }, 331 | "end": { 332 | "line": 27, 333 | "column": 94 334 | } 335 | } 336 | ], 337 | "line": 27 338 | }, 339 | "4": { 340 | "loc": { 341 | "start": { 342 | "line": 32, 343 | "column": 18 344 | }, 345 | "end": { 346 | "line": 32, 347 | "column": 189 348 | } 349 | }, 350 | "type": "cond-expr", 351 | "locations": [ 352 | { 353 | "start": { 354 | "line": 32, 355 | "column": 107 356 | }, 357 | "end": { 358 | "line": 32, 359 | "column": 183 360 | } 361 | }, 362 | { 363 | "start": { 364 | "line": 32, 365 | "column": 187 366 | }, 367 | "end": { 368 | "line": 32, 369 | "column": 189 370 | } 371 | } 372 | ], 373 | "line": 32 374 | }, 375 | "5": { 376 | "loc": { 377 | "start": { 378 | "line": 32, 379 | "column": 19 380 | }, 381 | "end": { 382 | "line": 32, 383 | "column": 95 384 | } 385 | }, 386 | "type": "binary-expr", 387 | "locations": [ 388 | { 389 | "start": { 390 | "line": 32, 391 | "column": 19 392 | }, 393 | "end": { 394 | "line": 32, 395 | "column": 59 396 | } 397 | }, 398 | { 399 | "start": { 400 | "line": 32, 401 | "column": 63 402 | }, 403 | "end": { 404 | "line": 32, 405 | "column": 95 406 | } 407 | } 408 | ], 409 | "line": 32 410 | }, 411 | "6": { 412 | "loc": { 413 | "start": { 414 | "line": 32, 415 | "column": 107 416 | }, 417 | "end": { 418 | "line": 32, 419 | "column": 183 420 | } 421 | }, 422 | "type": "binary-expr", 423 | "locations": [ 424 | { 425 | "start": { 426 | "line": 32, 427 | "column": 107 428 | }, 429 | "end": { 430 | "line": 32, 431 | "column": 147 432 | } 433 | }, 434 | { 435 | "start": { 436 | "line": 32, 437 | "column": 151 438 | }, 439 | "end": { 440 | "line": 32, 441 | "column": 183 442 | } 443 | } 444 | ], 445 | "line": 32 446 | }, 447 | "7": { 448 | "loc": { 449 | "start": { 450 | "line": 33, 451 | "column": 17 452 | }, 453 | "end": { 454 | "line": 33, 455 | "column": 184 456 | } 457 | }, 458 | "type": "cond-expr", 459 | "locations": [ 460 | { 461 | "start": { 462 | "line": 33, 463 | "column": 104 464 | }, 465 | "end": { 466 | "line": 33, 467 | "column": 178 468 | } 469 | }, 470 | { 471 | "start": { 472 | "line": 33, 473 | "column": 182 474 | }, 475 | "end": { 476 | "line": 33, 477 | "column": 184 478 | } 479 | } 480 | ], 481 | "line": 33 482 | }, 483 | "8": { 484 | "loc": { 485 | "start": { 486 | "line": 33, 487 | "column": 18 488 | }, 489 | "end": { 490 | "line": 33, 491 | "column": 92 492 | } 493 | }, 494 | "type": "binary-expr", 495 | "locations": [ 496 | { 497 | "start": { 498 | "line": 33, 499 | "column": 18 500 | }, 501 | "end": { 502 | "line": 33, 503 | "column": 57 504 | } 505 | }, 506 | { 507 | "start": { 508 | "line": 33, 509 | "column": 61 510 | }, 511 | "end": { 512 | "line": 33, 513 | "column": 92 514 | } 515 | } 516 | ], 517 | "line": 33 518 | }, 519 | "9": { 520 | "loc": { 521 | "start": { 522 | "line": 33, 523 | "column": 104 524 | }, 525 | "end": { 526 | "line": 33, 527 | "column": 178 528 | } 529 | }, 530 | "type": "binary-expr", 531 | "locations": [ 532 | { 533 | "start": { 534 | "line": 33, 535 | "column": 104 536 | }, 537 | "end": { 538 | "line": 33, 539 | "column": 143 540 | } 541 | }, 542 | { 543 | "start": { 544 | "line": 33, 545 | "column": 147 546 | }, 547 | "end": { 548 | "line": 33, 549 | "column": 178 550 | } 551 | } 552 | ], 553 | "line": 33 554 | } 555 | }, 556 | "s": { 557 | "0": 13, 558 | "1": 13, 559 | "2": 13, 560 | "3": 0, 561 | "4": 0, 562 | "5": 13, 563 | "6": 13, 564 | "7": 13, 565 | "8": 13 566 | }, 567 | "f": { 568 | "0": 13, 569 | "1": 13, 570 | "2": 0, 571 | "3": 0 572 | }, 573 | "b": { 574 | "0": [ 575 | 13, 576 | 0 577 | ], 578 | "1": [ 579 | 13, 580 | 13 581 | ], 582 | "2": [ 583 | 13, 584 | 0 585 | ], 586 | "3": [ 587 | 13, 588 | 13 589 | ], 590 | "4": [ 591 | 13, 592 | 0 593 | ], 594 | "5": [ 595 | 13, 596 | 0 597 | ], 598 | "6": [ 599 | 13, 600 | 0 601 | ], 602 | "7": [ 603 | 0, 604 | 13 605 | ], 606 | "8": [ 607 | 13, 608 | 13 609 | ], 610 | "9": [ 611 | 0, 612 | 0 613 | ] 614 | }, 615 | "inputSourceMap": { 616 | "version": 3, 617 | "file": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 618 | "sourceRoot": "", 619 | "sources": [ 620 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts" 621 | ], 622 | "names": [], 623 | "mappings": ";;AAAA,OAAO,EAAC,SAAS,EAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO9E,IAAa,aAAa,GAA1B,MAAa,aAAa;IAOxB;QAHU,cAAS,GAAsB,IAAI,YAAY,EAAE,CAAC;QAClD,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;IAEjD,CAAC;IAEhB,QAAQ,KAAI,CAAC;IAEb,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CAEF,CAAA;AAhBU;IAAR,KAAK,EAAE;;2CAAW;AACT;IAAT,MAAM,EAAE;kDAAY,YAAY,oBAAZ,YAAY;gDAA2B;AAClD;IAAT,MAAM,EAAE;kDAAgB,YAAY,oBAAZ,YAAY;oDAA2B;AALrD,aAAa;IALzB,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACrL,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClL,CAAC;;GACW,aAAa,CAmBzB;SAnBY,aAAa", 624 | "sourcesContent": [ 625 | "import {Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'task-item',\r\n template: (require('./task.component.html').default || require('./task.component.html')).length ? (require('./task.component.html').default || require('./task.component.html')) : '',\r\n styles: [(require('./task.component.css').default || require('./task.component.css')).length ? (require('./task.component.css').default || require('./task.component.css')) : '']\r\n})\r\nexport class TaskComponent implements OnInit {\r\n\r\n title: string;\r\n @Input() task: any;\r\n @Output() onPinTask: EventEmitter = new EventEmitter();\r\n @Output() onArchiveTask: EventEmitter = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n onPin(id) {\r\n this.onPinTask.emit(id);\r\n }\r\n\r\n onArchive(id) {\r\n this.onArchiveTask.emit(id);\r\n }\r\n\r\n}\r\n\r\nexport interface Task {\r\n id: string;\r\n title: string;\r\n state: string;\r\n}" 626 | ] 627 | }, 628 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 629 | "hash": "e330dc050407944dd1a9b1ba32c5572432d35736" 630 | }, 631 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts": { 632 | "path": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts", 633 | "statementMap": { 634 | "0": { 635 | "start": { 636 | "line": 5, 637 | "column": 20 638 | }, 639 | "end": { 640 | "line": 10, 641 | "column": 1 642 | } 643 | }, 644 | "1": { 645 | "start": { 646 | "line": 11, 647 | "column": 23 648 | }, 649 | "end": { 650 | "line": 14, 651 | "column": 1 652 | } 653 | }, 654 | "2": { 655 | "start": { 656 | "line": 15, 657 | "column": 0 658 | }, 659 | "end": { 660 | "line": 63, 661 | "column": 3 662 | } 663 | }, 664 | "3": { 665 | "start": { 666 | "line": 21, 667 | "column": 4 668 | }, 669 | "end": { 670 | "line": 28, 671 | "column": 6 672 | } 673 | }, 674 | "4": { 675 | "start": { 676 | "line": 31, 677 | "column": 4 678 | }, 679 | "end": { 680 | "line": 38, 681 | "column": 6 682 | } 683 | }, 684 | "5": { 685 | "start": { 686 | "line": 41, 687 | "column": 4 688 | }, 689 | "end": { 690 | "line": 48, 691 | "column": 6 692 | } 693 | }, 694 | "6": { 695 | "start": { 696 | "line": 51, 697 | "column": 4 698 | }, 699 | "end": { 700 | "line": 62, 701 | "column": 6 702 | } 703 | } 704 | }, 705 | "fnMap": { 706 | "0": { 707 | "name": "(anonymous_0)", 708 | "decl": { 709 | "start": { 710 | "line": 20, 711 | "column": 20 712 | }, 713 | "end": { 714 | "line": 20, 715 | "column": 21 716 | } 717 | }, 718 | "loc": { 719 | "start": { 720 | "line": 20, 721 | "column": 26 722 | }, 723 | "end": { 724 | "line": 29, 725 | "column": 1 726 | } 727 | }, 728 | "line": 20 729 | }, 730 | "1": { 731 | "name": "(anonymous_1)", 732 | "decl": { 733 | "start": { 734 | "line": 30, 735 | "column": 19 736 | }, 737 | "end": { 738 | "line": 30, 739 | "column": 20 740 | } 741 | }, 742 | "loc": { 743 | "start": { 744 | "line": 30, 745 | "column": 25 746 | }, 747 | "end": { 748 | "line": 39, 749 | "column": 1 750 | } 751 | }, 752 | "line": 30 753 | }, 754 | "2": { 755 | "name": "(anonymous_2)", 756 | "decl": { 757 | "start": { 758 | "line": 40, 759 | "column": 21 760 | }, 761 | "end": { 762 | "line": 40, 763 | "column": 22 764 | } 765 | }, 766 | "loc": { 767 | "start": { 768 | "line": 40, 769 | "column": 27 770 | }, 771 | "end": { 772 | "line": 49, 773 | "column": 1 774 | } 775 | }, 776 | "line": 40 777 | }, 778 | "3": { 779 | "name": "(anonymous_3)", 780 | "decl": { 781 | "start": { 782 | "line": 50, 783 | "column": 20 784 | }, 785 | "end": { 786 | "line": 50, 787 | "column": 21 788 | } 789 | }, 790 | "loc": { 791 | "start": { 792 | "line": 50, 793 | "column": 26 794 | }, 795 | "end": { 796 | "line": 63, 797 | "column": 1 798 | } 799 | }, 800 | "line": 50 801 | } 802 | }, 803 | "branchMap": {}, 804 | "s": { 805 | "0": 13, 806 | "1": 13, 807 | "2": 13, 808 | "3": 8, 809 | "4": 0, 810 | "5": 1, 811 | "6": 4 812 | }, 813 | "f": { 814 | "0": 8, 815 | "1": 0, 816 | "2": 1, 817 | "3": 4 818 | }, 819 | "b": {}, 820 | "inputSourceMap": { 821 | "version": 3, 822 | "file": "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts", 823 | "sourceRoot": "", 824 | "sources": [ 825 | "C:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts" 826 | ], 827 | "names": [], 828 | "mappings": "AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAS,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;CACvC,CAAC;AAEF,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;KACtB,YAAY,CAAC,SAAS,CAAC;KACvB,YAAY,CACX,cAAc,CAAC;IACb,YAAY,EAAE,CAAC,aAAa,CAAC;CAC9B,CAAC,CACH;KACA,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;IAClB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,kCAAO,IAAI,KAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,GAAE;YACpD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,kCAAO,IAAI,KAAE,KAAK,EAAE,eAAe,GAAE;YACzC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxB,KAAK,EAAE,eAAe;aAAE;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC", 829 | "sourcesContent": [ 830 | "import { storiesOf, moduleMetadata } from '@storybook/angular';\r\nimport { action } from '@storybook/addon-actions';\r\nimport { array, boolean, withKnobs, number, text } from '@storybook/addon-knobs';\r\nimport { TaskComponent } from './task.component';\r\n\r\nexport const task = {\r\n id: '1',\r\n title: 'Test Task',\r\n state: 'TASK_INBOX',\r\n updatedAt: new Date(2018, 0, 1, 9, 0),\r\n};\r\n\r\nexport const actions = {\r\n onPinTask: action('onPinTask'),\r\n onArchiveTask: action('onArchiveTask'),\r\n};\r\n\r\nstoriesOf('Task', module)\r\n .addDecorator(withKnobs)\r\n .addDecorator(\r\n moduleMetadata({\r\n declarations: [TaskComponent],\r\n })\r\n )\r\n .add('default', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task,\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('pinned', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { ...task, state: boolean('disabled', false) },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('archived', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { ...task, state: 'TASK_ARCHIVED' },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('knobbed', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { \r\n id: number('id', 0),\r\n title: text('title', ''),\r\n state: 'TASK_ARCHIVED' },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n });\r\n" 831 | ] 832 | }, 833 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 834 | "hash": "6b13aa890993845ac1260ed8413cf4dd72582f5f" 835 | }, 836 | "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts": { 837 | "path": "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 838 | "statementMap": { 839 | "0": { 840 | "start": { 841 | "line": 4, 842 | "column": 20 843 | }, 844 | "end": { 845 | "line": 16, 846 | "column": 1 847 | } 848 | }, 849 | "1": { 850 | "start": { 851 | "line": 6, 852 | "column": 8 853 | }, 854 | "end": { 855 | "line": 6, 856 | "column": 44 857 | } 858 | }, 859 | "2": { 860 | "start": { 861 | "line": 7, 862 | "column": 8 863 | }, 864 | "end": { 865 | "line": 7, 866 | "column": 48 867 | } 868 | }, 869 | "3": { 870 | "start": { 871 | "line": 11, 872 | "column": 8 873 | }, 874 | "end": { 875 | "line": 11, 876 | "column": 32 877 | } 878 | }, 879 | "4": { 880 | "start": { 881 | "line": 14, 882 | "column": 8 883 | }, 884 | "end": { 885 | "line": 14, 886 | "column": 36 887 | } 888 | }, 889 | "5": { 890 | "start": { 891 | "line": 17, 892 | "column": 0 893 | }, 894 | "end": { 895 | "line": 20, 896 | "column": 44 897 | } 898 | }, 899 | "6": { 900 | "start": { 901 | "line": 21, 902 | "column": 0 903 | }, 904 | "end": { 905 | "line": 24, 906 | "column": 49 907 | } 908 | }, 909 | "7": { 910 | "start": { 911 | "line": 25, 912 | "column": 0 913 | }, 914 | "end": { 915 | "line": 28, 916 | "column": 53 917 | } 918 | }, 919 | "8": { 920 | "start": { 921 | "line": 29, 922 | "column": 0 923 | }, 924 | "end": { 925 | "line": 36, 926 | "column": 18 927 | } 928 | } 929 | }, 930 | "fnMap": { 931 | "0": { 932 | "name": "(anonymous_0)", 933 | "decl": { 934 | "start": { 935 | "line": 5, 936 | "column": 4 937 | }, 938 | "end": { 939 | "line": 5, 940 | "column": 5 941 | } 942 | }, 943 | "loc": { 944 | "start": { 945 | "line": 5, 946 | "column": 18 947 | }, 948 | "end": { 949 | "line": 8, 950 | "column": 5 951 | } 952 | }, 953 | "line": 5 954 | }, 955 | "1": { 956 | "name": "(anonymous_1)", 957 | "decl": { 958 | "start": { 959 | "line": 9, 960 | "column": 4 961 | }, 962 | "end": { 963 | "line": 9, 964 | "column": 5 965 | } 966 | }, 967 | "loc": { 968 | "start": { 969 | "line": 9, 970 | "column": 15 971 | }, 972 | "end": { 973 | "line": 9, 974 | "column": 18 975 | } 976 | }, 977 | "line": 9 978 | }, 979 | "2": { 980 | "name": "(anonymous_2)", 981 | "decl": { 982 | "start": { 983 | "line": 10, 984 | "column": 4 985 | }, 986 | "end": { 987 | "line": 10, 988 | "column": 5 989 | } 990 | }, 991 | "loc": { 992 | "start": { 993 | "line": 10, 994 | "column": 14 995 | }, 996 | "end": { 997 | "line": 12, 998 | "column": 5 999 | } 1000 | }, 1001 | "line": 10 1002 | }, 1003 | "3": { 1004 | "name": "(anonymous_3)", 1005 | "decl": { 1006 | "start": { 1007 | "line": 13, 1008 | "column": 4 1009 | }, 1010 | "end": { 1011 | "line": 13, 1012 | "column": 5 1013 | } 1014 | }, 1015 | "loc": { 1016 | "start": { 1017 | "line": 13, 1018 | "column": 18 1019 | }, 1020 | "end": { 1021 | "line": 15, 1022 | "column": 5 1023 | } 1024 | }, 1025 | "line": 13 1026 | } 1027 | }, 1028 | "branchMap": { 1029 | "0": { 1030 | "loc": { 1031 | "start": { 1032 | "line": 23, 1033 | "column": 30 1034 | }, 1035 | "end": { 1036 | "line": 23, 1037 | "column": 124 1038 | } 1039 | }, 1040 | "type": "cond-expr", 1041 | "locations": [ 1042 | { 1043 | "start": { 1044 | "line": 23, 1045 | "column": 113 1046 | }, 1047 | "end": { 1048 | "line": 23, 1049 | "column": 115 1050 | } 1051 | }, 1052 | { 1053 | "start": { 1054 | "line": 23, 1055 | "column": 118 1056 | }, 1057 | "end": { 1058 | "line": 23, 1059 | "column": 124 1060 | } 1061 | } 1062 | ], 1063 | "line": 23 1064 | }, 1065 | "1": { 1066 | "loc": { 1067 | "start": { 1068 | "line": 23, 1069 | "column": 43 1070 | }, 1071 | "end": { 1072 | "line": 23, 1073 | "column": 94 1074 | } 1075 | }, 1076 | "type": "binary-expr", 1077 | "locations": [ 1078 | { 1079 | "start": { 1080 | "line": 23, 1081 | "column": 43 1082 | }, 1083 | "end": { 1084 | "line": 23, 1085 | "column": 78 1086 | } 1087 | }, 1088 | { 1089 | "start": { 1090 | "line": 23, 1091 | "column": 82 1092 | }, 1093 | "end": { 1094 | "line": 23, 1095 | "column": 94 1096 | } 1097 | } 1098 | ], 1099 | "line": 23 1100 | }, 1101 | "2": { 1102 | "loc": { 1103 | "start": { 1104 | "line": 27, 1105 | "column": 30 1106 | }, 1107 | "end": { 1108 | "line": 27, 1109 | "column": 124 1110 | } 1111 | }, 1112 | "type": "cond-expr", 1113 | "locations": [ 1114 | { 1115 | "start": { 1116 | "line": 27, 1117 | "column": 113 1118 | }, 1119 | "end": { 1120 | "line": 27, 1121 | "column": 115 1122 | } 1123 | }, 1124 | { 1125 | "start": { 1126 | "line": 27, 1127 | "column": 118 1128 | }, 1129 | "end": { 1130 | "line": 27, 1131 | "column": 124 1132 | } 1133 | } 1134 | ], 1135 | "line": 27 1136 | }, 1137 | "3": { 1138 | "loc": { 1139 | "start": { 1140 | "line": 27, 1141 | "column": 43 1142 | }, 1143 | "end": { 1144 | "line": 27, 1145 | "column": 94 1146 | } 1147 | }, 1148 | "type": "binary-expr", 1149 | "locations": [ 1150 | { 1151 | "start": { 1152 | "line": 27, 1153 | "column": 43 1154 | }, 1155 | "end": { 1156 | "line": 27, 1157 | "column": 78 1158 | } 1159 | }, 1160 | { 1161 | "start": { 1162 | "line": 27, 1163 | "column": 82 1164 | }, 1165 | "end": { 1166 | "line": 27, 1167 | "column": 94 1168 | } 1169 | } 1170 | ], 1171 | "line": 27 1172 | }, 1173 | "4": { 1174 | "loc": { 1175 | "start": { 1176 | "line": 32, 1177 | "column": 18 1178 | }, 1179 | "end": { 1180 | "line": 32, 1181 | "column": 189 1182 | } 1183 | }, 1184 | "type": "cond-expr", 1185 | "locations": [ 1186 | { 1187 | "start": { 1188 | "line": 32, 1189 | "column": 107 1190 | }, 1191 | "end": { 1192 | "line": 32, 1193 | "column": 183 1194 | } 1195 | }, 1196 | { 1197 | "start": { 1198 | "line": 32, 1199 | "column": 187 1200 | }, 1201 | "end": { 1202 | "line": 32, 1203 | "column": 189 1204 | } 1205 | } 1206 | ], 1207 | "line": 32 1208 | }, 1209 | "5": { 1210 | "loc": { 1211 | "start": { 1212 | "line": 32, 1213 | "column": 19 1214 | }, 1215 | "end": { 1216 | "line": 32, 1217 | "column": 95 1218 | } 1219 | }, 1220 | "type": "binary-expr", 1221 | "locations": [ 1222 | { 1223 | "start": { 1224 | "line": 32, 1225 | "column": 19 1226 | }, 1227 | "end": { 1228 | "line": 32, 1229 | "column": 59 1230 | } 1231 | }, 1232 | { 1233 | "start": { 1234 | "line": 32, 1235 | "column": 63 1236 | }, 1237 | "end": { 1238 | "line": 32, 1239 | "column": 95 1240 | } 1241 | } 1242 | ], 1243 | "line": 32 1244 | }, 1245 | "6": { 1246 | "loc": { 1247 | "start": { 1248 | "line": 32, 1249 | "column": 107 1250 | }, 1251 | "end": { 1252 | "line": 32, 1253 | "column": 183 1254 | } 1255 | }, 1256 | "type": "binary-expr", 1257 | "locations": [ 1258 | { 1259 | "start": { 1260 | "line": 32, 1261 | "column": 107 1262 | }, 1263 | "end": { 1264 | "line": 32, 1265 | "column": 147 1266 | } 1267 | }, 1268 | { 1269 | "start": { 1270 | "line": 32, 1271 | "column": 151 1272 | }, 1273 | "end": { 1274 | "line": 32, 1275 | "column": 183 1276 | } 1277 | } 1278 | ], 1279 | "line": 32 1280 | }, 1281 | "7": { 1282 | "loc": { 1283 | "start": { 1284 | "line": 33, 1285 | "column": 17 1286 | }, 1287 | "end": { 1288 | "line": 33, 1289 | "column": 184 1290 | } 1291 | }, 1292 | "type": "cond-expr", 1293 | "locations": [ 1294 | { 1295 | "start": { 1296 | "line": 33, 1297 | "column": 104 1298 | }, 1299 | "end": { 1300 | "line": 33, 1301 | "column": 178 1302 | } 1303 | }, 1304 | { 1305 | "start": { 1306 | "line": 33, 1307 | "column": 182 1308 | }, 1309 | "end": { 1310 | "line": 33, 1311 | "column": 184 1312 | } 1313 | } 1314 | ], 1315 | "line": 33 1316 | }, 1317 | "8": { 1318 | "loc": { 1319 | "start": { 1320 | "line": 33, 1321 | "column": 18 1322 | }, 1323 | "end": { 1324 | "line": 33, 1325 | "column": 92 1326 | } 1327 | }, 1328 | "type": "binary-expr", 1329 | "locations": [ 1330 | { 1331 | "start": { 1332 | "line": 33, 1333 | "column": 18 1334 | }, 1335 | "end": { 1336 | "line": 33, 1337 | "column": 57 1338 | } 1339 | }, 1340 | { 1341 | "start": { 1342 | "line": 33, 1343 | "column": 61 1344 | }, 1345 | "end": { 1346 | "line": 33, 1347 | "column": 92 1348 | } 1349 | } 1350 | ], 1351 | "line": 33 1352 | }, 1353 | "9": { 1354 | "loc": { 1355 | "start": { 1356 | "line": 33, 1357 | "column": 104 1358 | }, 1359 | "end": { 1360 | "line": 33, 1361 | "column": 178 1362 | } 1363 | }, 1364 | "type": "binary-expr", 1365 | "locations": [ 1366 | { 1367 | "start": { 1368 | "line": 33, 1369 | "column": 104 1370 | }, 1371 | "end": { 1372 | "line": 33, 1373 | "column": 143 1374 | } 1375 | }, 1376 | { 1377 | "start": { 1378 | "line": 33, 1379 | "column": 147 1380 | }, 1381 | "end": { 1382 | "line": 33, 1383 | "column": 178 1384 | } 1385 | } 1386 | ], 1387 | "line": 33 1388 | } 1389 | }, 1390 | "s": { 1391 | "0": 2, 1392 | "1": 2, 1393 | "2": 2, 1394 | "3": 0, 1395 | "4": 0, 1396 | "5": 2, 1397 | "6": 2, 1398 | "7": 2, 1399 | "8": 2 1400 | }, 1401 | "f": { 1402 | "0": 2, 1403 | "1": 2, 1404 | "2": 0, 1405 | "3": 0 1406 | }, 1407 | "b": { 1408 | "0": [ 1409 | 2, 1410 | 0 1411 | ], 1412 | "1": [ 1413 | 2, 1414 | 2 1415 | ], 1416 | "2": [ 1417 | 2, 1418 | 0 1419 | ], 1420 | "3": [ 1421 | 2, 1422 | 2 1423 | ], 1424 | "4": [ 1425 | 2, 1426 | 0 1427 | ], 1428 | "5": [ 1429 | 2, 1430 | 0 1431 | ], 1432 | "6": [ 1433 | 2, 1434 | 0 1435 | ], 1436 | "7": [ 1437 | 0, 1438 | 2 1439 | ], 1440 | "8": [ 1441 | 2, 1442 | 2 1443 | ], 1444 | "9": [ 1445 | 0, 1446 | 0 1447 | ] 1448 | }, 1449 | "inputSourceMap": { 1450 | "version": 3, 1451 | "file": "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts", 1452 | "sourceRoot": "", 1453 | "sources": [ 1454 | "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.ts" 1455 | ], 1456 | "names": [], 1457 | "mappings": ";;AAAA,OAAO,EAAC,SAAS,EAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO9E,IAAa,aAAa,GAA1B,MAAa,aAAa;IAOxB;QAHU,cAAS,GAAsB,IAAI,YAAY,EAAE,CAAC;QAClD,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;IAEjD,CAAC;IAEhB,QAAQ,KAAI,CAAC;IAEb,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CAEF,CAAA;AAhBU;IAAR,KAAK,EAAE;;2CAAW;AACT;IAAT,MAAM,EAAE;kDAAY,YAAY,oBAAZ,YAAY;gDAA2B;AAClD;IAAT,MAAM,EAAE;kDAAgB,YAAY,oBAAZ,YAAY;oDAA2B;AALrD,aAAa;IALzB,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACrL,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClL,CAAC;;GACW,aAAa,CAmBzB;SAnBY,aAAa", 1458 | "sourcesContent": [ 1459 | "import {Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'task-item',\r\n template: (require('./task.component.html').default || require('./task.component.html')).length ? (require('./task.component.html').default || require('./task.component.html')) : '',\r\n styles: [(require('./task.component.css').default || require('./task.component.css')).length ? (require('./task.component.css').default || require('./task.component.css')) : '']\r\n})\r\nexport class TaskComponent implements OnInit {\r\n\r\n title: string;\r\n @Input() task: any;\r\n @Output() onPinTask: EventEmitter = new EventEmitter();\r\n @Output() onArchiveTask: EventEmitter = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n onPin(id) {\r\n this.onPinTask.emit(id);\r\n }\r\n\r\n onArchive(id) {\r\n this.onArchiveTask.emit(id);\r\n }\r\n\r\n}\r\n\r\nexport interface Task {\r\n id: string;\r\n title: string;\r\n state: string;\r\n}" 1460 | ] 1461 | }, 1462 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 1463 | "hash": "12fccf5652b72769882a72f66636a385fe23beee" 1464 | }, 1465 | "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts": { 1466 | "path": "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts", 1467 | "statementMap": { 1468 | "0": { 1469 | "start": { 1470 | "line": 5, 1471 | "column": 20 1472 | }, 1473 | "end": { 1474 | "line": 10, 1475 | "column": 1 1476 | } 1477 | }, 1478 | "1": { 1479 | "start": { 1480 | "line": 11, 1481 | "column": 23 1482 | }, 1483 | "end": { 1484 | "line": 14, 1485 | "column": 1 1486 | } 1487 | }, 1488 | "2": { 1489 | "start": { 1490 | "line": 15, 1491 | "column": 0 1492 | }, 1493 | "end": { 1494 | "line": 63, 1495 | "column": 3 1496 | } 1497 | }, 1498 | "3": { 1499 | "start": { 1500 | "line": 21, 1501 | "column": 4 1502 | }, 1503 | "end": { 1504 | "line": 28, 1505 | "column": 6 1506 | } 1507 | }, 1508 | "4": { 1509 | "start": { 1510 | "line": 31, 1511 | "column": 4 1512 | }, 1513 | "end": { 1514 | "line": 38, 1515 | "column": 6 1516 | } 1517 | }, 1518 | "5": { 1519 | "start": { 1520 | "line": 41, 1521 | "column": 4 1522 | }, 1523 | "end": { 1524 | "line": 48, 1525 | "column": 6 1526 | } 1527 | }, 1528 | "6": { 1529 | "start": { 1530 | "line": 51, 1531 | "column": 4 1532 | }, 1533 | "end": { 1534 | "line": 62, 1535 | "column": 6 1536 | } 1537 | } 1538 | }, 1539 | "fnMap": { 1540 | "0": { 1541 | "name": "(anonymous_0)", 1542 | "decl": { 1543 | "start": { 1544 | "line": 20, 1545 | "column": 20 1546 | }, 1547 | "end": { 1548 | "line": 20, 1549 | "column": 21 1550 | } 1551 | }, 1552 | "loc": { 1553 | "start": { 1554 | "line": 20, 1555 | "column": 26 1556 | }, 1557 | "end": { 1558 | "line": 29, 1559 | "column": 1 1560 | } 1561 | }, 1562 | "line": 20 1563 | }, 1564 | "1": { 1565 | "name": "(anonymous_1)", 1566 | "decl": { 1567 | "start": { 1568 | "line": 30, 1569 | "column": 19 1570 | }, 1571 | "end": { 1572 | "line": 30, 1573 | "column": 20 1574 | } 1575 | }, 1576 | "loc": { 1577 | "start": { 1578 | "line": 30, 1579 | "column": 25 1580 | }, 1581 | "end": { 1582 | "line": 39, 1583 | "column": 1 1584 | } 1585 | }, 1586 | "line": 30 1587 | }, 1588 | "2": { 1589 | "name": "(anonymous_2)", 1590 | "decl": { 1591 | "start": { 1592 | "line": 40, 1593 | "column": 21 1594 | }, 1595 | "end": { 1596 | "line": 40, 1597 | "column": 22 1598 | } 1599 | }, 1600 | "loc": { 1601 | "start": { 1602 | "line": 40, 1603 | "column": 27 1604 | }, 1605 | "end": { 1606 | "line": 49, 1607 | "column": 1 1608 | } 1609 | }, 1610 | "line": 40 1611 | }, 1612 | "3": { 1613 | "name": "(anonymous_3)", 1614 | "decl": { 1615 | "start": { 1616 | "line": 50, 1617 | "column": 20 1618 | }, 1619 | "end": { 1620 | "line": 50, 1621 | "column": 21 1622 | } 1623 | }, 1624 | "loc": { 1625 | "start": { 1626 | "line": 50, 1627 | "column": 26 1628 | }, 1629 | "end": { 1630 | "line": 63, 1631 | "column": 1 1632 | } 1633 | }, 1634 | "line": 50 1635 | } 1636 | }, 1637 | "branchMap": {}, 1638 | "s": { 1639 | "0": 2, 1640 | "1": 2, 1641 | "2": 2, 1642 | "3": 2, 1643 | "4": 0, 1644 | "5": 0, 1645 | "6": 0 1646 | }, 1647 | "f": { 1648 | "0": 2, 1649 | "1": 0, 1650 | "2": 0, 1651 | "3": 0 1652 | }, 1653 | "b": {}, 1654 | "inputSourceMap": { 1655 | "version": 3, 1656 | "file": "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts", 1657 | "sourceRoot": "", 1658 | "sources": [ 1659 | "c:\\Users\\walchshofer\\git\\coverage-workspace\\libs\\ui-lib\\src\\lib\\task\\task.component.stories.ts" 1660 | ], 1661 | "names": [], 1662 | "mappings": "AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAS,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;CACvC,CAAC;AAEF,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;KACtB,YAAY,CAAC,SAAS,CAAC;KACvB,YAAY,CACX,cAAc,CAAC;IACb,YAAY,EAAE,CAAC,aAAa,CAAC;CAC9B,CAAC,CACH;KACA,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;IAClB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,kCAAO,IAAI,KAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,GAAE;YACpD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,kCAAO,IAAI,KAAE,KAAK,EAAE,eAAe,GAAE;YACzC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,OAAO;QACL,QAAQ,EAAE,gHAAgH;QAC1H,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxB,KAAK,EAAE,eAAe;aAAE;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC", 1663 | "sourcesContent": [ 1664 | "import { storiesOf, moduleMetadata } from '@storybook/angular';\r\nimport { action } from '@storybook/addon-actions';\r\nimport { array, boolean, withKnobs, number, text } from '@storybook/addon-knobs';\r\nimport { TaskComponent } from './task.component';\r\n\r\nexport const task = {\r\n id: '1',\r\n title: 'Test Task',\r\n state: 'TASK_INBOX',\r\n updatedAt: new Date(2018, 0, 1, 9, 0),\r\n};\r\n\r\nexport const actions = {\r\n onPinTask: action('onPinTask'),\r\n onArchiveTask: action('onArchiveTask'),\r\n};\r\n\r\nstoriesOf('Task', module)\r\n .addDecorator(withKnobs)\r\n .addDecorator(\r\n moduleMetadata({\r\n declarations: [TaskComponent],\r\n })\r\n )\r\n .add('default', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task,\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('pinned', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { ...task, state: boolean('disabled', false) },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('archived', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { ...task, state: 'TASK_ARCHIVED' },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n })\r\n .add('knobbed', () => {\r\n return {\r\n template: ``,\r\n props: {\r\n task: { \r\n id: number('id', 0),\r\n title: text('title', ''),\r\n state: 'TASK_ARCHIVED' },\r\n onPinTask: actions.onPinTask,\r\n onArchiveTask: actions.onArchiveTask,\r\n },\r\n };\r\n });\r\n" 1665 | ] 1666 | }, 1667 | "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", 1668 | "hash": "a3749066c1f59171a32b19ddfb664c38cfc0e9ea" 1669 | } 1670 | } -------------------------------------------------------------------------------- /apps/ui-lib-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/ui-lib-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/ui-lib-e2e/screenshots", 11 | "chromeWebSecurity": false, 12 | "baseUrl": "http://localhost:4400" 13 | } 14 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/src/integration/task/task.component.spec.ts: -------------------------------------------------------------------------------- 1 | describe('ui-lib', () => { 2 | beforeEach(() => cy.visit('/iframe.html?id=task--default&knob-task')); 3 | 4 | it('should render the component', () => { 5 | cy.get('task-item').should('exist'); 6 | }); 7 | it('should click checkbox', () => { 8 | cy.get('task-item').get('#myCB').click(); 9 | }) 10 | 11 | context('archived', () => { 12 | beforeEach(() => cy.visit('/iframe.html?id=task--archived&knob-task')); 13 | it('should render the component', () => { 14 | cy.get('task-item').should('exist'); 15 | }) 16 | it('should check textbox content', () => { 17 | const ip = cy.get('task-item').get('.title').find('input'); 18 | expect(ip).not.to.be.empty; 19 | }) 20 | }) 21 | 22 | context('knobbed', () => { 23 | beforeEach(() => cy.visit('/iframe.html?id=task--knobbed&knob-id=0&knob-title=Hello')); 24 | it('should render the component', () => { 25 | cy.get('task-item').should('exist'); 26 | 27 | }) 28 | it('should check textbox content', () => { 29 | var ip = cy.get('task-item').get('#myTitle'); 30 | expect(ip).not.to.be.empty; 31 | ip.should('have.value', 'Hello'); 32 | }) 33 | it('should insert into textbox', () => { 34 | var ip = cy.get('#myTitle'); //works fine as well 35 | ip.type('Goodbye'); 36 | expect(ip).not.to.be.empty; 37 | ip.should('have.value', 'HelloGoodbye'); 38 | }) 39 | it('should uncheck checkbox', () => { 40 | var cb = cy.get('task-item').get('#myCB'); 41 | cb.should('be.checked'); 42 | cb.click(); 43 | expect(cb).not.to.be.checked; 44 | }) 45 | 46 | }) 47 | 48 | }); 49 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example plugins/index.js can be used to load plugins 3 | // 4 | // You can change the location of this file or turn off loading 5 | // the plugins file with the 'pluginsFile' configuration option. 6 | // 7 | // You can read more here: 8 | // https://on.cypress.io/plugins-guide 9 | // *********************************************************** 10 | 11 | // This function is called when a project is opened or re-opened (e.g. due to 12 | // the project's config changing) 13 | 14 | const { preprocessTypescript } = require('@nrwl/cypress/plugins/preprocessor'); 15 | 16 | module.exports = (on, config) => { 17 | // `on` is used to hook into various events Cypress emits 18 | // `config` is the resolved Cypress config 19 | 20 | // Preprocess Typescript file using Nx helper 21 | on('file:preprocessor', preprocessTypescript(config)); 22 | 23 | on('task', require('@cypress/code-coverage/task')) 24 | }; 25 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/src/support/commands.ts: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // eslint-disable-next-line @typescript-eslint/no-namespace 11 | declare namespace Cypress { 12 | interface Chainable { 13 | login(email: string, password: string): void; 14 | } 15 | } 16 | // 17 | // -- This is a parent command -- 18 | Cypress.Commands.add('login', (email, password) => { 19 | console.log('Custom command example: Login', email, password); 20 | }); 21 | // 22 | // -- This is a child command -- 23 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) 24 | // 25 | // 26 | // -- This is a dual command -- 27 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) 28 | // 29 | // 30 | // -- This will overwrite an existing command -- 31 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) 32 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | import '@cypress/code-coverage/support' -------------------------------------------------------------------------------- /apps/ui-lib-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc" 6 | }, 7 | "include": ["src/**/*.ts", "src/**/*.js"] 8 | } 9 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["cypress", "node"] 5 | }, 6 | "include": ["**/*.ts", "**/*.js"] 7 | } 8 | -------------------------------------------------------------------------------- /apps/ui-lib-e2e/tslint.json: -------------------------------------------------------------------------------- 1 | {"extends":"../../tslint.json","rules":{}} -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'], 3 | transform: { 4 | '^.+\\.(ts|js|html)$': 'ts-jest' 5 | }, 6 | resolver: '@nrwl/jest/plugins/resolver', 7 | moduleFileExtensions: ['ts', 'js', 'html'], 8 | coverageReporters: ['html'], 9 | passWithNoTests: true 10 | }; 11 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | const { join } = require('path'); 5 | const { constants } = require('karma'); 6 | 7 | module.exports = () => { 8 | return { 9 | basePath: '', 10 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 11 | plugins: [ 12 | require('karma-jasmine'), 13 | require('karma-chrome-launcher'), 14 | require('karma-jasmine-html-reporter'), 15 | require('karma-coverage-istanbul-reporter'), 16 | require('@angular-devkit/build-angular/plugins/karma') 17 | ], 18 | client: { 19 | clearContext: false // leave Jasmine Spec Runner output visible in browser 20 | }, 21 | coverageIstanbulReporter: { 22 | dir: join(__dirname, '../../coverage'), 23 | reports: ['html', 'lcovonly'], 24 | fixWebpackSourcePaths: true 25 | }, 26 | reporters: ['progress', 'kjhtml'], 27 | port: 9876, 28 | colors: true, 29 | logLevel: constants.LOG_INFO, 30 | autoWatch: true, 31 | browsers: ['Chrome'], 32 | singleRun: true 33 | }; 34 | }; 35 | -------------------------------------------------------------------------------- /libs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flaxline/angular-nx-cypress-coverage-example/5b8c42860a6250bab446c897efe672a183e55423/libs/.gitkeep -------------------------------------------------------------------------------- /libs/ui-lib/.storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '../../../.storybook/addons'; 2 | -------------------------------------------------------------------------------- /libs/ui-lib/.storybook/config.js: -------------------------------------------------------------------------------- 1 | import { configure, addDecorator } from '@storybook/angular'; 2 | import { withKnobs } from '@storybook/addon-knobs'; 3 | 4 | addDecorator(withKnobs); 5 | configure(require.context('../src/lib', true, /\.stories\.tsx?$/), module); 6 | -------------------------------------------------------------------------------- /libs/ui-lib/.storybook/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "emitDecoratorMetadata": true 5 | }, 6 | "exclude": ["../src/test.ts", "../**/*.spec.ts"], 7 | "include": ["../src/**/*"] 8 | } 9 | -------------------------------------------------------------------------------- /libs/ui-lib/.storybook/webpack.config.js: -------------------------------------------------------------------------------- 1 | const rootWebpackConfig = require('../../../.storybook/webpack.config'); 2 | // Export a function. Accept the base config as the only param. 3 | module.exports = async ({ config, mode }) => { 4 | config = await rootWebpackConfig({ config, mode }); 5 | config.module.rules.push({ 6 | test: /\.(js|ts)$/, 7 | loader: 'istanbul-instrumenter-loader', 8 | options: { esModules: true }, 9 | enforce: 'post', 10 | include: require('path').join(__dirname, '..', 'src') 11 | }); 12 | // Return the altered config 13 | return config; 14 | }; 15 | -------------------------------------------------------------------------------- /libs/ui-lib/README.md: -------------------------------------------------------------------------------- 1 | # ui-lib 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test ui-lib` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /libs/ui-lib/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'ui-lib', 3 | preset: '../../jest.config.js', 4 | coverageDirectory: '../../coverage/libs/ui-lib', 5 | snapshotSerializers: [ 6 | 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', 7 | 'jest-preset-angular/build/AngularSnapshotSerializer.js', 8 | 'jest-preset-angular/build/HTMLCommentSerializer.js' 9 | ] 10 | }; 11 | -------------------------------------------------------------------------------- /libs/ui-lib/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/ui-lib.module'; 2 | -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/task/task.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flaxline/angular-nx-cypress-coverage-example/5b8c42860a6250bab446c897efe672a183e55423/libs/ui-lib/src/lib/task/task.component.css -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/task/task.component.html: -------------------------------------------------------------------------------- 1 |
2 | 11 |
12 | 13 |
14 | 15 |
16 | 17 | 18 | 19 |
20 |
-------------------------------------------------------------------------------- /libs/ui-lib/src/lib/task/task.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TaskComponent } from './task.component'; 4 | 5 | describe('TaskComponent', () => { 6 | let component: TaskComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ TaskComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TaskComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/task/task.component.stories.ts: -------------------------------------------------------------------------------- 1 | import { storiesOf, moduleMetadata } from '@storybook/angular'; 2 | import { action } from '@storybook/addon-actions'; 3 | import { array, boolean, withKnobs, number, text } from '@storybook/addon-knobs'; 4 | import { TaskComponent } from './task.component'; 5 | 6 | export const task = { 7 | id: '1', 8 | title: 'Test Task', 9 | state: 'TASK_INBOX', 10 | updatedAt: new Date(2018, 0, 1, 9, 0), 11 | }; 12 | 13 | export const actions = { 14 | onPinTask: action('onPinTask'), 15 | onArchiveTask: action('onArchiveTask'), 16 | }; 17 | 18 | storiesOf('Task', module) 19 | .addDecorator(withKnobs) 20 | .addDecorator( 21 | moduleMetadata({ 22 | declarations: [TaskComponent], 23 | }) 24 | ) 25 | .add('default', () => { 26 | return { 27 | template: ``, 28 | props: { 29 | task, 30 | onPinTask: actions.onPinTask, 31 | onArchiveTask: actions.onArchiveTask, 32 | }, 33 | }; 34 | }) 35 | .add('pinned', () => { 36 | return { 37 | template: ``, 38 | props: { 39 | task: { ...task, state: boolean('disabled', false) }, 40 | onPinTask: actions.onPinTask, 41 | onArchiveTask: actions.onArchiveTask, 42 | }, 43 | }; 44 | }) 45 | .add('archived', () => { 46 | return { 47 | template: ``, 48 | props: { 49 | task: { ...task, state: 'TASK_ARCHIVED' }, 50 | onPinTask: actions.onPinTask, 51 | onArchiveTask: actions.onArchiveTask, 52 | }, 53 | }; 54 | }) 55 | .add('knobbed', () => { 56 | return { 57 | template: ``, 58 | props: { 59 | task: { 60 | id: number('id', 0), 61 | title: text('title', ''), 62 | state: 'TASK_ARCHIVED' }, 63 | onPinTask: actions.onPinTask, 64 | onArchiveTask: actions.onArchiveTask, 65 | }, 66 | }; 67 | }); 68 | -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/task/task.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'task-item', 5 | templateUrl: './task.component.html', 6 | styleUrls: ['./task.component.css'] 7 | }) 8 | export class TaskComponent implements OnInit { 9 | 10 | title: string; 11 | @Input() task: any; 12 | @Output() onPinTask: EventEmitter = new EventEmitter(); 13 | @Output() onArchiveTask: EventEmitter = new EventEmitter(); 14 | 15 | constructor() {} 16 | 17 | ngOnInit() {} 18 | 19 | onPin(id) { 20 | this.onPinTask.emit(id); 21 | } 22 | 23 | onArchive(id) { 24 | this.onArchiveTask.emit(id); 25 | } 26 | 27 | } 28 | 29 | export interface Task { 30 | id: string; 31 | title: string; 32 | state: string; 33 | } -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/ui-lib.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, TestBed } from '@angular/core/testing'; 2 | import { UiLibModule } from './ui-lib.module'; 3 | 4 | describe('UiLibModule', () => { 5 | beforeEach(async(() => { 6 | TestBed.configureTestingModule({ 7 | imports: [UiLibModule] 8 | }).compileComponents(); 9 | })); 10 | 11 | it('should create', () => { 12 | expect(UiLibModule).toBeDefined(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /libs/ui-lib/src/lib/ui-lib.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { TaskComponent } from './task/task.component'; 4 | 5 | @NgModule({ 6 | imports: [CommonModule], 7 | declarations: [TaskComponent], 8 | exports: [TaskComponent] 9 | }) 10 | export class UiLibModule {} 11 | -------------------------------------------------------------------------------- /libs/ui-lib/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular'; 2 | -------------------------------------------------------------------------------- /libs/ui-lib/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["node", "jest"] 5 | }, 6 | "include": ["**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /libs/ui-lib/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "target": "es2015", 6 | "declaration": true, 7 | "inlineSources": true, 8 | "types": [], 9 | "lib": [ 10 | "dom", 11 | "es2018" 12 | ] 13 | }, 14 | "angularCompilerOptions": { 15 | "skipTemplateCodegen": true, 16 | "strictMetadataEmit": true, 17 | "enableResourceInlining": true 18 | }, 19 | "exclude": [ 20 | "src/test-setup.ts", 21 | "**/*.spec.ts", 22 | "**/*.stories.ts", 23 | "**/*.stories.js" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /libs/ui-lib/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.lib.json", 3 | "angularCompilerOptions": { 4 | "enableIvy": false 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /libs/ui-lib/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /libs/ui-lib/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tslint.json", 3 | "rules": { 4 | "directive-selector": [true, "attribute", "coverageWorkspace", "camelCase"], 5 | "component-selector": [true, "element", "coverage-workspace", "kebab-case"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /nx.json: -------------------------------------------------------------------------------- 1 | { 2 | "npmScope": "coverage-workspace", 3 | "implicitDependencies": { 4 | "angular.json": "*", 5 | "package.json": { 6 | "dependencies": "*", 7 | "devDependencies": "*" 8 | }, 9 | "tsconfig.json": "*", 10 | "tslint.json": "*", 11 | "nx.json": "*" 12 | }, 13 | "projects": { 14 | "cov-app": { 15 | "tags": [] 16 | }, 17 | "cov-app-e2e": { 18 | "tags": [], 19 | "implicitDependencies": [ 20 | "cov-app" 21 | ] 22 | }, 23 | "ui-lib": { 24 | "tags": [] 25 | }, 26 | "ui-lib-e2e": { 27 | "tags": [], 28 | "implicitDependencies": [ 29 | "ui-lib" 30 | ] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coverage-workspace", 3 | "version": "0.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "ng": "ng", 7 | "nx": "nx", 8 | "start": "ng serve", 9 | "build": "ng build", 10 | "test": "ng test", 11 | "lint": "nx workspace-lint && ng lint", 12 | "e2e": "ng e2e", 13 | "affected:apps": "nx affected:apps", 14 | "affected:libs": "nx affected:libs", 15 | "affected:build": "nx affected:build", 16 | "affected:e2e": "nx affected:e2e", 17 | "affected:test": "nx affected:test", 18 | "affected:lint": "nx affected:lint", 19 | "affected:dep-graph": "nx affected:dep-graph", 20 | "affected": "nx affected", 21 | "format": "nx format:write", 22 | "format:write": "nx format:write", 23 | "format:check": "nx format:check", 24 | "update": "ng update @nrwl/workspace", 25 | "workspace-schematic": "nx workspace-schematic", 26 | "dep-graph": "nx dep-graph", 27 | "help": "nx help", 28 | "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points", 29 | "app-e2e": "npx nx run cov-app-e2e:e2e", 30 | "lib-e2e": "npx nx run ui-lib-e2e:e2e" 31 | }, 32 | "private": true, 33 | "dependencies": { 34 | "@angular/animations": "9.0.0", 35 | "@angular/common": "9.0.0", 36 | "@angular/compiler": "9.0.0", 37 | "@angular/core": "9.0.0", 38 | "@angular/forms": "9.0.0", 39 | "@angular/platform-browser": "9.0.0", 40 | "@angular/platform-browser-dynamic": "9.0.0", 41 | "@angular/router": "9.0.0", 42 | "@nrwl/angular": "^9.0.0", 43 | "core-js": "^2.5.4", 44 | "rxjs": "~6.5.0", 45 | "zone.js": "^0.10.2" 46 | }, 47 | "devDependencies": { 48 | "@angular-devkit/build-angular": "0.900.1", 49 | "@angular/cli": "9.0.1", 50 | "@angular/compiler-cli": "9.0.0", 51 | "@angular/language-service": "9.0.0", 52 | "@cypress/code-coverage": "^1.12.2", 53 | "@istanbuljs/nyc-config-typescript": "^1.0.1", 54 | "@nrwl/cypress": "9.0.0", 55 | "@nrwl/jest": "9.0.0", 56 | "@nrwl/workspace": "9.0.0", 57 | "@types/jasmine": "~2.8.8", 58 | "@types/jest": "24.0.9", 59 | "@types/node": "~8.9.4", 60 | "codelyzer": "~5.0.1", 61 | "cypress": "^3.8.2", 62 | "dotenv": "6.2.0", 63 | "eslint": "6.1.0", 64 | "istanbul-instrumenter-loader": "^3.0.1", 65 | "istanbul-lib-coverage": "^3.0.0", 66 | "jasmine-core": "~2.99.1", 67 | "jasmine-spec-reporter": "~4.2.1", 68 | "jest": "24.1.0", 69 | "jest-preset-angular": "8.0.0", 70 | "karma": "~4.0.0", 71 | "karma-chrome-launcher": "~2.2.0", 72 | "karma-coverage-istanbul-reporter": "~2.0.1", 73 | "karma-jasmine": "~1.1.2", 74 | "karma-jasmine-html-reporter": "^0.2.2", 75 | "ngx-build-plus": "^9.0.6", 76 | "nyc": "^15.0.0", 77 | "prettier": "1.18.2", 78 | "source-map-support": "^0.5.16", 79 | "ts-jest": "24.0.0", 80 | "ts-node": "^7.0.1", 81 | "tslint": "~5.11.0", 82 | "typescript": "~3.7.4", 83 | "@nrwl/storybook": "*", 84 | "@storybook/angular": "5.3.9", 85 | "@storybook/react": "5.3.9", 86 | "@storybook/addon-actions": "^5.3.10", 87 | "@storybook/addon-knobs": "^5.3.10", 88 | "@storybook/addon-links": "^5.3.10", 89 | "@storybook/addon-notes": "^5.3.10", 90 | "@storybook/addon-storysource": "^5.3.10", 91 | "babel-loader": "8.0.6", 92 | "@babel/core": "7.8.3" 93 | }, 94 | "nyc": { 95 | "extends": "@istanbuljs/nyc-config-typescript", 96 | "all": true 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /tools/schematics/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flaxline/angular-nx-cypress-coverage-example/5b8c42860a6250bab446c897efe672a183e55423/tools/schematics/.gitkeep -------------------------------------------------------------------------------- /tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"] 9 | }, 10 | "include": ["**/*.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "sourceMap": true, 6 | "declaration": false, 7 | "moduleResolution": "node", 8 | "emitDecoratorMetadata": true, 9 | "experimentalDecorators": true, 10 | "importHelpers": true, 11 | "target": "es2015", 12 | "module": "esnext", 13 | "typeRoots": ["node_modules/@types"], 14 | "lib": ["es2017", "dom"], 15 | "skipLibCheck": true, 16 | "skipDefaultLibCheck": true, 17 | "baseUrl": ".", 18 | "paths": { 19 | "@coverage-workspace/ui-lib": ["libs/ui-lib/src/index.ts"] 20 | } 21 | }, 22 | "exclude": ["node_modules", "tmp"] 23 | } 24 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/@nrwl/workspace/src/tslint", 4 | "node_modules/codelyzer" 5 | ], 6 | "rules": { 7 | "arrow-return-shorthand": true, 8 | "callable-types": true, 9 | "class-name": true, 10 | "deprecation": { 11 | "severity": "warn" 12 | }, 13 | "forin": true, 14 | "import-blacklist": [true, "rxjs/Rx"], 15 | "interface-over-type-literal": true, 16 | "member-access": false, 17 | "member-ordering": [ 18 | true, 19 | { 20 | "order": [ 21 | "static-field", 22 | "instance-field", 23 | "static-method", 24 | "instance-method" 25 | ] 26 | } 27 | ], 28 | "no-arg": true, 29 | "no-bitwise": true, 30 | "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], 31 | "no-construct": true, 32 | "no-debugger": true, 33 | "no-duplicate-super": true, 34 | "no-empty": false, 35 | "no-empty-interface": true, 36 | "no-eval": true, 37 | "no-inferrable-types": [true, "ignore-params"], 38 | "no-misused-new": true, 39 | "no-non-null-assertion": true, 40 | "no-shadowed-variable": true, 41 | "no-string-literal": false, 42 | "no-string-throw": true, 43 | "no-switch-case-fall-through": true, 44 | "no-unnecessary-initializer": true, 45 | "no-unused-expression": true, 46 | "no-var-keyword": true, 47 | "object-literal-sort-keys": false, 48 | "prefer-const": true, 49 | "radix": true, 50 | "triple-equals": [true, "allow-null-check"], 51 | "unified-signatures": true, 52 | "variable-name": false, 53 | "nx-enforce-module-boundaries": [ 54 | true, 55 | { 56 | "enforceBuildableLibDependency": true, 57 | "allow": [], 58 | "depConstraints": [ 59 | { 60 | "sourceTag": "*", 61 | "onlyDependOnLibsWithTags": ["*"] 62 | } 63 | ] 64 | } 65 | ], 66 | "directive-selector": [true, "attribute", "app", "camelCase"], 67 | "component-selector": [true, "element", "app", "kebab-case"], 68 | "no-conflicting-lifecycle": true, 69 | "no-host-metadata-property": true, 70 | "no-input-rename": true, 71 | "no-inputs-metadata-property": true, 72 | "no-output-native": true, 73 | "no-output-on-prefix": true, 74 | "no-output-rename": true, 75 | "no-outputs-metadata-property": true, 76 | "template-banana-in-box": true, 77 | "template-no-negated-async": true, 78 | "use-lifecycle-interface": true, 79 | "use-pipe-transform-interface": true 80 | } 81 | } 82 | --------------------------------------------------------------------------------