From a195fafa6b4557f29a86879c92e6c504948176b3 Mon Sep 17 00:00:00 2001 From: smuddyx Date: Fri, 21 May 2021 20:17:26 +0200 Subject: [PATCH] update tslint -> eslint --- .eslintrc.json | 59 + .prettierrc | 26 + angular.json | 15 +- e2e/src/app.e2e-spec.ts | 16 +- package-lock.json | 1143 ++++++++++++++--- package.json | 15 +- src/app/animations.ts | 45 +- src/app/app-routing.module.ts | 30 +- src/app/app.component.html | 8 +- src/app/app.component.spec.ts | 21 +- src/app/app.component.ts | 18 +- src/app/app.module.ts | 17 +- src/app/modules/brand/brand.component.spec.ts | 13 +- src/app/modules/brand/brand.component.ts | 14 +- src/app/modules/brand/brand.module.ts | 14 +- .../brand/new-user/new-user.component.html | 9 +- .../brand/new-user/new-user.component.spec.ts | 13 +- .../brand/new-user/new-user.component.ts | 4 +- src/app/modules/guest/guest.component.html | 9 +- src/app/modules/guest/guest.component.spec.ts | 13 +- src/app/modules/guest/guest.component.ts | 16 +- src/app/modules/guest/guest.module.ts | 17 +- .../monitor/legal/legal.component.html | 16 +- .../monitor/legal/legal.component.spec.ts | 13 +- .../monitor/legal/legal.component.ts | 2 +- .../monitor/logo/logo.component.html | 17 +- .../monitor/logo/logo.component.spec.ts | 13 +- .../monitor/logo/logo.component.ts | 14 +- .../monitor/monitor.component.html | 37 +- .../monitor/monitor.component.spec.ts | 13 +- .../presentation/monitor/monitor.component.ts | 46 +- .../presentation-routing.module.ts | 14 +- .../presentation/presentation.module.ts | 12 +- .../presentation/remote/remote.component.html | 67 +- .../remote/remote.component.spec.ts | 13 +- .../presentation/remote/remote.component.ts | 48 +- .../services/presentation.service.spec.ts | 4 +- .../services/presentation.service.ts | 8 +- .../list/list-item/list-item.component.html | 4 +- .../list-item/list-item.component.spec.ts | 13 +- .../list/list-item/list-item.component.ts | 2 +- .../modules/shows/list/list.component.html | 27 +- .../modules/shows/list/list.component.spec.ts | 13 +- src/app/modules/shows/list/list.component.ts | 5 +- src/app/modules/shows/new/new.component.html | 11 +- .../modules/shows/new/new.component.spec.ts | 13 +- src/app/modules/shows/new/new.component.ts | 6 +- .../shows/services/docx.service.spec.ts | 4 +- .../modules/shows/services/docx.service.ts | 73 +- .../shows/services/show-data.service.spec.ts | 6 +- .../shows/services/show-data.service.ts | 8 +- .../services/show-song-data.service.spec.ts | 4 +- .../shows/services/show-song-data.service.ts | 11 +- .../shows/services/show-song.service.spec.ts | 4 +- .../shows/services/show-song.service.ts | 12 +- .../shows/services/show.service.spec.ts | 29 +- .../modules/shows/services/show.service.ts | 23 +- src/app/modules/shows/services/show.ts | 2 - .../modules/shows/show/show.component.html | 73 +- .../modules/shows/show/show.component.spec.ts | 13 +- src/app/modules/shows/show/show.component.ts | 41 +- .../shows/show/song/song.component.html | 47 +- .../shows/show/song/song.component.spec.ts | 13 +- .../modules/shows/show/song/song.component.ts | 46 +- src/app/modules/shows/shows-routing.module.ts | 14 +- src/app/modules/shows/shows.module.ts | 6 +- .../songs/services/file-data.service.spec.ts | 6 +- .../songs/services/file-data.service.ts | 9 +- .../songs/services/file.service.spec.ts | 4 +- .../modules/songs/services/file.service.ts | 13 +- src/app/modules/songs/services/fileBase.ts | 3 +- src/app/modules/songs/services/key.helper.ts | 231 ++-- .../songs/services/song-data.service.spec.ts | 42 +- .../songs/services/song-data.service.ts | 7 +- .../songs/services/song.service.spec.ts | 39 +- .../modules/songs/services/song.service.ts | 74 +- .../services/text-rendering.service.spec.ts | 87 +- .../songs/services/text-rendering.service.ts | 38 +- .../songs/services/transpose.service.spec.ts | 4 +- .../songs/services/transpose.service.ts | 25 +- .../songs/services/upload.service.spec.ts | 6 +- .../modules/songs/services/upload.service.ts | 22 +- src/app/modules/songs/services/upload.ts | 15 +- .../song-list/filter/filter.component.html | 22 +- .../song-list/filter/filter.component.spec.ts | 13 +- .../song-list/filter/filter.component.ts | 56 +- .../list-item/list-item.component.html | 38 +- .../list-item/list-item.component.spec.ts | 13 +- .../list-item/list-item.component.ts | 13 +- .../songs/song-list/song-list.component.html | 6 +- .../song-list/song-list.component.spec.ts | 29 +- .../songs/song-list/song-list.component.ts | 15 +- .../songs/song-list/song-list.module.ts | 6 +- .../edit/edit-file/edit-file.component.html | 23 +- .../edit-file/edit-file.component.spec.ts | 13 +- .../edit/edit-file/edit-file.component.ts | 28 +- .../edit/edit-file/file/file.component.html | 2 +- .../edit-file/file/file.component.spec.ts | 13 +- .../edit/edit-file/file/file.component.ts | 10 +- .../songs/song/edit/edit-song.guard.spec.ts | 4 +- .../songs/song/edit/edit-song.guard.ts | 9 +- .../edit/edit-song/edit-song.component.html | 101 +- .../edit-song/edit-song.component.spec.ts | 13 +- .../edit/edit-song/edit-song.component.ts | 72 +- .../save-dialog/save-dialog.component.html | 4 +- .../save-dialog/save-dialog.component.spec.ts | 13 +- .../save-dialog/save-dialog.component.ts | 14 +- .../songs/song/edit/edit.component.spec.ts | 13 +- .../modules/songs/song/edit/edit.component.ts | 2 +- .../modules/songs/song/edit/edit.module.ts | 7 +- .../songs/song/edit/edit.service.spec.ts | 6 +- .../modules/songs/song/edit/edit.service.ts | 6 +- .../song/edit/history/history.component.html | 4 +- .../edit/history/history.component.spec.ts | 13 +- .../song/edit/history/history.component.ts | 25 +- .../songs/song/file/file.component.html | 4 +- .../songs/song/file/file.component.spec.ts | 13 +- .../modules/songs/song/file/file.component.ts | 20 +- .../modules/songs/song/new/new.component.html | 6 +- .../songs/song/new/new.component.spec.ts | 13 +- .../modules/songs/song/new/new.component.ts | 29 +- src/app/modules/songs/song/new/new.module.ts | 15 +- .../modules/songs/song/song.component.html | 79 +- .../modules/songs/song/song.component.spec.ts | 20 +- src/app/modules/songs/song/song.component.ts | 16 +- src/app/modules/songs/song/song.module.ts | 6 +- src/app/modules/songs/songs-routing.module.ts | 16 +- src/app/modules/songs/songs.module.ts | 12 +- src/app/modules/user/info/info.component.html | 24 +- .../modules/user/info/info.component.spec.ts | 13 +- src/app/modules/user/info/info.component.ts | 8 +- src/app/modules/user/info/role.pipe.spec.ts | 2 +- src/app/modules/user/info/role.pipe.ts | 8 +- .../user/info/users/user/user.component.html | 22 +- .../info/users/user/user.component.spec.ts | 13 +- .../user/info/users/user/user.component.ts | 16 +- .../user/info/users/users.component.html | 2 +- .../user/info/users/users.component.spec.ts | 13 +- .../user/info/users/users.component.ts | 4 +- .../user/login/auth-message.pipe.spec.ts | 2 +- .../modules/user/login/auth-message.pipe.ts | 8 +- .../modules/user/login/login.component.html | 56 +- .../user/login/login.component.spec.ts | 13 +- src/app/modules/user/login/login.component.ts | 18 +- .../user/logout/logout.component.spec.ts | 13 +- .../modules/user/logout/logout.component.ts | 7 +- src/app/modules/user/new/new.component.html | 10 +- .../modules/user/new/new.component.spec.ts | 13 +- src/app/modules/user/new/new.component.ts | 14 +- .../password-send.component.html | 4 +- .../password-send.component.spec.ts | 13 +- .../password-send/password-send.component.ts | 14 +- .../user/password/password.component.html | 14 +- .../user/password/password.component.spec.ts | 13 +- .../user/password/password.component.ts | 21 +- src/app/modules/user/user-routing.module.ts | 20 +- src/app/modules/user/user.module.ts | 8 +- src/app/services/config.service.spec.ts | 4 +- src/app/services/config.service.ts | 5 +- src/app/services/db.service.spec.ts | 6 +- src/app/services/db.service.ts | 12 +- src/app/services/delay.ts | 2 +- .../services/global-settings.service.spec.ts | 4 +- src/app/services/global-settings.service.ts | 8 +- src/app/services/scroll.service.spec.ts | 4 +- src/app/services/scroll.service.ts | 16 +- src/app/services/user/owner.directive.ts | 23 +- src/app/services/user/owner.module.ts | 7 +- src/app/services/user/role.directive.ts | 15 +- src/app/services/user/role.module.ts | 7 +- .../user/user-name/user-name.component.html | 2 +- .../user-name/user-name.component.spec.ts | 13 +- .../user/user-name/user-name.component.ts | 11 +- .../user/user-name/user-name.module.ts | 5 +- src/app/services/user/user.service.spec.ts | 6 +- src/app/services/user/user.service.ts | 57 +- .../add-song/add-song.component.html | 8 +- .../add-song/add-song.component.spec.ts | 13 +- .../components/add-song/add-song.component.ts | 12 +- .../components/add-song/add-song.module.ts | 16 +- .../application-frame.module.ts | 22 +- .../navigation/brand/brand.component.html | 16 +- .../navigation/brand/brand.component.spec.ts | 13 +- .../navigation/brand/brand.component.ts | 14 +- .../navigation/filter/filter.component.html | 6 +- .../filter/filter.component.spec.ts | 13 +- .../navigation/filter/filter.component.ts | 11 +- .../navigation/link/link.component.html | 3 +- .../navigation/link/link.component.spec.ts | 13 +- .../navigation/link/link.component.ts | 2 +- .../navigation/navigation.component.html | 27 +- .../navigation/navigation.component.spec.ts | 13 +- .../navigation/navigation.component.ts | 11 +- .../button-row/button-row.component.spec.ts | 13 +- .../button-row/button-row.component.ts | 14 +- .../button-row/button-row.module.ts | 8 +- .../components/button/button.component.html | 4 +- .../button/button.component.spec.ts | 13 +- .../components/button/button.component.ts | 5 +- .../components/button/button.module.ts | 14 +- .../components/card/card.component.html | 9 +- .../components/card/card.component.spec.ts | 13 +- .../components/card/card.component.ts | 8 +- .../components/card/card.module.ts | 11 +- .../list-header/list-header.component.html | 7 +- .../list-header/list-header.component.spec.ts | 13 +- .../list-header/list-header.component.ts | 17 +- .../list-header/list-header.module.ts | 15 +- .../components/logo/logo.component.html | 69 +- .../components/logo/logo.component.spec.ts | 13 +- .../components/logo/logo.component.ts | 14 +- .../components/logo/logo.module.ts | 12 +- .../menu-button/menu-button.component.spec.ts | 13 +- .../menu-button/menu-button.component.ts | 2 +- .../menu-button/menu-button.module.ts | 14 +- .../components/song-text/animation.ts | 25 +- .../song-text/song-text.component.html | 69 +- .../song-text/song-text.component.spec.ts | 13 +- .../song-text/song-text.component.ts | 32 +- .../components/song-text/song-text.module.ts | 10 +- .../autofocus/autofocus.directive.ts | 12 +- .../directives/autofocus/autofocus.module.ts | 12 +- .../widget-modules/guards/role.guard.spec.ts | 4 +- src/app/widget-modules/guards/role.guard.ts | 14 +- .../key-translator/key-translator.module.ts | 12 +- .../pipes/key-translator/key.pipe.spec.ts | 2 +- .../pipes/key-translator/key.pipe.ts | 6 +- .../legal-owner-translator.module.ts | 12 +- .../legal-owner.pipe.spec.ts | 2 +- .../legal-owner.pipe.ts | 6 +- .../legal-type-translator.module.ts | 12 +- .../legal-type.pipe.spec.ts | 2 +- .../legal-type-translator/legal-type.pipe.ts | 6 +- .../section-type-translator.module.ts | 12 +- .../section-type.pipe.spec.ts | 2 +- .../section-type.pipe.ts | 6 +- .../show-type-translater.module.ts | 12 +- .../show-type.pipe.spec.ts | 2 +- .../show-type-translater/show-type.pipe.ts | 19 +- .../song-type-translater.module.ts | 12 +- .../song-type.pipe.spec.ts | 2 +- .../song-type-translater/song-type.pipe.ts | 6 +- .../status-translater.module.ts | 12 +- .../status-translater/status.pipe.spec.ts | 2 +- .../pipes/status-translater/status.pipe.ts | 6 +- src/environments/environment.prod.ts | 2 +- src/environments/environment.ts | 2 +- src/index.html | 3 +- src/main.ts | 3 +- src/polyfills.ts | 1 - src/test.ts | 8 +- tslint.json | 155 --- 252 files changed, 3080 insertions(+), 2420 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .prettierrc delete mode 100644 tslint.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..be7ad60 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,59 @@ +{ + "root": true, + "ignorePatterns": [ + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json", + "e2e/tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates", + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:prettier/recommended" + ], + "rules": { + "@typescript-eslint/explicit-member-accessibility": "error", + "@angular-eslint/component-selector": [ + "error", + { + "prefix": "app", + "style": "kebab-case", + "type": "element" + } + ], + "@typescript-eslint/unbound-method": [ + "off" + ], + "@angular-eslint/directive-selector": [ + "error", + { + "prefix": "app", + "style": "camelCase", + "type": "attribute" + } + ] + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a1bafcd --- /dev/null +++ b/.prettierrc @@ -0,0 +1,26 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "quoteProps": "as-needed", + "trailingComma": "es5", + "bracketSpacing": false, + "arrowParens": "avoid", + "jsxBracketSameLine": false, + "printWidth": 200, + "overrides": [ + { + "files": "*.component.html", + "options": { + "parser": "angular" + } + }, + { + "files": "*.html", + "options": { + "parser": "html" + } + } + ] +} diff --git a/angular.json b/angular.json index c780e89..125040b 100644 --- a/angular.json +++ b/angular.json @@ -116,15 +116,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" ] } }, @@ -145,6 +141,7 @@ }, "defaultProject": "wgenerator", "cli": { - "analytics": "4047dcd7-89f4-402f-958e-e365a5505c55" + "analytics": "4047dcd7-89f4-402f-958e-e365a5505c55", + "defaultCollection": "@angular-eslint/schematics" } } diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts index 9800f38..9129c61 100644 --- a/e2e/src/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -1,5 +1,5 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; +import {AppPage} from './app.po'; +import {browser, logging} from 'protractor'; describe('workspace-project App', () => { let page: AppPage; @@ -9,15 +9,17 @@ describe('workspace-project App', () => { }); it('should display welcome message', () => { - page.navigateTo(); - expect(page.getTitleText()).toEqual('wgenerator app is running!'); + void page.navigateTo(); + void expect(page.getTitleText()).toEqual('wgenerator app is running!'); }); afterEach(async () => { // Assert that there are no errors emitted from the browser const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); + void expect(logs).not.toContain( + jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry) + ); }); }); diff --git a/package-lock.json b/package-lock.json index 6828091..64e9095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -515,6 +515,98 @@ } } }, + "@angular-eslint/builder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-12.0.0.tgz", + "integrity": "sha512-gvvXQDXXi0gsWZ25KyMqF/1b3AaX+CJbpVgTPqxJdEx4euvmG/m3993ynmpf+Kc+F+aI2O9W4TUbDbbLWoCjIA==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-12.0.0.tgz", + "integrity": "sha512-osdJdMu8bYFv9WGhC04AwRcbeKq4sxCQnShV7NiF0xkgNG9KqDaStytVhPjJFn2Ja1QhfiTGlcFFk4D/9aruog==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.23.0" + } + }, + "@angular-eslint/eslint-plugin-template": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-12.0.0.tgz", + "integrity": "sha512-RF8PwN2A3U4ihd7sKYUM8wgPj46M30reziLl8CPPhN3H5Hn46nksmKmHRbPNakH2gW0Ba7NIxy+ocqUy0fQpcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.23.0", + "aria-query": "^4.2.2", + "axobject-query": "^2.2.0" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + } + } + }, + "@angular-eslint/schematics": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-12.0.0.tgz", + "integrity": "sha512-AwYEVuAQLJfyIF5vxBL98a67ecF9U25pQSIg0xCY6DeDpIaGdORr4yg2rGYy8fTlzDQo6BctKZQOTiVX3Y3uew==", + "dev": true, + "requires": { + "@angular-eslint/eslint-plugin": "12.0.0", + "@angular-eslint/eslint-plugin-template": "12.0.0", + "ignore": "5.1.8", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + } + } + }, + "@angular-eslint/template-parser": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-12.0.0.tgz", + "integrity": "sha512-gl5ansA2a8LY6TEjhe0k8NiQJJdEQPjjqpysO1Rpt3NWUYQkFMt+1+AnUyokHB1TU3/11dHRUjVWXj+pMtTIAA==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.0" + } + }, "@angular/animations": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.0.1.tgz", @@ -3233,6 +3325,16 @@ "regenerator-runtime": "^0.13.4" } }, + "@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, "@babel/types": { "version": "7.9.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", @@ -3256,6 +3358,70 @@ "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, + "@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "@firebase/analytics": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", @@ -4137,6 +4303,159 @@ } } }, + "@typescript-eslint/eslint-plugin": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz", + "integrity": "sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.23.0", + "@typescript-eslint/scope-manager": "4.23.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz", + "integrity": "sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.23.0", + "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/typescript-estree": "4.23.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.23.0.tgz", + "integrity": "sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.23.0", + "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/typescript-estree": "4.23.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz", + "integrity": "sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/visitor-keys": "4.23.0" + } + }, + "@typescript-eslint/types": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.23.0.tgz", + "integrity": "sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz", + "integrity": "sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/visitor-keys": "4.23.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz", + "integrity": "sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.23.0", + "eslint-visitor-keys": "^2.0.0" + } + }, "@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -4348,6 +4667,12 @@ "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", "dev": true }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -4526,12 +4851,6 @@ "picomatch": "^2.0.4" } }, - "app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", - "dev": true - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -4603,16 +4922,6 @@ "sprintf-js": "~1.0.2" } }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -4694,10 +5003,10 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -4830,15 +5139,6 @@ } } }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, "babel-loader": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", @@ -5306,12 +5606,6 @@ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -5707,66 +6001,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "codelyzer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz", - "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", - "dev": true, - "requires": { - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "app-root-path": "^3.0.0", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "rxjs": "^6.5.3", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2", - "tslib": "^1.10.0", - "zone.js": "~0.10.3" - }, - "dependencies": { - "@angular/compiler": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", - "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", - "dev": true - }, - "@angular/core": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", - "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", - "dev": true - } - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -6138,6 +6372,12 @@ } } }, + "core-js-pure": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.12.1.tgz", + "integrity": "sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -6684,16 +6924,6 @@ "nth-check": "^2.0.0" } }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, "css-tree": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", @@ -6718,15 +6948,6 @@ "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", "dev": true }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "X.X.X" - } - }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", @@ -6871,12 +7092,6 @@ "type": "^1.0.1" } }, - "damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -7163,6 +7378,15 @@ "buffer-indexof": "^1.0.0" } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "docx": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/docx/-/docx-6.0.3.tgz", @@ -7457,6 +7681,15 @@ } } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -7582,6 +7815,265 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7592,12 +8084,77 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -7973,6 +8530,12 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "fast-glob": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", @@ -7993,6 +8556,12 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fast-text-encoding": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz", @@ -8016,12 +8585,6 @@ } } }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "fastq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", @@ -8048,6 +8611,15 @@ "escape-string-regexp": "^1.0.5" } }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -8497,6 +9069,33 @@ } } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", @@ -8622,6 +9221,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "fuzzy": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", @@ -10466,6 +11071,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -10943,6 +11554,16 @@ "klona": "^2.0.4" } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "license-webpack-plugin": { "version": "2.3.17", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.17.tgz", @@ -11037,6 +11658,12 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -11153,6 +11780,12 @@ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -11865,6 +12498,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "needle": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", @@ -12419,6 +13058,20 @@ } } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "ora": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", @@ -14509,12 +15162,33 @@ "uniq": "^1.0.1" } }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -15164,6 +15838,12 @@ "define-properties": "^1.1.3" } }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "registry-auth-token": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", @@ -15679,23 +16359,6 @@ } } }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -15901,6 +16564,49 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -16867,6 +17573,78 @@ "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", + "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -17264,64 +18042,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -17343,6 +18063,15 @@ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "type-fest": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", @@ -17748,6 +18477,12 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", @@ -18454,6 +19189,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", diff --git a/package.json b/package.json index 619cadf..625e49c 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "scripts": { "start": "ng serve --aot", "build": "ng build", - "deploy": "ng build --prod && firebase deploy", + "deploy": "npm i && ng build --prod && firebase deploy", "test": "ng test", "lint": "ng lint --fix", "postinstall": "ngcc" @@ -39,13 +39,22 @@ "devDependencies": { "@angular-devkit/architect": "0.1200.1", "@angular-devkit/build-angular": "~12.0.1", + "@angular-eslint/builder": "12.0.0", + "@angular-eslint/eslint-plugin": "12.0.0", + "@angular-eslint/eslint-plugin-template": "12.0.0", + "@angular-eslint/schematics": "12.0.0", + "@angular-eslint/template-parser": "12.0.0", "@angular/cli": "~12.0.1", "@angular/compiler-cli": "~12.0.1", "@angular/language-service": "~12.0.1", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", "@types/node": "^12.12.36", - "codelyzer": "^6.0.0", + "@typescript-eslint/eslint-plugin": "4.23.0", + "@typescript-eslint/parser": "4.23.0", + "eslint": "^7.26.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^3.4.0", "firebase-tools": "^7.12.0", "fuzzy": "^0.1.3", "inquirer": "^6.2.2", @@ -57,10 +66,10 @@ "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", + "prettier": "^2.3.0", "protractor": "~7.0.0", "swiper": "^6.6.2", "ts-node": "~7.0.0", - "tslint": "~6.1.0", "typescript": "~4.2.4" } } diff --git a/src/app/animations.ts b/src/app/animations.ts index 618905d..3b64ebd 100644 --- a/src/app/animations.ts +++ b/src/app/animations.ts @@ -3,23 +3,20 @@ import {animate, query, state, style, transition, trigger} from '@angular/animat export const fade = [ // the fade-in/fade-out animation. trigger('fade', [ - // the "in" style determines the "resting" state of the element when it is visible. state('in', style({opacity: 1, transform: 'translateY(0px)'})), // fade in when created. this could also be written as transition('void => *') - transition(':enter', [ - style({opacity: 0, transform: 'translateY(-10px)'}), - animate(200) - ]), - ]) + transition(':enter', [style({opacity: 0, transform: 'translateY(-10px)'}), animate(200)]), + ]), ]; -export const fader = - trigger('fader', [ - transition('* <=> *', [ - // Set a default style for enter and leave - query(':enter, :leave', [ +export const fader = trigger('fader', [ + transition('* <=> *', [ + // Set a default style for enter and leave + query( + ':enter, :leave', + [ style({ position: 'absolute', left: 0, @@ -27,10 +24,22 @@ export const fader = opacity: 0, transform: 'scale(1) translateY(-10px)', }), - ], {optional: true}), - // Animate the new page in - query(':enter', [ - animate('200ms ease', style({opacity: 1, transform: 'scale(1) translateY(0)'})), - ], {optional: true}), - ]), - ]); + ], + {optional: true} + ), + // Animate the new page in + query( + ':enter', + [ + animate( + '200ms ease', + style({ + opacity: 1, + transform: 'scale(1) translateY(0)', + }) + ), + ], + {optional: true} + ), + ]), +]); diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index b267dcf..e73e6aa 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -7,7 +7,7 @@ const routes: Routes = [ { path: '', redirectTo: 'songs', - pathMatch: 'full' + pathMatch: 'full', }, { path: 'songs', @@ -15,8 +15,8 @@ const routes: Routes = [ canActivate: [AngularFireAuthGuard, RoleGuard], data: { authGuardPipe: () => redirectUnauthorizedTo(['user', 'login']), - requiredRoles: ['user'] - } + requiredRoles: ['user'], + }, }, { path: 'shows', @@ -24,8 +24,8 @@ const routes: Routes = [ canActivate: [AngularFireAuthGuard, RoleGuard], data: { authGuardPipe: () => redirectUnauthorizedTo(['user', 'login']), - requiredRoles: ['leader'] - } + requiredRoles: ['leader'], + }, }, { path: 'presentation', @@ -33,12 +33,12 @@ const routes: Routes = [ canActivate: [AngularFireAuthGuard, RoleGuard], data: { authGuardPipe: () => redirectUnauthorizedTo(['user', 'login']), - requiredRoles: ['presenter'] - } + requiredRoles: ['presenter'], + }, }, { path: 'user', - loadChildren: () => import('./modules/user/user.module').then(m => m.UserModule) + loadChildren: () => import('./modules/user/user.module').then(m => m.UserModule), }, { path: 'brand', @@ -47,12 +47,16 @@ const routes: Routes = [ { path: 'guest', loadChildren: () => import('./modules/guest/guest.module').then(m => m.GuestModule), - } + }, ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules, relativeLinkResolution: 'legacy' })], - exports: [RouterModule] + imports: [ + RouterModule.forRoot(routes, { + preloadingStrategy: PreloadAllModules, + relativeLinkResolution: 'legacy', + }), + ], + exports: [RouterModule], }) -export class AppRoutingModule { -} +export class AppRoutingModule {} diff --git a/src/app/app.component.html b/src/app/app.component.html index dae8e7c..9ea7490 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,6 +1,10 @@ -
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index bbd6193..18cbb95 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -3,20 +3,17 @@ import {RouterTestingModule} from '@angular/router/testing'; import {AppComponent} from './app.component'; describe('AppComponent', () => { - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterTestingModule - ], - declarations: [ - AppComponent - ], - }).compileComponents(); - })); + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AppComponent], + }).compileComponents(); + }) + ); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app).toBeTruthy(); + void expect(fixture.debugElement.componentInstance).toBeTruthy(); }); }); diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 5b8ca96..ff0513c 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -7,30 +7,24 @@ import {PerfectScrollbarComponent} from 'ngx-perfect-scrollbar'; selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.less'], - animations: [fader] + animations: [fader], }) export class AppComponent implements OnInit { + @ViewChild('scrollbar', {static: false}) public scrollbar: PerfectScrollbarComponent; - @ViewChild('scrollbar', {static: false}) scrollbar: PerfectScrollbarComponent; - - constructor(private scrollService: ScrollService) { + public constructor(private scrollService: ScrollService) { scrollService.restoreScrollPosition$.subscribe(pos => { - if (this.scrollbar && pos) { - // this.scrollbar.scrollTo(pos, 0); - this.scrollbar.directiveRef.scrollTo(0, pos, 300); - // debugger; - } + if (this.scrollbar && pos) this.scrollbar.directiveRef.scrollTo(0, pos, 300); }); } - public static hideLoader = () => document.querySelector('#load-bg').classList.add('hidden'); + public static hideLoader: () => void = () => document.querySelector('#load-bg').classList.add('hidden'); public ngOnInit(): void { setTimeout(() => AppComponent.hideLoader(), 800); - } - onScoll($event: { srcElement: { scrollTop: number } }) { + public onScoll($event: {srcElement: {scrollTop: number}}): void { this.scrollService.saveScrollPosition($event.srcElement.scrollTop); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d2bc0b2..78e0fdf 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -18,14 +18,14 @@ import {FontAwesomeModule} from '@fortawesome/angular-fontawesome'; import {PerfectScrollbarModule} from 'ngx-perfect-scrollbar'; @NgModule({ - declarations: [ - AppComponent - ], + declarations: [AppComponent], imports: [ BrowserModule, BrowserAnimationsModule, AppRoutingModule, - ServiceWorkerModule.register('ngsw-worker.js', {enabled: environment.production}), + ServiceWorkerModule.register('ngsw-worker.js', { + enabled: environment.production, + }), BrowserAnimationsModule, ApplicationFrameModule, @@ -38,13 +38,8 @@ import {PerfectScrollbarModule} from 'ngx-perfect-scrollbar'; AngularFireAuthGuardModule, FontAwesomeModule, PerfectScrollbarModule, - - ], - providers: [ - {provide: MAT_DATE_LOCALE, useValue: 'de-DE'}, ], + providers: [{provide: MAT_DATE_LOCALE, useValue: 'de-DE'}], bootstrap: [AppComponent], - }) -export class AppModule { -} +export class AppModule {} diff --git a/src/app/modules/brand/brand.component.spec.ts b/src/app/modules/brand/brand.component.spec.ts index 25bc972..141adc0 100644 --- a/src/app/modules/brand/brand.component.spec.ts +++ b/src/app/modules/brand/brand.component.spec.ts @@ -6,12 +6,13 @@ describe('BrandComponent', () => { let component: BrandComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [BrandComponent] + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + declarations: [BrandComponent], + }).compileComponents(); }) - .compileComponents(); - })); + ); beforeEach(() => { fixture = TestBed.createComponent(BrandComponent); @@ -20,6 +21,6 @@ describe('BrandComponent', () => { }); it('should create', () => { - expect(component).toBeTruthy(); + void expect(component).toBeTruthy(); }); }); diff --git a/src/app/modules/brand/brand.component.ts b/src/app/modules/brand/brand.component.ts index c7f3e34..603d0b1 100644 --- a/src/app/modules/brand/brand.component.ts +++ b/src/app/modules/brand/brand.component.ts @@ -1,16 +1,8 @@ -import {Component, OnInit} from '@angular/core'; +import {Component} from '@angular/core'; @Component({ selector: 'app-brand', templateUrl: './brand.component.html', - styleUrls: ['./brand.component.less'] + styleUrls: ['./brand.component.less'], }) -export class BrandComponent implements OnInit { - - constructor() { - } - - ngOnInit(): void { - } - -} +export class BrandComponent {} diff --git a/src/app/modules/brand/brand.module.ts b/src/app/modules/brand/brand.module.ts index 4b9c96d..644f393 100644 --- a/src/app/modules/brand/brand.module.ts +++ b/src/app/modules/brand/brand.module.ts @@ -5,26 +5,20 @@ import {RouterModule, Routes} from '@angular/router'; import {LogoModule} from '../../widget-modules/components/logo/logo.module'; import {NewUserComponent} from './new-user/new-user.component'; - const routes: Routes = [ { path: '', pathMatch: 'full', - component: BrandComponent + component: BrandComponent, }, { path: 'new-user', - component: NewUserComponent + component: NewUserComponent, }, ]; @NgModule({ declarations: [BrandComponent, NewUserComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - LogoModule - ] + imports: [CommonModule, RouterModule.forChild(routes), LogoModule], }) -export class BrandModule { -} +export class BrandModule {} diff --git a/src/app/modules/brand/new-user/new-user.component.html b/src/app/modules/brand/new-user/new-user.component.html index 1bd0913..842a330 100644 --- a/src/app/modules/brand/new-user/new-user.component.html +++ b/src/app/modules/brand/new-user/new-user.component.html @@ -1,8 +1,11 @@
-
+
WILLKOMMEN
-
{{user.name}}
-
Es wurden noch keine Berechtigungen zugeteilt, bitte wende Dich an den Administrator!
+
{{ user.name }}
+
+ Es wurden noch keine Berechtigungen zugeteilt, bitte wende Dich an den + Administrator! +
diff --git a/src/app/modules/brand/new-user/new-user.component.spec.ts b/src/app/modules/brand/new-user/new-user.component.spec.ts index 238a5ca..dfb17e4 100644 --- a/src/app/modules/brand/new-user/new-user.component.spec.ts +++ b/src/app/modules/brand/new-user/new-user.component.spec.ts @@ -6,12 +6,13 @@ describe('NewUserComponent', () => { let component: NewUserComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [NewUserComponent] + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + declarations: [NewUserComponent], + }).compileComponents(); }) - .compileComponents(); - })); + ); beforeEach(() => { fixture = TestBed.createComponent(NewUserComponent); @@ -20,6 +21,6 @@ describe('NewUserComponent', () => { }); it('should create', () => { - expect(component).toBeTruthy(); + void expect(component).toBeTruthy(); }); }); diff --git a/src/app/modules/brand/new-user/new-user.component.ts b/src/app/modules/brand/new-user/new-user.component.ts index cef247a..39ceb1c 100644 --- a/src/app/modules/brand/new-user/new-user.component.ts +++ b/src/app/modules/brand/new-user/new-user.component.ts @@ -6,12 +6,12 @@ import {User} from '../../../services/user/user'; @Component({ selector: 'app-new-user', templateUrl: './new-user.component.html', - styleUrls: ['./new-user.component.less'] + styleUrls: ['./new-user.component.less'], }) export class NewUserComponent { public user$: Observable; - constructor(private userService: UserService) { + public constructor(private userService: UserService) { this.user$ = userService.user$; } } diff --git a/src/app/modules/guest/guest.component.html b/src/app/modules/guest/guest.component.html index eef822d..246bb38 100644 --- a/src/app/modules/guest/guest.component.html +++ b/src/app/modules/guest/guest.component.html @@ -1,8 +1,11 @@ -
+
- +
diff --git a/src/app/modules/guest/guest.component.spec.ts b/src/app/modules/guest/guest.component.spec.ts index 190bd11..d2cdcb3 100644 --- a/src/app/modules/guest/guest.component.spec.ts +++ b/src/app/modules/guest/guest.component.spec.ts @@ -6,12 +6,13 @@ describe('GuestComponent', () => { let component: GuestComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [GuestComponent] + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + declarations: [GuestComponent], + }).compileComponents(); }) - .compileComponents(); - })); + ); beforeEach(() => { fixture = TestBed.createComponent(GuestComponent); @@ -20,6 +21,6 @@ describe('GuestComponent', () => { }); it('should create', () => { - expect(component).toBeTruthy(); + void expect(component).toBeTruthy(); }); }); diff --git a/src/app/modules/guest/guest.component.ts b/src/app/modules/guest/guest.component.ts index 1071d83..09ea42e 100644 --- a/src/app/modules/guest/guest.component.ts +++ b/src/app/modules/guest/guest.component.ts @@ -8,28 +8,18 @@ import {ShowSongService} from '../shows/services/show-song.service'; @Component({ selector: 'app-guest', templateUrl: './guest.component.html', - styleUrls: ['./guest.component.less'] + styleUrls: ['./guest.component.less'], }) export class GuestComponent implements OnInit { public songs$: Observable[]>; - - constructor( - private songService: SongService, - private globalSettingsService: GlobalSettingsService, - private showSongService: ShowSongService, - ) { - } + public constructor(private songService: SongService, private globalSettingsService: GlobalSettingsService, private showSongService: ShowSongService) {} public ngOnInit(): void { this.songs$ = this.globalSettingsService.get$.pipe( map(_ => _.currentShow), switchMap(_ => this.showSongService.list$(_)), - map(_ => _ - .sort((x, y) => x.order - y.order) - .map(showSong => this.songService.read$(showSong.songId).pipe(map(song => song.text))) - ) + map(_ => _.sort((x, y) => x.order - y.order).map(showSong => this.songService.read$(showSong.songId).pipe(map(song => song.text)))) ); } - } diff --git a/src/app/modules/guest/guest.module.ts b/src/app/modules/guest/guest.module.ts index 8c72e14..6c75e79 100644 --- a/src/app/modules/guest/guest.module.ts +++ b/src/app/modules/guest/guest.module.ts @@ -13,23 +13,16 @@ const DEFAULT_SWIPER_CONFIG: SwiperConfigInterface = { scrollbar: false, navigation: true, pagination: false, - }; @NgModule({ declarations: [GuestComponent], - imports: [ - CommonModule, - RouterModule.forChild([{path: '', component: GuestComponent}]), - SwiperModule, - SongTextModule - ], + imports: [CommonModule, RouterModule.forChild([{path: '', component: GuestComponent}]), SwiperModule, SongTextModule], providers: [ { provide: SWIPER_CONFIG, - useValue: DEFAULT_SWIPER_CONFIG - } - ] + useValue: DEFAULT_SWIPER_CONFIG, + }, + ], }) -export class GuestModule { -} +export class GuestModule {} diff --git a/src/app/modules/presentation/monitor/legal/legal.component.html b/src/app/modules/presentation/monitor/legal/legal.component.html index 0294809..7e6073f 100644 --- a/src/app/modules/presentation/monitor/legal/legal.component.html +++ b/src/app/modules/presentation/monitor/legal/legal.component.html @@ -1,10 +1,12 @@ -

