You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ze...@apache.org on 2022/12/22 12:20:31 UTC

[streampipes] branch dev updated (114522252 -> 7bd5f3e62)

This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a change to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git


    from 114522252 Fix [#878] Add mailto link to README.md
     new 44986d836 chore: format and lint first modules
     new f3e203689 ci: add github action for formatting and linting
     new 71779c8de fix: add missing apache header
     new 7bd5f3e62 ci: run e2e tests only when linting succeeds

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/pr-validation.yml              |  26 +++-
 ui/{.browserslistrc => .eslintignore}            |  55 +++++---
 ui/.eslintrc.json                                |  91 ++++++-------
 ui/.gitignore                                    |   5 -
 ui/{.browserslistrc => .prettierignore}          |  55 +++++---
 ui/angular.json                                  |  22 +---
 ui/cypress.config.ts                             |  60 ++++-----
 ui/karma.conf.js                                 |  87 ++++++------
 ui/package.json                                  |   2 +-
 ui/src/app/animation.ts                          |  55 ++++----
 ui/src/app/app.component.ts                      |  32 ++---
 ui/src/app/home/components/status.component.css  |  11 +-
 ui/src/app/home/components/status.component.html |  40 ++++--
 ui/src/app/home/components/status.component.ts   |  43 +++---
 ui/src/app/home/home.component.html              |  38 ++++--
 ui/src/app/home/home.component.scss              |   8 +-
 ui/src/app/home/home.component.ts                |  22 ++--
 ui/src/app/home/home.module.ts                   |  14 +-
 ui/src/app/http-interceptor.ts                   |  36 ++---
 ui/src/assets/templates/error.html               |   2 +-
 ui/src/environments/environment.prod.ts          |   2 +-
 ui/src/environments/environment.ts               |   3 +-
 ui/src/index.html                                | 140 ++++++++++----------
 ui/src/main.ts                                   |   7 +-
 ui/src/polyfills.ts                              |  26 ++--
 ui/src/test.ts                                   |   9 +-
 ui/src/tsconfig.app.json                         |  13 +-
 ui/src/tsconfig.spec.json                        |  15 +--
 ui/tsconfig.json                                 |  21 +--
 ui/tsconfig.spec.json                            |  15 +--
 ui/webpack.partial.base.js                       | 160 +++++++++++++++++------
 ui/webpack.partial.js                            |   6 +-
 ui/webpack.partial.prod.js                       |   4 +-
 33 files changed, 635 insertions(+), 490 deletions(-)
 copy ui/{.browserslistrc => .eslintignore} (57%)
 copy ui/{.browserslistrc => .prettierignore} (57%)


[streampipes] 03/04: fix: add missing apache header

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 71779c8de99517505f795bc371518cc177ffb688
Author: Samuel Abt <gi...@samuelabt.de>
AuthorDate: Wed Dec 21 15:22:11 2022 +0100

    fix: add missing apache header
---
 ui/.eslintignore   | 15 +++++++++++++++
 ui/.gitignore      |  5 -----
 ui/.prettierignore | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 66 insertions(+), 5 deletions(-)

diff --git a/ui/.eslintignore b/ui/.eslintignore
index 16899b04c..c1a2e7833 100644
--- a/ui/.eslintignore
+++ b/ui/.eslintignore
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 dist
 .angular
 
diff --git a/ui/.gitignore b/ui/.gitignore
index fed941ef3..bd614e3c6 100644
--- a/ui/.gitignore
+++ b/ui/.gitignore
@@ -90,8 +90,3 @@ package-lock.json
 # Cypress
 cypress/screenshots/
 cypress/videos/
-
-
-# Prettier
-.prettierignore
-
diff --git a/ui/.prettierignore b/ui/.prettierignore
new file mode 100644
index 000000000..85c89bbd5
--- /dev/null
+++ b/ui/.prettierignore
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dist
+.angular
+
+# Remove these in the future to format additional modules
+# Please also see .eslintignore
+cypress
+deployment
+projects
+src/app/_enums
+src/app/_guards
+src/app/_models
+src/app/add
+src/app/apidocs
+src/app/app-asset-monitoring
+src/app/app-overview
+src/app/assets
+src/app/configuration
+src/app/connect
+src/app/core
+src/app/core-model
+src/app/core-services
+src/app/core-ui
+src/app/CustomMaterial
+src/app/dashboard
+src/app/data-explorer
+src/app/editor
+src/app/files
+src/app/info
+src/app/login
+src/app/notifications
+src/app/NS
+src/app/pipeline-details
+src/app/pipelines
+src/app/profile
+src/app/services
+src/scss
\ No newline at end of file


[streampipes] 02/04: ci: add github action for formatting and linting

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit f3e203689d8653eb643eca8e0815570a61774e04
Author: Samuel Abt <gi...@samuelabt.de>
AuthorDate: Wed Dec 21 15:15:53 2022 +0100

    ci: add github action for formatting and linting
---
 .github/workflows/pr-validation.yml | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml
index b63242649..34dc64f87 100644
--- a/.github/workflows/pr-validation.yml
+++ b/.github/workflows/pr-validation.yml
@@ -34,6 +34,30 @@ jobs:
       - name: Validate java code
         run: mvn clean verify -Dmaven.test.skip=true
 
+  run-format-and-lint-ui:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+      
+      - name: Set up Node
+        uses: actions/setup-node@v1
+        with:
+          node-version: '16.x'
+
+      - name: Install dependencies
+        working-directory: ./ui
+        run: |
+          NODE_PATH=/cache/node_modules
+          NODE_OPTIONS=--max_old_space_size=6096
+          npm install --unsafe-perm --legacy-peer-deps
+
+      - name: Format and Lint all files
+        working-directory: ./ui
+        run: |
+          npm run format
+          npm run lint
+
   run-cypress-e2e-tests:
     runs-on: ubuntu-latest
     needs: [python-quality-checks, python-unit-tests]


[streampipes] 01/04: chore: format and lint first modules

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 44986d83638b7bd4cf4f22a436c001b54eb59d56
Author: Samuel Abt <gi...@samuelabt.de>
AuthorDate: Wed Dec 21 15:05:07 2022 +0100

    chore: format and lint first modules
---
 ui/.eslintignore                                 |  36 +++++
 ui/.eslintrc.json                                |  91 ++++++-------
 ui/angular.json                                  |  22 +---
 ui/cypress.config.ts                             |  60 ++++-----
 ui/karma.conf.js                                 |  87 ++++++------
 ui/package.json                                  |   2 +-
 ui/src/app/animation.ts                          |  55 ++++----
 ui/src/app/app.component.ts                      |  32 ++---
 ui/src/app/home/components/status.component.css  |  11 +-
 ui/src/app/home/components/status.component.html |  40 ++++--
 ui/src/app/home/components/status.component.ts   |  43 +++---
 ui/src/app/home/home.component.html              |  38 ++++--
 ui/src/app/home/home.component.scss              |   8 +-
 ui/src/app/home/home.component.ts                |  22 ++--
 ui/src/app/home/home.module.ts                   |  14 +-
 ui/src/app/http-interceptor.ts                   |  36 ++---
 ui/src/assets/templates/error.html               |   2 +-
 ui/src/environments/environment.prod.ts          |   2 +-
 ui/src/environments/environment.ts               |   3 +-
 ui/src/index.html                                | 140 ++++++++++----------
 ui/src/main.ts                                   |   7 +-
 ui/src/polyfills.ts                              |  26 ++--
 ui/src/test.ts                                   |   9 +-
 ui/src/tsconfig.app.json                         |  13 +-
 ui/src/tsconfig.spec.json                        |  15 +--
 ui/tsconfig.json                                 |  21 +--
 ui/tsconfig.spec.json                            |  15 +--
 ui/webpack.partial.base.js                       | 160 +++++++++++++++++------
 ui/webpack.partial.js                            |   6 +-
 ui/webpack.partial.prod.js                       |   4 +-
 30 files changed, 576 insertions(+), 444 deletions(-)

diff --git a/ui/.eslintignore b/ui/.eslintignore
new file mode 100644
index 000000000..16899b04c
--- /dev/null
+++ b/ui/.eslintignore
@@ -0,0 +1,36 @@
+dist
+.angular
+
+# Remove these in the future to lint additional modules
+# Please also see .prettierignore
+cypress
+deployment
+projects
+src/app/_enums
+src/app/_guards
+src/app/_models
+src/app/add
+src/app/apidocs
+src/app/app-asset-monitoring
+src/app/app-overview
+src/app/assets
+src/app/configuration
+src/app/connect
+src/app/core
+src/app/core-model
+src/app/core-services
+src/app/core-ui
+src/app/CustomMaterial
+src/app/dashboard
+src/app/data-explorer
+src/app/editor
+src/app/files
+src/app/info
+src/app/login
+src/app/notifications
+src/app/NS
+src/app/pipeline-details
+src/app/pipelines
+src/app/profile
+src/app/services
+src/scss
\ No newline at end of file
diff --git a/ui/.eslintrc.json b/ui/.eslintrc.json
index 0ca64b538..4a75f71a4 100644
--- a/ui/.eslintrc.json
+++ b/ui/.eslintrc.json
@@ -1,47 +1,48 @@
 {
-    "root": true,
-    "ignorePatterns": ["projects/**/*"],
-    "overrides": [
-        {
-            "files": ["*.ts"],
-            "parserOptions": {
-                "project": ["tsconfig.json", "e2e/tsconfig.json"],
-                "createDefaultProgram": true
-            },
-            "extends": [
-                "prettier",
-                "plugin:@angular-eslint/recommended",
-                "plugin:@angular-eslint/recommended--extra",
-                "plugin:@angular-eslint/template/process-inline-templates"
-            ],
-            "rules": {
-                "@angular-eslint/component-selector": [
-                    "error",
-                    {
-                        "prefix": "sp",
-                        "style": "kebab-case",
-                        "type": "element"
-                    }
-                ],
-                "@angular-eslint/directive-selector": [
-                    "error",
-                    {
-                        "prefix": "sp",
-                        "style": "camelCase",
-                        "type": "attribute"
-                    }
-                ],
-                "@angular-eslint/component-class-suffix": [
-                    "error", {
-                        "suffixes": ["Component", "Dialog"]
-                    }
-                ]
-            }
-        },
-        {
-            "files": ["*.html"],
-            "extends": ["plugin:@angular-eslint/template/recommended"],
-            "rules": {}
-        }
-    ]
+  "root": true,
+  "ignorePatterns": ["projects/**/*"],
+  "overrides": [
+    {
+      "files": ["*.ts"],
+      "parserOptions": {
+        "project": ["tsconfig.json", "e2e/tsconfig.json"],
+        "createDefaultProgram": true
+      },
+      "extends": [
+        "prettier",
+        "plugin:@angular-eslint/recommended",
+        "plugin:@angular-eslint/recommended--extra",
+        "plugin:@angular-eslint/template/process-inline-templates"
+      ],
+      "rules": {
+        "@angular-eslint/component-selector": [
+          "error",
+          {
+            "prefix": "sp",
+            "style": "kebab-case",
+            "type": "element"
+          }
+        ],
+        "@angular-eslint/directive-selector": [
+          "error",
+          {
+            "prefix": "sp",
+            "style": "camelCase",
+            "type": "attribute"
+          }
+        ],
+        "@angular-eslint/component-class-suffix": [
+          "error",
+          {
+            "suffixes": ["Component", "Dialog"]
+          }
+        ]
+      }
+    },
+    {
+      "files": ["*.html"],
+      "extends": ["plugin:@angular-eslint/template/recommended"],
+      "rules": {}
+    }
+  ]
 }
diff --git a/ui/angular.json b/ui/angular.json
index 0f94965f8..67a727a01 100644
--- a/ui/angular.json
+++ b/ui/angular.json
@@ -18,10 +18,7 @@
             "main": "src/main.ts",
             "tsConfig": "src/tsconfig.app.json",
             "polyfills": "src/polyfills.ts",
-            "allowedCommonJsDependencies": [
-              "lodash",
-              "codemirror"
-            ],
+            "allowedCommonJsDependencies": ["lodash", "codemirror"],
             "assets": [
               "src/assets",
               {
@@ -30,9 +27,7 @@
                 "output": "assets/img"
               }
             ],
-            "styles": [
-              "src/scss/main.scss"
-            ],
+            "styles": ["src/scss/main.scss"],
             "scripts": [
               "node_modules/plotly.js/dist/plotly.min.js",
               "node_modules/jquery/dist/jquery.min.js",
@@ -96,19 +91,14 @@
             "polyfills": "src/polyfills.ts",
             "tsConfig": "tsconfig.spec.json",
             "karmaConfig": "karma.conf.js",
-            "assets": [
-              "src/assets"
-            ],
+            "assets": ["src/assets"],
             "scripts": []
           }
         },
         "lint": {
           "builder": "@angular-eslint/builder:lint",
           "options": {
-            "lintFilePatterns": [
-              "src/**/*.ts",
-              "src/**/*.html"
-            ]
+            "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
           }
         }
       }
@@ -187,9 +177,7 @@
     }
   },
   "cli": {
-    "schematicCollections": [
-      "@angular-eslint/schematics"
-    ],
+    "schematicCollections": ["@angular-eslint/schematics"],
     "analytics": false
   }
 }
diff --git a/ui/cypress.config.ts b/ui/cypress.config.ts
index 6f71f8cca..3d9817926 100644
--- a/ui/cypress.config.ts
+++ b/ui/cypress.config.ts
@@ -20,41 +20,41 @@
 import { defineConfig } from 'cypress';
 
 export default defineConfig({
-  projectId: 'q1jdu2',
-  downloadsFolder: 'cypress/downloads',
+    projectId: 'q1jdu2',
+    downloadsFolder: 'cypress/downloads',
 
-  env: {
-    TAKE_SCREENSHOT: 'false',
-  },
+    env: {
+        TAKE_SCREENSHOT: 'false',
+    },
 
-  retries: {
-    runMode: 1,
-    openMode: 0,
-  },
+    retries: {
+        runMode: 1,
+        openMode: 0,
+    },
 
-  trashAssetsBeforeRuns: true,
-  videoCompression: false,
-  viewportWidth: 1920,
-  viewportHeight: 1080,
+    trashAssetsBeforeRuns: true,
+    videoCompression: false,
+    viewportWidth: 1920,
+    viewportHeight: 1080,
 
-  e2e: {
-    // We've imported your old cypress plugins here.
-    // You may want to clean this up later by importing these.
-    setupNodeEvents(on, config) {
-      return require('./cypress/plugins/index.ts')(on, config);
+    e2e: {
+        // We've imported your old cypress plugins here.
+        // You may want to clean this up later by importing these.
+        setupNodeEvents(on, config) {
+            return require('./cypress/plugins/index.ts')(on, config);
+        },
+        specPattern: 'cypress/tests/**/*.{js,jsx,ts,tsx}',
+        baseUrl: 'http://localhost:80',
     },
-    specPattern: 'cypress/tests/**/*.{js,jsx,ts,tsx}',
-    baseUrl: 'http://localhost:80',
-  },
 
-  component: {
-    devServer: {
-      framework: 'angular',
-      bundler: 'webpack',
-    },
-    setupNodeEvents(on, config) {
-      return require('./cypress/plugins/index.ts')(on, config);
+    component: {
+        devServer: {
+            framework: 'angular',
+            bundler: 'webpack',
+        },
+        setupNodeEvents(on, config) {
+            return require('./cypress/plugins/index.ts')(on, config);
+        },
+        specPattern: '**/*.cy.ts',
     },
-    specPattern: '**/*.cy.ts',
-  },
 });
diff --git a/ui/karma.conf.js b/ui/karma.conf.js
index 4cb07db88..db36ea824 100644
--- a/ui/karma.conf.js
+++ b/ui/karma.conf.js
@@ -20,49 +20,48 @@
 // https://karma-runner.github.io/1.0/config/configuration-file.html
 
 module.exports = function (config) {
-    config.set({
-        basePath: '',
-        frameworks: ['jasmine', '@angular-devkit/build-angular'],
-        plugins: [
-            require('karma-jasmine'),
-            require('karma-chrome-launcher'),
-            require('karma-firefox-launcher'),
-            require('karma-jasmine-html-reporter'),
-            require('karma-verbose-reporter'),
-            require('karma-coverage-istanbul-reporter'),
-            require('@angular-devkit/build-angular/plugins/karma')
+  config.set({
+    basePath: '',
+    frameworks: ['jasmine', '@angular-devkit/build-angular'],
+    plugins: [
+      require('karma-jasmine'),
+      require('karma-chrome-launcher'),
+      require('karma-firefox-launcher'),
+      require('karma-jasmine-html-reporter'),
+      require('karma-verbose-reporter'),
+      require('karma-coverage-istanbul-reporter'),
+      require('@angular-devkit/build-angular/plugins/karma'),
+    ],
+    client: {
+      clearContext: false, // leave Jasmine Spec Runner output visible in browser
+    },
+    coverageIstanbulReporter: {
+      dir: require('path').join(__dirname, 'coverage'),
+      reports: ['html', 'lcovonly'],
+      fixWebpackSourcePaths: true,
+    },
+
+    customLaunchers: {
+      ChromeHeadless: {
+        base: 'Chrome',
+        flags: [
+          '--headless',
+          '--disable-gpu',
+          '--no-sandbox',
+          '--remote-debugging-port=9222',
         ],
-        client: {
-            clearContext: false // leave Jasmine Spec Runner output visible in browser
-        },
-        coverageIstanbulReporter: {
-            dir: require('path').join(__dirname, 'coverage'), reports: ['html', 'lcovonly'],
-            fixWebpackSourcePaths: true
-        },
-        
-        customLaunchers: {
-            ChromeHeadless: {
-                base: 'Chrome',
-                flags: [
-                    '--headless',
-                    '--disable-gpu',
-                    '--no-sandbox',
-                    '--remote-debugging-port=9222'
-                ]
-            },
-            FirefoxHeadless: {
-                base: 'Firefox',
-                flags: [
-                    '--headless'
-                ]
-            }
-        },
-        reporters: ['verbose'],
-        port: 9876,
-        browserDisconnectTolerance: 2,
-        browserNoActivityTimeout: 50000,
-        colors: true,
-        logLevel: config.LOG_INFO,
-        browsers: ['ChromeHeadless', 'FirefoxHeadless']
-    });
+      },
+      FirefoxHeadless: {
+        base: 'Firefox',
+        flags: ['--headless'],
+      },
+    },
+    reporters: ['verbose'],
+    port: 9876,
+    browserDisconnectTolerance: 2,
+    browserNoActivityTimeout: 50000,
+    colors: true,
+    logLevel: config.LOG_INFO,
+    browsers: ['ChromeHeadless', 'FirefoxHeadless'],
+  });
 };
diff --git a/ui/package.json b/ui/package.json
index c424637cc..76baf5b37 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -21,7 +21,7 @@
     "lint": "ng lint",
     "lint:fix": "ng lint --fix",
     "format": "prettier --check .",
-    "format:fix": "prettier --fix .",
+    "format:fix": "prettier --write .",
     "lint-staged": "lint-staged",
     "analyze": "webpack-bundle-analyzer dist/stats.json",
     "test-cypress-open": "cypress open",
diff --git a/ui/src/app/animation.ts b/ui/src/app/animation.ts
index 191aa41b8..09fa71c3a 100644
--- a/ui/src/app/animation.ts
+++ b/ui/src/app/animation.ts
@@ -16,32 +16,41 @@
  *
  */
 
-import { animate, animateChild, group, query, style, transition, trigger } from '@angular/animations';
+import {
+    animate,
+    animateChild,
+    group,
+    query,
+    style,
+    transition,
+    trigger,
+} from '@angular/animations';
 
-export const slideInAnimation =
-    trigger('routeAnimations', [
-      transition('* <=> LoginPage', [
+export const slideInAnimation = trigger('routeAnimations', [
+    transition('* <=> LoginPage', [
         style({ position: 'relative' }),
-        query(':enter, :leave', [
-          style({
-            position: 'absolute',
-            top: 0,
-            left: 0,
-            width: '100%'
-          })
-        ], { optional: true }),
-        query(':enter', [
-          style({ opacity: 0 })
-        ], { optional: true }),
+        query(
+            ':enter, :leave',
+            [
+                style({
+                    position: 'absolute',
+                    top: 0,
+                    left: 0,
+                    width: '100%',
+                }),
+            ],
+            { optional: true },
+        ),
+        query(':enter', [style({ opacity: 0 })], { optional: true }),
         query(':leave', animateChild(), { optional: true }),
         group([
-          query(':leave', [
-            animate('200ms', style({ opacity: 0 }))
-          ], { optional: true }),
-          query(':enter', [
-            animate('300ms', style({ opacity: 1 }))
-          ], { optional: true })
+            query(':leave', [animate('200ms', style({ opacity: 0 }))], {
+                optional: true,
+            }),
+            query(':enter', [animate('300ms', style({ opacity: 1 }))], {
+                optional: true,
+            }),
         ]),
         query(':enter', animateChild(), { optional: true }),
-      ])
-    ]);
+    ]),
+]);
diff --git a/ui/src/app/app.component.ts b/ui/src/app/app.component.ts
index 6cb5eb61b..56c06480f 100644
--- a/ui/src/app/app.component.ts
+++ b/ui/src/app/app.component.ts
@@ -23,23 +23,25 @@ import { Title } from '@angular/platform-browser';
 import { AppConstants } from './services/app.constants';
 
 @Component({
-  selector: 'app-root',
-  templateUrl: './app.component.html',
-  animations: [ slideInAnimation ]
+    selector: 'sp-app-root',
+    templateUrl: './app.component.html',
+    animations: [slideInAnimation],
 })
 export class AppComponent implements OnInit {
+    constructor(
+        private titleService: Title,
+        private appConstants: AppConstants,
+    ) {}
 
-  constructor(private titleService: Title,
-              private appConstants: AppConstants) {
-
-  }
-
-  ngOnInit(): void {
-    this.titleService.setTitle(this.appConstants.APP_TITLE);
-  }
-
-  prepareRoute(outlet: RouterOutlet) {
-    return outlet && outlet.activatedRouteData && outlet.activatedRouteData.animation;
-  }
+    ngOnInit(): void {
+        this.titleService.setTitle(this.appConstants.APP_TITLE);
+    }
 
+    prepareRoute(outlet: RouterOutlet) {
+        return (
+            outlet &&
+            outlet.activatedRouteData &&
+            outlet.activatedRouteData.animation
+        );
+    }
 }
diff --git a/ui/src/app/home/components/status.component.css b/ui/src/app/home/components/status.component.css
index 9f013db11..500aeec2d 100644
--- a/ui/src/app/home/components/status.component.css
+++ b/ui/src/app/home/components/status.component.css
@@ -16,11 +16,10 @@
  *
  */
 
-
 .status-container {
-    height:150px;
-    width:80%;
-    color:white;
+    height: 150px;
+    width: 80%;
+    color: white;
     border-radius: 5px;
     margin-bottom: 20px;
 }
@@ -42,7 +41,7 @@
 }
 
 .status-container-number {
-    font-size:46pt;
+    font-size: 46pt;
 }
 
 .status-container:hover {
@@ -51,7 +50,7 @@
 }
 
 .status-container-text {
-    font-size:16pt;
+    font-size: 16pt;
 }
 
 .mr-20 {
diff --git a/ui/src/app/home/components/status.component.html b/ui/src/app/home/components/status.component.html
index f1cf5cc6a..2434f2719 100644
--- a/ui/src/app/home/components/status.component.html
+++ b/ui/src/app/home/components/status.component.html
@@ -17,27 +17,51 @@
   -->
 
 <div fxFlex="100" fxLayout="row">
-    <div fxFlex="25" class="status-container pipelines mr-20" (click)="navigate('pipelines')">
+    <div
+        fxFlex="25"
+        class="status-container pipelines mr-20"
+        (click)="navigate('pipelines')"
+    >
         <div fxFill="100" fxLayout="column" fxLayoutAlign="center center">
-            <div class="status-container-number" fxLayoutAlign="start center">{{pipelines}}</div>
+            <div class="status-container-number" fxLayoutAlign="start center">
+                {{ pipelines }}
+            </div>
             <div class="status-container-text">pipelines created</div>
         </div>
     </div>
-    <div fxFlex="25" class="status-container pipelines-running mr-20" (click)="navigate('pipelines')">
+    <div
+        fxFlex="25"
+        class="status-container pipelines-running mr-20"
+        (click)="navigate('pipelines')"
+    >
         <div fxFill="100" fxLayout="column" fxLayoutAlign="center center">
-            <div class="status-container-number" fxLayoutAlign="start center">{{runningPipelines}}</div>
+            <div class="status-container-number" fxLayoutAlign="start center">
+                {{ runningPipelines }}
+            </div>
             <div class="status-container-text">pipelines running</div>
         </div>
     </div>
-    <div fxFlex="25" class="status-container notifications mr-20" (click)="navigate('notifications')">
+    <div
+        fxFlex="25"
+        class="status-container notifications mr-20"
+        (click)="navigate('notifications')"
+    >
         <div fxFill="100" fxLayout="column" fxLayoutAlign="center center">
-            <div class="status-container-number" fxLayoutAlign="start center">{{unreadNotificationCount}}</div>
+            <div class="status-container-number" fxLayoutAlign="start center">
+                {{ unreadNotificationCount }}
+            </div>
             <div class="status-container-text">unread notifications</div>
         </div>
     </div>
-    <div fxFlex="25" class="status-container pipeline-elements-installed" (click)="navigate('add')">
+    <div
+        fxFlex="25"
+        class="status-container pipeline-elements-installed"
+        (click)="navigate('add')"
+    >
         <div fxFill="100" fxLayout="column" fxLayoutAlign="center center">
-            <div class="status-container-number" fxLayoutAlign="start center">{{installedPipelineElements}}</div>
+            <div class="status-container-number" fxLayoutAlign="start center">
+                {{ installedPipelineElements }}
+            </div>
             <div class="status-container-text">installed pipeline elements</div>
         </div>
     </div>
diff --git a/ui/src/app/home/components/status.component.ts b/ui/src/app/home/components/status.component.ts
index c863eaa2e..4963dc5d9 100644
--- a/ui/src/app/home/components/status.component.ts
+++ b/ui/src/app/home/components/status.component.ts
@@ -19,38 +19,43 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
 import { NotificationCountService } from '../../services/notification-count-service';
-import { PipelineService, PipelineElementService } from '@streampipes/platform-services';
+import {
+    PipelineService,
+    PipelineElementService,
+} from '@streampipes/platform-services';
 
 @Component({
-    selector: 'status',
+    selector: 'sp-status',
     templateUrl: './status.component.html',
-    styleUrls: ['./status.component.css']
+    styleUrls: ['./status.component.css'],
 })
 export class StatusComponent implements OnInit {
-
     pipelines = 0;
     runningPipelines = 0;
     installedPipelineElements = 0;
     unreadNotificationCount = 0;
 
-    constructor(private pipelineElementService: PipelineElementService,
-                private router: Router,
-                public notificationCountService: NotificationCountService,
-                private pipelineService: PipelineService) { }
+    constructor(
+        private pipelineElementService: PipelineElementService,
+        private router: Router,
+        public notificationCountService: NotificationCountService,
+        private pipelineService: PipelineService,
+    ) {}
 
     ngOnInit() {
         this.getPipelines();
         this.getStreams();
         this.getProcessors();
         this.getSinks();
-        this.notificationCountService.unreadNotificationCount$
-          .subscribe(count => this.unreadNotificationCount = count);
+        this.notificationCountService.unreadNotificationCount$.subscribe(
+            count => (this.unreadNotificationCount = count),
+        );
     }
 
     getPipelines() {
         this.pipelineService.getOwnPipelines().subscribe(pipelines => {
-           this.pipelines = pipelines.length;
-           this.runningPipelines = pipelines.filter(p => p.running).length;
+            this.pipelines = pipelines.length;
+            this.runningPipelines = pipelines.filter(p => p.running).length;
         });
     }
 
@@ -61,17 +66,15 @@ export class StatusComponent implements OnInit {
     }
 
     getProcessors() {
-        this.pipelineElementService.getDataProcessors()
-            .subscribe(msg => {
-                this.addPipelineElementList(msg);
-            });
+        this.pipelineElementService.getDataProcessors().subscribe(msg => {
+            this.addPipelineElementList(msg);
+        });
     }
 
     getSinks() {
-        this.pipelineElementService.getDataSinks()
-            .subscribe(msg => {
-               this.addPipelineElementList(msg);
-            });
+        this.pipelineElementService.getDataSinks().subscribe(msg => {
+            this.addPipelineElementList(msg);
+        });
     }
 
     addPipelineElementList(msg) {
diff --git a/ui/src/app/home/home.component.html b/ui/src/app/home/home.component.html
index 1033ad917..abc7a2d5f 100644
--- a/ui/src/app/home/home.component.html
+++ b/ui/src/app/home/home.component.html
@@ -25,23 +25,41 @@
                 </div>
                 <div fxLayout="column" fxFlex="100" class="home-margin">
                     <div fxFlex="100" fxLayoutAlign="start center">
-                        <status fxFlex="100" *ngIf="showStatus"></status>
+                        <sp-status fxFlex="100" *ngIf="showStatus"></sp-status>
                     </div>
                     <div fxFlex="100">
-                        <div class="assemblyOptions sp-blue-bg mt-0 round-border" style="padding:5px;">
-                            <h4>{{appConstants.APP_NAME}} Modules</h4>
+                        <div
+                            class="assemblyOptions sp-blue-bg mt-0 round-border"
+                            style="padding: 5px"
+                        >
+                            <h4>{{ appConstants.APP_NAME }} Modules</h4>
                         </div>
                         <div class="sp-blue-border pt-0" fxLayout="column">
                             <div fxFlex="100" fxLayout="column">
                                 <mat-list class="modules-list">
-                                    <mat-list-item *ngFor="let link of serviceLinks"
-                                                   (click)="openLink(link)" class="list-item">
-                                        <div mat-list-avatar
-                                             class="pipeline-avatar sp-accent-bg">
-                                            <mat-icon>{{link.icon}}</mat-icon>
+                                    <mat-list-item
+                                        *ngFor="let link of serviceLinks"
+                                        (click)="openLink(link)"
+                                        class="list-item"
+                                    >
+                                        <div
+                                            mat-list-avatar
+                                            class="pipeline-avatar sp-accent-bg"
+                                        >
+                                            <mat-icon>{{ link.icon }}</mat-icon>
                                         </div>
-                                        <div mat-line style="font-weight:bold;font-size:14pt;">{{link.name}}</div>
-                                        <p mat-line class="module-description">{{link.description}}</p>
+                                        <div
+                                            mat-line
+                                            style="
+                                                font-weight: bold;
+                                                font-size: 14pt;
+                                            "
+                                        >
+                                            {{ link.name }}
+                                        </div>
+                                        <p mat-line class="module-description">
+                                            {{ link.description }}
+                                        </p>
                                         <mat-divider></mat-divider>
                                     </mat-list-item>
                                 </mat-list>
diff --git a/ui/src/app/home/home.component.scss b/ui/src/app/home/home.component.scss
index 5cf0033fe..c87f063fe 100644
--- a/ui/src/app/home/home.component.scss
+++ b/ui/src/app/home/home.component.scss
@@ -52,7 +52,6 @@
     color: var(--color-accent);
 }
 
-
 .home-margin {
     margin: 10px;
 }
@@ -66,15 +65,15 @@
 }
 
 .home-image-small {
-    height:150px;
-    width:100%;
+    height: 150px;
+    width: 100%;
 }
 
 .pipeline-avatar {
     align-items: center;
     justify-content: center;
     display: flex;
-    color:white;
+    color: white;
 }
 
 .pt-0 {
@@ -96,4 +95,3 @@
     background-color: var(--color-bg-2);
     cursor: pointer;
 }
-
diff --git a/ui/src/app/home/home.component.ts b/ui/src/app/home/home.component.ts
index 5cd56b7b9..d4eb359ca 100644
--- a/ui/src/app/home/home.component.ts
+++ b/ui/src/app/home/home.component.ts
@@ -27,26 +27,29 @@ import { UserRole } from '../_enums/user-role.enum';
 
 @Component({
     templateUrl: './home.component.html',
-    styleUrls: ['./home.component.scss']
+    styleUrls: ['./home.component.scss'],
 })
 export class HomeComponent implements OnInit {
-
     serviceLinks = [];
     showStatus = false;
 
-    constructor(private homeService: HomeService,
-                private authService: AuthService,
-                private sanitizer: DomSanitizer,
-                private router: Router,
-                public appConstants: AppConstants,
-                private breadcrumbService: SpBreadcrumbService) {
+    constructor(
+        private homeService: HomeService,
+        private authService: AuthService,
+        private sanitizer: DomSanitizer,
+        private router: Router,
+        public appConstants: AppConstants,
+        private breadcrumbService: SpBreadcrumbService,
+    ) {
         this.serviceLinks = this.homeService.getFilteredServiceLinks();
     }
 
     ngOnInit() {
         this.authService.user$.subscribe(userInfo => {
             const isAdmin = userInfo.roles.indexOf(UserRole.ROLE_ADMIN) > -1;
-            this.showStatus = isAdmin || userInfo.roles.indexOf(UserRole.ROLE_PIPELINE_ADMIN) > -1;
+            this.showStatus =
+                isAdmin ||
+                userInfo.roles.indexOf(UserRole.ROLE_PIPELINE_ADMIN) > -1;
         });
         this.breadcrumbService.updateBreadcrumb([]);
     }
@@ -62,5 +65,4 @@ export class HomeComponent implements OnInit {
             this.router.navigate([link.link.value]);
         }
     }
-
 }
diff --git a/ui/src/app/home/home.module.ts b/ui/src/app/home/home.module.ts
index c970700d8..fbd670fa6 100644
--- a/ui/src/app/home/home.module.ts
+++ b/ui/src/app/home/home.module.ts
@@ -38,15 +38,9 @@ import { PlatformServicesModule } from '@streampipes/platform-services';
         MatIconModule,
         MatDividerModule,
         MatListModule,
-        PlatformServicesModule
+        PlatformServicesModule,
     ],
-    declarations: [
-        HomeComponent,
-        StatusComponent
-    ],
-    providers: [
-        HomeService
-    ]
+    declarations: [HomeComponent, StatusComponent],
+    providers: [HomeService],
 })