{{song.artist}}

-

{{song.label}}

-

{{song.termsOfUse}}

-

{{song.origin}}

+

{{ song.artist }}

+

{{ song.label }}

+

{{ song.termsOfUse }}

+

{{ song.origin }}

-

CCLI-Liednummer {{song.legalOwnerId}}, - CCLI-Lizenznummer {{config.ccliLicenseId}}

-

Liednummer {{song.legalOwnerId}}

+

+ CCLI-Liednummer {{ song.legalOwnerId }}, CCLI-Lizenznummer + {{ config.ccliLicenseId }} +

+

Liednummer {{ song.legalOwnerId }}

diff --git a/src/app/modules/presentation/monitor/legal/legal.component.spec.ts b/src/app/modules/presentation/monitor/legal/legal.component.spec.ts index de9a9b6..28d35dc 100644 --- a/src/app/modules/presentation/monitor/legal/legal.component.spec.ts +++ b/src/app/modules/presentation/monitor/legal/legal.component.spec.ts @@ -6,12 +6,13 @@ describe('LegalComponent', () => { let component: LegalComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [LegalComponent] + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + declarations: [LegalComponent], + }).compileComponents(); }) - .compileComponents(); - })); + ); beforeEach(() => { fixture = TestBed.createComponent(LegalComponent); @@ -20,6 +21,6 @@ describe('LegalComponent', () => { }); it('should create', () => { - expect(component).toBeTruthy(); + void expect(component).toBeTruthy(); }); }); diff --git a/src/app/modules/presentation/monitor/legal/legal.component.ts b/src/app/modules/presentation/monitor/legal/legal.component.ts index dfe4687..18cb8ec 100644 --- a/src/app/modules/presentation/monitor/legal/legal.component.ts +++ b/src/app/modules/presentation/monitor/legal/legal.component.ts @@ -5,7 +5,7 @@ import {Config} from '../../../../services/config'; @Component({ selector: 'app-legal', templateUrl: './legal.component.html', - styleUrls: ['./legal.component.less'] + styleUrls: ['./legal.component.less'], }) export class LegalComponent { @Input() public song: Song; diff --git a/src/app/modules/presentation/monitor/logo/logo.component.html b/src/app/modules/presentation/monitor/logo/logo.component.html index 9e61870..c525e69 100644 --- a/src/app/modules/presentation/monitor/logo/logo.component.html +++ b/src/app/modules/presentation/monitor/logo/logo.component.html @@ -1,18 +1,23 @@ - + + style=" + fill: #ffffff; + fill-opacity: 1; + stroke: none; + stroke-width: 1; + stroke-miterlimit: 4; + stroke-dasharray: none; + " + transform="scale(0.26458333)" + /> diff --git a/src/app/modules/presentation/monitor/logo/logo.component.spec.ts b/src/app/modules/presentation/monitor/logo/logo.component.spec.ts index 9d60ac5..8d51724 100644 --- a/src/app/modules/presentation/monitor/logo/logo.component.spec.ts +++ b/src/app/modules/presentation/monitor/logo/logo.component.spec.ts @@ -6,12 +6,13 @@ describe('LogoComponent', () => { let component: LogoComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [LogoComponent] + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + declarations: [LogoComponent], + }).compileComponents(); }) - .compileComponents(); - })); + ); beforeEach(() => { fixture = TestBed.createComponent(LogoComponent); @@ -20,6 +21,6 @@ describe('LogoComponent', () => { }); it('should create', () => { - expect(component).toBeTruthy(); + void expect(component).toBeTruthy(); }); }); diff --git a/src/app/modules/presentation/monitor/logo/logo.component.ts b/src/app/modules/presentation/monitor/logo/logo.component.ts index 3ba3256..e96f1f2 100644 --- a/src/app/modules/presentation/monitor/logo/logo.component.ts +++ b/src/app/modules/presentation/monitor/logo/logo.component.ts @@ -1,16 +1,8 @@ -import {Component, OnInit} from '@angular/core'; +import {Component} from '@angular/core'; @Component({ selector: 'app-logo', templateUrl: './logo.component.html', - styleUrls: ['./logo.component.less'] + styleUrls: ['./logo.component.less'], }) -export class LogoComponent implements OnInit { - - constructor() { - } - - ngOnInit(): void { - } - -} +export class LogoComponent {} diff --git a/src/app/modules/presentation/monitor/monitor.component.html b/src/app/modules/presentation/monitor/monitor.component.html index 9592c50..f917fb2 100644 --- a/src/app/modules/presentation/monitor/monitor.component.html +++ b/src/app/modules/presentation/monitor/monitor.component.html @@ -1,20 +1,31 @@
- - -