-export class HomeModule {
-}
+export class HomeModule {}
diff --git a/ui/src/app/http-interceptor.ts b/ui/src/app/http-interceptor.ts
index 7adb933c5..b63dfbf00 100644
--- a/ui/src/app/http-interceptor.ts
+++ b/ui/src/app/http-interceptor.ts
@@ -17,10 +17,10 @@
  */
 
 import {
-  HttpEvent,
-  HttpHandler,
-  HttpInterceptor,
-  HttpRequest,
+    HttpEvent,
+    HttpHandler,
+    HttpInterceptor,
+    HttpRequest,
 } from '@angular/common/http';
 import { Observable } from 'rxjs';
 import { AuthService } from './services/auth.service';
@@ -28,18 +28,22 @@ import { Injectable } from '@angular/core';
 
 @Injectable()
 export class HttpInterceptorProvider implements HttpInterceptor {
+    constructor(private authService: AuthService) {}
 
-  constructor(private authService: AuthService) { }
-
-  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
-    if (this.authService.authToken$.getValue()) {
-      const clonedReq = req.clone({
-        headers: req.headers
-            .set('Authorization', 'Bearer ' + this.authService.authToken$.getValue()),
-      });
-      return next.handle(clonedReq);
-    } else {
-      return next.handle(req);
+    intercept(
+        req: HttpRequest<any>,
+        next: HttpHandler,
+    ): Observable<HttpEvent<any>> {
+        if (this.authService.authToken$.getValue()) {
+            const clonedReq = req.clone({
+                headers: req.headers.set(
+                    'Authorization',
+                    'Bearer ' + this.authService.authToken$.getValue(),
+                ),
+            });
+            return next.handle(clonedReq);
+        } else {
+            return next.handle(req);
+        }
     }
-  }
 }
diff --git a/ui/src/assets/templates/error.html b/ui/src/assets/templates/error.html
index 8607a294a..affeb1397 100644
--- a/ui/src/assets/templates/error.html
+++ b/ui/src/assets/templates/error.html
@@ -16,4 +16,4 @@
   ~
   -->
 
-<h1>Error</h1>
\ No newline at end of file
+<h1>Error</h1>
diff --git a/ui/src/environments/environment.prod.ts b/ui/src/environments/environment.prod.ts
index f907cd5fd..6f28d21ac 100644
--- a/ui/src/environments/environment.prod.ts
+++ b/ui/src/environments/environment.prod.ts
@@ -17,5 +17,5 @@
  */
 
 export const environment = {
-  production: true
+    production: true,
 };
diff --git a/ui/src/environments/environment.ts b/ui/src/environments/environment.ts
index c3570e501..70dcceb3d 100644
--- a/ui/src/environments/environment.ts
+++ b/ui/src/environments/environment.ts
@@ -17,6 +17,5 @@
  */
 
 export const environment = {
-  production: false
+    production: false,
 };
-
diff --git a/ui/src/index.html b/ui/src/index.html
index 7d1bca60c..9fba122e7 100644
--- a/ui/src/index.html
+++ b/ui/src/index.html
@@ -16,83 +16,89 @@
   ~
   -->
 
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <base href="/" />
+        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1" />
 
-<head>
-    <base href="/" />
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>Apache StreamPipes - Self-Service IIoT Toolbox</title>
 
-    <title>Apache StreamPipes - Self-Service IIoT Toolbox</title>
+        <link
+            rel="icon"
+            type="image/png"
+            sizes="96x96"
+            href="assets/img/favicon/favicon-96x96.png"
+        />
+        <meta name="theme-color" content="#ffffff" />
 
-    <link rel="icon" type="image/png" sizes="96x96" href="assets/img/favicon/favicon-96x96.png">
-    <meta name="theme-color" content="#ffffff">
-
-    <style type="text/css">
-
-        body {
-            margin: 0;
-        }
-
-        .app-loading {
-            display: flex;
-            flex-direction: column;
-            align-items: center;
-            justify-content: center;
-            height: 100vh;
-            width: 100%;
-            z-index: 80;
-        }
-
-        .logo-splash {
-            width: 50px;
-            height: 50px;
-        }
-
-        @keyframes heartbeat-anim
-        {
-            0% {
-                transform: scale( .75 );
-            }
-            20% {
-                transform: scale( 1 );
+        <style type="text/css">
+            body {
+                margin: 0;
             }
-            40% {
-                transform: scale( .75 );
-            }
-            60% {
-                transform: scale( 1 );
-            }
-            80% {
-                transform: scale( .75 );
+
+            .app-loading {
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+                justify-content: center;
+                height: 100vh;
+                width: 100%;
+                z-index: 80;
             }
-            100% {
-                transform: scale( .75 );
+
+            .logo-splash {
+                width: 50px;
+                height: 50px;
             }
-        }
 
-        .animated-logo {
-            width: 50px;
-            height: 50px;
-            animation: heartbeat-anim 1.5s infinite;
-        }
-    </style>
+            @keyframes heartbeat-anim {
+                0% {
+                    transform: scale(0.75);
+                }
+                20% {
+                    transform: scale(1);
+                }
+                40% {
+                    transform: scale(0.75);
+                }
+                60% {
+                    transform: scale(1);
+                }
+                80% {
+                    transform: scale(0.75);
+                }
+                100% {
+                    transform: scale(0.75);
+                }
+            }
 
-</head>
+            .animated-logo {
+                width: 50px;
+                height: 50px;
+                animation: heartbeat-anim 1.5s infinite;
+            }
+        </style>
+    </head>
 
-<body>
-<app-root>
-    <div style="height:100%;" role="main" tabindex="-1" flex>
-        <div class="sp-fade" style="min-height: 100vh; max-height: 100vh;">
-            <div class="app-loading">
-                <div class="animated-logo">
-                    <img src="/assets/img/favicon/favicon-96x96.png" class="logo-splash"/>
+    <body>
+        <sp-app-root>
+            <div style="height: 100%" role="main" tabindex="-1" flex>
+                <div
+                    class="sp-fade"
+                    style="min-height: 100vh; max-height: 100vh"
+                >
+                    <div class="app-loading">
+                        <div class="animated-logo">
+                            <img
+                                src="/assets/img/favicon/favicon-96x96.png"
+                                class="logo-splash"
+                            />
+                        </div>
+                    </div>
                 </div>
             </div>
-        </div>
-    </div>
-</app-root>
-</body>
+        </sp-app-root>
+    </body>
 </html>
diff --git a/ui/src/main.ts b/ui/src/main.ts
index 1c1d563f3..baec7ac21 100644
--- a/ui/src/main.ts
+++ b/ui/src/main.ts
@@ -19,11 +19,12 @@
 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
 import { environment } from './environments/environment';
 import { AppModule } from './app/appng5.module';
-import { enableProdMode } from "@angular/core";
+import { enableProdMode } from '@angular/core';
 
 if (environment.production) {
     enableProdMode();
 }
 
-platformBrowserDynamic().bootstrapModule(AppModule)
-    .catch(err => console.error(err));
\ No newline at end of file
+platformBrowserDynamic()
+    .bootstrapModule(AppModule)
+    .catch(err => console.error(err));
diff --git a/ui/src/polyfills.ts b/ui/src/polyfills.ts
index 0391f073c..9171f66f6 100644
--- a/ui/src/polyfills.ts
+++ b/ui/src/polyfills.ts
@@ -33,24 +33,30 @@
  */
 
 /***************************************************************************************************
-* BROWSER POLYFILLS
-*/
-
+ * BROWSER POLYFILLS
+ */
 
-let __zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseout', 'mousewheel', 'pointermove', 'keypress', 'keyup'];
+let __zone_symbol__BLACK_LISTED_EVENTS = [
+    'scroll',
+    'mouseenter',
+    'mouseleave',
+    'mousemove',
+    'mouseover',
+    'mouseout',
+    'mousewheel',
+    'pointermove',
+    'keypress',
+    'keyup',
+];
 let __Zone_disable_PromiseRejectionEvent = true;
 
-
-
 /***************************************************************************************************
  * Zone JS is required by default for Angular itself.
  */
-import 'zone.js';  // Included with Angular CLI.
-
-
+import 'zone.js'; // Included with Angular CLI.
 
 /***************************************************************************************************
  * APPLICATION IMPORTS
  */
 import 'reflect-metadata';
-(window as any).global = window;
\ No newline at end of file
+(window as any).global = window;
diff --git a/ui/src/test.ts b/ui/src/test.ts
index 6c1f1ac86..d36fde8ab 100644
--- a/ui/src/test.ts
+++ b/ui/src/test.ts
@@ -22,7 +22,7 @@ import 'zone.js/testing';
 import { getTestBed } from '@angular/core/testing';
 import {
     BrowserDynamicTestingModule,
-    platformBrowserDynamicTesting
+    platformBrowserDynamicTesting,
 } from '@angular/platform-browser-dynamic/testing';
 
 declare const require: any;
@@ -30,9 +30,10 @@ declare const require: any;
 // First, initialize the Angular testing environment.
 getTestBed().initTestEnvironment(
     BrowserDynamicTestingModule,
-    platformBrowserDynamicTesting(), {
-    teardown: { destroyAfterEach: false }
-}
+    platformBrowserDynamicTesting(),
+    {
+        teardown: { destroyAfterEach: false },
+    },
 );
 // Then we find all the tests.
 const context = require.context('./', true, /\.spec\.ts$/);
diff --git a/ui/src/tsconfig.app.json b/ui/src/tsconfig.app.json
index 79282039c..d0f5c0e93 100644
--- a/ui/src/tsconfig.app.json
+++ b/ui/src/tsconfig.app.json
@@ -4,12 +4,7 @@
     "outDir": "../out-tsc/app",
     "baseUrl": "./",
     "types": []
-  },
-  "files": [
-    "main.ts",
-    "polyfills.ts"
-  ],
-  "include": [
-    "src/**/*.d.ts"
-  ]
-}
\ No newline at end of file
+  },
+  "files": ["main.ts", "polyfills.ts"],
+  "include": ["src/**/*.d.ts"]
+}
diff --git a/ui/src/tsconfig.spec.json b/ui/src/tsconfig.spec.json
index 5bbe9f129..cda23d39f 100644
--- a/ui/src/tsconfig.spec.json
+++ b/ui/src/tsconfig.spec.json
@@ -4,17 +4,8 @@
     "outDir": "../out-tsc/spec",
     "baseUrl": "./",
     "module": "commonjs",
-    "types": [
-      "jasmine",
-      "node"
-    ]
+    "types": ["jasmine", "node"]
   },
-  "files": [
-    "test.ts",
-    "polyfills.ts"
-  ],
-  "include": [
-    "**/*.spec.ts",
-    "**/*.d.ts"
-  ]
+  "files": ["test.ts", "polyfills.ts"],
+  "include": ["**/*.spec.ts", "**/*.d.ts"]
 }
diff --git a/ui/tsconfig.json b/ui/tsconfig.json
index 3fd3d5f7a..28151e169 100644
--- a/ui/tsconfig.json
+++ b/ui/tsconfig.json
@@ -2,12 +2,8 @@
   "compileOnSave": false,
   "compilerOptions": {
     "paths": {
-      "@streampipes/platform-services": [
-        "dist/streampipes/platform-services"
-      ],
-      "@streampipes/shared-ui": [
-        "dist/streampipes/shared-ui"
-      ]
+      "@streampipes/platform-services": ["dist/streampipes/platform-services"],
+      "@streampipes/shared-ui": ["dist/streampipes/shared-ui"]
     },
     "downlevelIteration": true,
     "importHelpers": true,
@@ -20,16 +16,9 @@
     "experimentalDecorators": true,
     "target": "es2020",
     "allowSyntheticDefaultImports": true,
-    "typeRoots": [
-      "node_modules/@types"
-    ],
-    "types": [
-      "node"
-    ],
-    "lib": [
-      "es2021",
-      "dom"
-    ],
+    "typeRoots": ["node_modules/@types"],
+    "types": ["node"],
+    "lib": ["es2021", "dom"],
     "baseUrl": "./"
   }
 }
diff --git a/ui/tsconfig.spec.json b/ui/tsconfig.spec.json
index 6400fde7d..430cf757c 100644
--- a/ui/tsconfig.spec.json
+++ b/ui/tsconfig.spec.json
@@ -2,17 +2,8 @@
   "extends": "./tsconfig.json",
   "compilerOptions": {
     "outDir": "./out-tsc/spec",
-    "types": [
-      "jasmine",
-      "node"
-    ]
+    "types": ["jasmine", "node"]
   },
-  "files": [
-    "src/test.ts",
-    "src/polyfills.ts"
-  ],
-  "include": [
-    "src/**/*.spec.ts",
-    "src/**/*.d.ts"
-  ]
+  "files": ["src/test.ts", "src/polyfills.ts"],
+  "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
 }
diff --git a/ui/webpack.partial.base.js b/ui/webpack.partial.base.js
index 6e34715b4..30e8030b2 100644
--- a/ui/webpack.partial.base.js
+++ b/ui/webpack.partial.base.js
@@ -15,27 +15,24 @@
  *   limitations under the License.
  */
 
-const webpack = require('webpack')
+const webpack = require('webpack');
 const path = require('path');
 
-const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");
-const mf = require("@angular-architects/module-federation/webpack");
+const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
+const mf = require('@angular-architects/module-federation/webpack');
 const share = mf.share;
 
 const sharedMappings = new mf.SharedMappings();
-sharedMappings.register(
-    path.join(__dirname, 'tsconfig.json'),
-    [/* mapped paths to share */]);
-
+sharedMappings.register(path.join(__dirname, 'tsconfig.json'), [
+    /* mapped paths to share */
+]);
 
 module.exports = {
     module: {
-        rules: [
-            { test: /\.html$/, loader: 'raw-loader' }
-        ],
+        rules: [{ test: /\.html$/, loader: 'raw-loader' }],
     },
     experiments: {
-        outputModule: true
+        outputModule: true,
     },
     resolve: {
         alias: {
@@ -43,44 +40,125 @@ module.exports = {
             legacy: path.join(__dirname, 'src', 'assets', 'lib'),
         },
         fallback: {
-					"assert": false,
-					"stream": require.resolve("stream-browserify")
-        }
+            assert: false,
+            stream: require.resolve('stream-browserify'),
+        },
     },
     plugins: [
         new webpack.ProvidePlugin({
             process: 'process/browser',
         }),
         new ModuleFederationPlugin({
+            library: { type: 'module' },
 
-            library: { type: "module" },
-
-            name: "sp",
-            filename: "remoteEntry.js",
-            exposes: { },
+            name: 'sp',
+            filename: 'remoteEntry.js',
+            exposes: {},
 
             shared: share({
-                "@angular/core": { singleton: true, strictVersion: true, requiredVersion: 'auto', eager: true },
-                "@angular/common": { singleton: true, strictVersion: true, requiredVersion: 'auto' , eager: true},
-                "@angular/common/http": { singleton: true, strictVersion: true, requiredVersion: 'auto' , eager: true},
-                "@angular/forms": { singleton: true, strictVersion: true, requiredVersion: 'auto' , eager: true},
-                "@angular/router": { singleton: true, strictVersion: true, requiredVersion: 'auto' , eager: true},
-                "@angular/cdk": { singleton: true, strictVersion: true, requiredVersion: 'auto' , eager: true},
-                "@angular/cdk/overlay": { singleton: true, strictVersion: false, requiredVersion: 'auto', eager: true},
-                "@angular/cdk/portal": { singleton: true, strictVersion: false, requiredVersion: 'auto', eager: true},
-                "@angular/material": { singleton: true, strictVersion: true, requiredVersion:'auto', eager: true},
-                "@angular/material/core": { singleton: true, strictVersion: false, requiredVersion: 'auto', eager: true},
-                "@angular/material/menu": { singleton: true, strictVersion: false, requiredVersion: 'auto', eager: true},
-                "@angular/material/tooltip": { singleton: true, strictVersion: true, requiredVersion:'auto', eager: true },
-                "@angular/material/dialog": { singleton: true, strictVersion: true, requiredVersion:'auto', eager: true },
-                "@angular/material/select": { singleton: true, strictVersion: true, requiredVersion:'auto', eager: true },
-                "@angular/material/form-field": { singleton: true, strictVersion: true, requiredVersion:'auto', eager: true },
-                "@streampipes/shared-ui": { singleton: true, strictVersion: true, eager: true},
-                "@streampipes/platform-services": { singleton: true, strictVersion: true, eager: true},
-                ...sharedMappings.getDescriptors()
-            })
-
+                '@angular/core': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/common': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/common/http': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/forms': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/router': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/cdk': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/cdk/overlay': {
+                    singleton: true,
+                    strictVersion: false,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/cdk/portal': {
+                    singleton: true,
+                    strictVersion: false,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/core': {
+                    singleton: true,
+                    strictVersion: false,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/menu': {
+                    singleton: true,
+                    strictVersion: false,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/tooltip': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/dialog': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/select': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@angular/material/form-field': {
+                    singleton: true,
+                    strictVersion: true,
+                    requiredVersion: 'auto',
+                    eager: true,
+                },
+                '@streampipes/shared-ui': {
+                    singleton: true,
+                    strictVersion: true,
+                    eager: true,
+                },
+                '@streampipes/platform-services': {
+                    singleton: true,
+                    strictVersion: true,
+                    eager: true,
+                },
+                ...sharedMappings.getDescriptors(),
+            }),
         }),
-        sharedMappings.getPlugin()
-    ]
+        sharedMappings.getPlugin(),
+    ],
 };
diff --git a/ui/webpack.partial.js b/ui/webpack.partial.js
index 9243d5fd9..c0325d959 100644
--- a/ui/webpack.partial.js
+++ b/ui/webpack.partial.js
@@ -16,6 +16,6 @@
  *
  */
 
-module.exports = (env) => {
-    return require(`./webpack.partial.${env}.js`)
-}
\ No newline at end of file
+module.exports = env => {
+    return require(`./webpack.partial.${env}.js`);
+};
diff --git a/ui/webpack.partial.prod.js b/ui/webpack.partial.prod.js
index bdd0e80c5..e52d601bd 100644
--- a/ui/webpack.partial.prod.js
+++ b/ui/webpack.partial.prod.js
@@ -20,7 +20,5 @@ const { merge } = require('webpack-merge');
 const baseConfig = require('./webpack.partial.base.js');
 
 module.exports = merge(baseConfig, {
-    plugins: [
-        new CompressionPlugin()
-    ],
+    plugins: [new CompressionPlugin()],
 });


[streampipes] 04/04: ci: run e2e tests only when linting succeeds

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 7bd5f3e6204dd66b1ccd0637640a8a3766798b5e
Author: Samuel Abt <gi...@samuelabt.de>
AuthorDate: Wed Dec 21 23:11:21 2022 +0100

    ci: run e2e tests only when linting succeeds
---
 .github/workflows/pr-validation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml
index 34dc64f87..b92c5df09 100644
--- a/.github/workflows/pr-validation.yml
+++ b/.github/workflows/pr-validation.yml
@@ -60,7 +60,7 @@ jobs:
 
   run-cypress-e2e-tests:
     runs-on: ubuntu-latest
-    needs: [python-quality-checks, python-unit-tests]
+    needs: [python-quality-checks, python-unit-tests, run-format-and-lint-ui]
     steps:
       - name: Checkout
         uses: actions/checkout@v1