From b8bb234410d754eaac5e2f6fed94b081b040f3ab Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Wed, 2 Feb 2022 18:01:47 +0000 Subject: [PATCH] [AAE-7100] ESLint support for ADF Core and DemoShell projects (#7481) * remove tsconfig.base as per eslint schematics * add schematics * upgrade demoshell to eslint * fix eslint issues for demoshell * integrate eslint for ADF core and fix some issues * turn into warn * fix code * workaround for Chrome clipboard issue * exclude e2e tests * exclude e2e --- .eslintrc.json | 105 + .storybook/tsconfig.json | 2 +- angular.json | 46 +- demo-shell/.eslintrc.json | 94 + demo-shell/e2e/tsconfig.e2e.json | 2 +- .../app-layout/app-layout.component.ts | 2 +- .../form-demo/cloud-form-demo.component.ts | 4 +- .../card-view/card-view.component.ts | 1 + .../community/community-cloud.component.ts | 4 +- .../community-processes-cloud.component.ts | 10 +- .../community-task-cloud.component.ts | 15 +- .../custom-editor.component.ts | 2 +- .../people-groups-cloud-demo.component.html | 4 +- .../people-groups-cloud-demo.component.ts | 10 +- .../cloud/process-cloud-layout.component.ts | 2 +- .../cloud/processes-cloud-demo.component.ts | 10 +- .../service-task-list-cloud-demo.component.ts | 13 +- .../services/cloud-process-filters.service.ts | 4 +- .../cloud/shared/cloud-settings.component.ts | 2 +- .../cloud/tasks-cloud-demo.component.ts | 25 +- .../confirm-dialog-example.component.ts | 2 +- .../datatable/datatable.component.ts | 30 +- .../app/components/files/files.component.ts | 17 +- .../src/app/components/form/form.component.ts | 2 +- .../header-data/header-data.service.ts | 2 +- .../app/components/pipes/pipes.component.html | 10 +- .../app/components/pipes/pipes.component.ts | 2 +- .../process-list-demo.component.ts | 11 +- .../custom-editor/custom-editor.component.ts | 2 +- .../process-service.component.ts | 2 +- .../search/search-config-test.service.ts | 4 +- .../shared-link-view.component.ts | 2 +- .../task-list-demo.component.ts | 8 +- .../components/theme-picker/theme-picker.ts | 8 +- .../app/services/in-memory-form.service.ts | 16 +- demo-shell/src/typings.d.ts | 2 +- demo-shell/tsconfig.app.json | 3 + e2e/core/pages/data-table.page.ts | 3 +- e2e/protractor.excludes.json | 6 +- lib/content-services/.storybook/tsconfig.json | 6 +- lib/core/.eslintrc.json | 112 ++ lib/core/.storybook/tsconfig.json | 6 +- .../card-view/components/base-card-view.ts | 2 +- ...ard-view-item-dispatcher.component.spec.ts | 14 +- .../card-view-selectitem.component.ts | 4 +- .../select-filter-input.component.ts | 4 +- .../card-view-textitem.component.ts | 10 +- .../models/card-view-baseitem.model.spec.ts | 4 +- .../services/card-item-types.service.ts | 2 +- .../services/card-view-update.service.ts | 4 +- lib/core/clipboard/clipboard.directive.ts | 4 +- .../context-menu/context-menu.directive.ts | 2 +- .../data-column-header.component.ts | 6 +- .../data-column/data-column-list.component.ts | 2 +- lib/core/data-column/data-column.component.ts | 4 +- .../datatable/datatable.component.spec.ts | 10 +- .../datatable/datatable.component.ts | 12 +- .../json-cell/json-cell.component.ts | 2 +- lib/core/datatable/data/data-column.model.ts | 2 +- lib/core/datatable/data/data-table.schema.ts | 2 +- .../data/object-datatable-adapter.spec.ts | 12 +- .../check-allowable-operation.directive.ts | 2 +- lib/core/directives/highlight.directive.ts | 2 +- .../directives/library-favorite.directive.ts | 2 +- .../library-membership.directive.spec.ts | 2 +- .../library-membership.directive.ts | 2 +- lib/core/directives/node-delete.directive.ts | 4 +- .../directives/node-download.directive.ts | 5 +- .../directives/node-favorite.directive.ts | 2 +- .../directives/node-restore.directive.spec.ts | 4 +- lib/core/directives/node-restore.directive.ts | 3 +- lib/core/directives/upload.directive.ts | 2 +- .../form/components/form-base.component.ts | 2 +- .../form-field/form-field.component.ts | 4 +- .../widgets/amount/amount.widget.ts | 2 +- .../widgets/checkbox/checkbox.widget.ts | 2 +- .../container/container.widget.model.ts | 2 +- .../widgets/container/container.widget.ts | 2 +- .../widgets/core/container-column.model.ts | 2 +- .../widgets/core/container.model.ts | 2 +- .../widgets/core/content-link.model.ts | 2 +- .../core/displayable-cm-properties.model.ts | 2 +- .../widgets/core/error-message.model.ts | 2 +- .../widgets/core/external-content-link.ts | 2 +- .../widgets/core/external-content.ts | 2 +- .../widgets/core/form-field-file-source.ts | 2 +- .../widgets/core/form-field-metadata.ts | 10 +- .../widgets/core/form-field-option.ts | 2 +- .../core/form-field-selected-folder.ts | 2 +- .../widgets/core/form-field-templates.ts | 2 +- .../widgets/core/form-field-types.ts | 2 +- .../widgets/core/form-field-validator.ts | 2 +- .../widgets/core/form-field.model.ts | 2 +- .../widgets/core/form-outcome-event.model.ts | 2 +- .../widgets/core/form-outcome.model.ts | 2 +- .../components/widgets/core/form-values.ts | 4 +- .../widgets/core/form-widget.model.ts | 2 +- .../components/widgets/core/form.model.ts | 2 +- .../form/components/widgets/core/index.ts | 2 +- .../form/components/widgets/core/tab.model.ts | 2 +- .../widgets/date-time/date-time.widget.ts | 2 +- .../components/widgets/date/date.widget.ts | 2 +- .../display-text/display-text.widget.ts | 2 +- .../widgets/dropdown/dropdown.widget.ts | 2 +- .../dynamic-table/cell-validator.model.ts | 2 +- .../date-cell-validator-model.ts | 2 +- .../dynamic-row-validation-summary.model.ts | 2 +- .../dynamic-table-column-option.model.ts | 2 +- .../dynamic-table-column.model.ts | 2 +- .../dynamic-table/dynamic-table-row.model.ts | 2 +- .../dynamic-table.widget.model.ts | 2 +- .../dynamic-table/dynamic-table.widget.ts | 2 +- .../editors/amount/amount.editor.ts | 2 +- .../editors/boolean/boolean.editor.ts | 2 +- .../dynamic-table/editors/date/date.editor.ts | 2 +- .../editors/datetime/datetime.editor.ts | 2 +- .../editors/dropdown/dropdown.editor.ts | 2 +- .../dynamic-table/editors/row.editor.ts | 2 +- .../dynamic-table/editors/text/text.editor.ts | 2 +- .../number-cell-validator.model.ts | 2 +- .../required-cell-validator.model.ts | 2 +- .../widgets/error/error.component.ts | 2 +- .../widgets/file-viewer/file-viewer.widget.ts | 2 +- .../functional-group.widget.ts | 2 +- .../widgets/hyperlink/hyperlink.widget.ts | 2 +- .../multiline-text/multiline-text.widget.ts | 2 +- .../widgets/number/number.widget.ts | 2 +- .../widgets/people/people.widget.ts | 2 +- .../radio-buttons/radio-buttons.widget.ts | 2 +- .../components/widgets/tabs/tabs.widget.ts | 6 +- .../widgets/text/text-mask.component.ts | 16 +- .../components/widgets/text/text.widget.ts | 2 +- .../typeahead/typeahead.widget.spec.ts | 8 +- .../widgets/typeahead/typeahead.widget.ts | 2 +- .../widgets/unknown/unknown.widget.ts | 2 +- .../upload-folder/upload-folder.widget.ts | 2 +- .../widgets/upload/upload.widget.ts | 2 +- .../components/widgets/widget.component.ts | 2 +- .../form/services/form-rendering.service.ts | 2 +- .../services/widget-visibility.service.ts | 5 +- .../sidenav-layout.component.spec.ts | 19 +- .../login/components/login.component.spec.ts | 3 +- lib/core/mock/alfresco-api.mock.ts | 1 - lib/core/mock/alfresco-api.service.mock.ts | 1 - lib/core/mock/authentication.service.mock.ts | 2 +- lib/core/mock/discovery-api.service.mock.ts | 5 +- lib/core/models/ecm-user.model.ts | 2 +- lib/core/models/oauth-config.model.ts | 2 +- .../models/notification.model.ts | 2 +- .../infinite-pagination.component.ts | 4 +- lib/core/pagination/pagination.component.ts | 25 +- lib/core/pipes/file-size.pipe.ts | 9 +- lib/core/pipes/node-name-tooltip.pipe.ts | 4 +- .../search-text-input.component.ts | 3 +- .../search-text/search-trigger.directive.ts | 8 +- lib/core/services/alfresco-api.service.ts | 2 - .../services/apps-process.service.spec.ts | 2 - .../services/auth-guard-sso-role.service.ts | 3 +- lib/core/services/authentication.service.ts | 4 +- .../services/deleted-nodes-api.service.ts | 2 +- .../services/directionality-config-factory.ts | 6 +- lib/core/services/download.service.ts | 6 +- .../dynamic-component-mapper.service.ts | 12 +- .../services/highlight-transform.service.ts | 4 +- lib/core/services/jwt-helper.service.ts | 2 +- lib/core/services/log.service.spec.ts | 2 +- lib/core/services/log.service.ts | 2 +- lib/core/services/nodes-api.service.ts | 5 +- .../services/people-content.service.spec.ts | 4 +- lib/core/services/renditions.service.ts | 2 +- .../services/search-configuration.service.ts | 2 +- lib/core/services/search.service.spec.ts | 3 +- lib/core/services/shared-links-api.service.ts | 2 +- lib/core/services/sites.service.ts | 6 +- lib/core/services/startup-service-factory.ts | 2 +- lib/core/services/thumbnail.service.ts | 11 +- lib/core/services/translation.service.ts | 4 +- .../services/version-compatibility-factory.ts | 6 +- lib/core/settings/host-settings.component.ts | 17 +- .../sorting-picker.component.ts | 2 +- lib/core/utils/file-utils.ts | 2 +- .../viewer/components/img-viewer.component.ts | 6 +- .../viewer/components/pdf-viewer.component.ts | 11 +- .../viewer/components/viewer.component.ts | 9 +- .../.storybook/tsconfig.json | 6 +- .../components/process-list.component.ts | 8 +- .../components/task-list.component.ts | 6 +- lib/stories/.storybook/tsconfig.json | 6 +- package-lock.json | 1735 +++++++++++++++++ package.json | 15 +- tsconfig.base.json | 55 - tsconfig.json | 54 +- 192 files changed, 2553 insertions(+), 483 deletions(-) create mode 100644 .eslintrc.json create mode 100644 demo-shell/.eslintrc.json create mode 100644 demo-shell/tsconfig.app.json create mode 100644 lib/core/.eslintrc.json delete mode 100644 tsconfig.base.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..f9066a3275 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,105 @@ +{ + "root": true, + "ignorePatterns": [ + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json", + "e2e/tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/ng-cli-compat", + "plugin:@angular-eslint/ng-cli-compat--formatting-add-on", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "plugins": [ + "eslint-plugin-unicorn", + "eslint-plugin-rxjs" + ], + "rules": { + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": [ + "element", + "attribute" + ], + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/no-host-metadata-property": "off", + "@angular-eslint/no-input-prefix": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-member-accessibility": [ + "off", + { + "accessibility": "explicit" + } + ], + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-var-requires": "error", + + "@typescript-eslint/member-ordering": "warn", + "prefer-arrow/prefer-arrow-functions": "warn", + + "brace-style": [ + "error", + "1tbs" + ], + "comma-dangle": "error", + "default-case": "error", + "import/order": "off", + "max-len": [ + "error", + { + "code": 240 + } + ], + "no-bitwise": "off", + "no-duplicate-imports": "error", + "no-multiple-empty-lines": "error", + "no-redeclare": "error", + "no-return-await": "error", + "rxjs/no-create": "error", + "rxjs/no-subject-unsubscribe": "error", + "rxjs/no-subject-value": "error", + "rxjs/no-unsafe-takeuntil": "error", + "unicorn/filename-case": "error" + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json index 2f5c75b164..ee045f6496 100644 --- a/.storybook/tsconfig.json +++ b/.storybook/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../tsconfig.json", "exclude": [ "../**/*.spec.js", "../**/*.spec.ts", diff --git a/angular.json b/angular.json index c2697990a5..fd12e3892c 100644 --- a/angular.json +++ b/angular.json @@ -124,47 +124,47 @@ { "inject": false, "input": "lib/core/styles/prebuilt/adf-blue-orange.scss", - "bundleName" : "adf-blue-orange" + "bundleName": "adf-blue-orange" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-blue-purple.scss", - "bundleName" : "adf-blue-purple" + "bundleName": "adf-blue-purple" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-cyan-orange.scss", - "bundleName" : "adf-cyan-orange" + "bundleName": "adf-cyan-orange" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-cyan-purple.scss", - "bundleName" : "adf-cyan-purple" + "bundleName": "adf-cyan-purple" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-green-orange.scss", - "bundleName" : "adf-green-orange" + "bundleName": "adf-green-orange" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-green-purple.scss", - "bundleName" : "adf-green-purple" + "bundleName": "adf-green-purple" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-indigo-pink.scss", - "bundleName" : "adf-indigo-pink" + "bundleName": "adf-indigo-pink" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-pink-bluegrey.scss", - "bundleName" : "adf-pink-bluegrey" + "bundleName": "adf-pink-bluegrey" }, { "inject": false, "input": "lib/core/styles/prebuilt/adf-purple-green.scss", - "bundleName" : "adf-purple-green" + "bundleName": "adf-purple-green" }, "demo-shell/src/assets/fonts/material-icons/material-icons.css", "demo-shell/src/assets/fonts/muli/muli.css", @@ -355,15 +355,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "tsconfig.dev.json" - ], - "exclude": [ - "**/node_modules/**/*", - "**/lib/**/*", - "package.json" + "lintFilePatterns": [ + "demo-shell/**/*.ts", + "demo-shell/**/*.html" ] } } @@ -438,19 +434,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/core/tsconfig.lib.json", - "lib/core/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/extensions/**/*", - "**/lib/content-services/**/*", - "**/lib/insights/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/process-services/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/core/**/*.ts", + "lib/core/**/*.html" ] } }, diff --git a/demo-shell/.eslintrc.json b/demo-shell/.eslintrc.json new file mode 100644 index 0000000000..2173f15d66 --- /dev/null +++ b/demo-shell/.eslintrc.json @@ -0,0 +1,94 @@ +{ + "extends": "../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "demo-shell/tsconfig.app.json", + "demo-shell/src/tsconfig.spec.json", + "demo-shell/e2e/tsconfig.e2e.json" + ], + "createDefaultProgram": true + }, + "plugins": [ + "eslint-plugin-unicorn", + "eslint-plugin-rxjs" + ], + "rules": { + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": [ + "element", + "attribute" + ], + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/no-host-metadata-property": "off", + "@angular-eslint/no-input-prefix": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-member-accessibility": [ + "off", + { + "accessibility": "explicit" + } + ], + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-var-requires": "error", + "brace-style": [ + "error", + "1tbs" + ], + "comma-dangle": "error", + "default-case": "error", + "import/order": "off", + "max-len": [ + "error", + { + "code": 240 + } + ], + "no-bitwise": "off", + "no-duplicate-imports": "error", + "no-multiple-empty-lines": "error", + "no-redeclare": "error", + "no-return-await": "error", + "rxjs/no-create": "error", + "rxjs/no-subject-unsubscribe": "error", + "rxjs/no-subject-value": "error", + "rxjs/no-unsafe-takeuntil": "error", + "unicorn/filename-case": "error" + } + }, + { + "files": [ + "*.html" + ], + "rules": {} + } + ] +} diff --git a/demo-shell/e2e/tsconfig.e2e.json b/demo-shell/e2e/tsconfig.e2e.json index 9c8dadd08a..69ed26a1b4 100644 --- a/demo-shell/e2e/tsconfig.e2e.json +++ b/demo-shell/e2e/tsconfig.e2e.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/e2e", "module": "commonjs", diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.ts b/demo-shell/src/app/components/app-layout/app-layout.component.ts index 7a074450d9..6a029f246f 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.ts +++ b/demo-shell/src/app/components/app-layout/app-layout.component.ts @@ -25,7 +25,7 @@ import { ThemePalette } from '@angular/material/core'; @Component({ templateUrl: './app-layout.component.html', styleUrls: ['./app-layout.component.scss'], - host: { 'class': 'app-layout' }, + host: { class: 'app-layout' }, encapsulation: ViewEncapsulation.None }) export class AppLayoutComponent implements OnInit, OnDestroy { diff --git a/demo-shell/src/app/components/app-layout/cloud/form-demo/cloud-form-demo.component.ts b/demo-shell/src/app/components/app-layout/cloud/form-demo/cloud-form-demo.component.ts index 13e8843a6a..1701bf8d11 100644 --- a/demo-shell/src/app/components/app-layout/cloud/form-demo/cloud-form-demo.component.ts +++ b/demo-shell/src/app/components/app-layout/cloud/form-demo/cloud-form-demo.component.ts @@ -72,7 +72,7 @@ export class FormCloudDemoComponent implements OnInit, OnDestroy { 'custom-something': () => CustomWidgetComponent, 'custom-boolean': () => CustomWidgetComponent, 'custom-date': () => CustomWidgetComponent, - 'custom': () => CustomWidgetComponent + custom: () => CustomWidgetComponent }); } @@ -122,7 +122,7 @@ export class FormCloudDemoComponent implements OnInit, OnDestroy { const fileReader = new FileReader(); fileReader.onload = () => { - this.formConfig = fileReader.result; + this.formConfig = fileReader.result as string; }; fileReader.readAsText(file); diff --git a/demo-shell/src/app/components/card-view/card-view.component.ts b/demo-shell/src/app/components/card-view/card-view.component.ts index 04fb1b74f5..6d4448b575 100644 --- a/demo-shell/src/app/components/card-view/card-view.component.ts +++ b/demo-shell/src/app/components/card-view/card-view.component.ts @@ -231,6 +231,7 @@ export class CardViewComponent implements OnInit, OnDestroy { value: of([ { icon: 'directions_bike', value: 'Zlatan' }, { icon: 'directions_bike', value: 'Lionel Messi' }, + // eslint-disable-next-line @typescript-eslint/naming-convention { value: 'Mohamed', directions_bike: 'save' }, { value: 'Ronaldo' } ]), diff --git a/demo-shell/src/app/components/cloud/community/community-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-cloud.component.ts index 1f74a04ec6..7cb11c2bbd 100644 --- a/demo-shell/src/app/components/cloud/community/community-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-cloud.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, ViewEncapsulation } from '@angular/core'; +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { CloudLayoutService } from '../services/cloud-layout.service'; @@ -31,7 +31,7 @@ import { CloudLayoutService } from '../services/cloud-layout.service'; `], encapsulation: ViewEncapsulation.None }) -export class CommunityCloudComponent { +export class CommunityCloudComponent implements OnInit { constructor( private router: Router, diff --git a/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts index e2808711c7..a0cee63eb8 100644 --- a/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts @@ -31,13 +31,13 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Pagination } from '@alfresco/js-api'; +const PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter'; +const ACTION_SAVE_AS = 'saveAs'; + @Component({ templateUrl: './community-processes-cloud.component.html' }) export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy { - public static ACTION_SAVE_AS = 'saveAs'; - static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter'; - @ViewChild('processCloud') processCloud: ProcessListCloudComponent; @@ -66,7 +66,7 @@ export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy { private processFilterCloudService: ProcessFilterCloudService, private appConfig: AppConfigService) { const properties = this.appConfig.get>( - CommunityProcessesCloudDemoComponent.PROCESS_FILTER_PROPERTY_KEYS + PROCESS_FILTER_PROPERTY_KEYS ); if (properties) { @@ -138,7 +138,7 @@ export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy { onProcessFilterAction(filterAction: any) { this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id }); - if (filterAction.actionType === CommunityProcessesCloudDemoComponent.ACTION_SAVE_AS) { + if (filterAction.actionType === ACTION_SAVE_AS) { this.router.navigate([`/cloud/community/processes/`], { queryParams: filterAction.filter }); } } diff --git a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts index b8ad645658..7e4f4ac592 100644 --- a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts @@ -24,17 +24,14 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Pagination } from '@alfresco/js-api'; +const ACTION_SAVE_AS = 'saveAs'; +const TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter'; + @Component({ templateUrl: './community-task-cloud.component.html', - styles: [`.adf-cloud-layout-tab-body .mat-tab-body-wrapper { - height: 100%; - } - `] + styles: [`.adf-cloud-layout-tab-body .mat-tab-body-wrapper { height: 100%; }`] }) export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy { - public static ACTION_SAVE_AS = 'saveAs'; - static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter'; - @ViewChild('taskCloud') taskCloud: TaskListCloudComponent; @@ -63,7 +60,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy { private userPreference: UserPreferencesService, private appConfig: AppConfigService) { - const properties = this.appConfig.get>(CommunityTasksCloudDemoComponent.TASK_FILTER_PROPERTY_KEYS); + const properties = this.appConfig.get>(TASK_FILTER_PROPERTY_KEYS); if (properties) { this.taskFilterProperties = properties; } @@ -137,7 +134,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy { onTaskFilterAction(filterAction: any) { this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id }); - if (filterAction.actionType === CommunityTasksCloudDemoComponent.ACTION_SAVE_AS) { + if (filterAction.actionType === ACTION_SAVE_AS) { this.router.navigate([`/cloud/community/tasks/`], { queryParams: filterAction.filter }); } } diff --git a/demo-shell/src/app/components/cloud/custom-form-components/custom-editor.component.ts b/demo-shell/src/app/components/cloud/custom-form-components/custom-editor.component.ts index 83ad39a908..e81fe92613 100644 --- a/demo-shell/src/app/components/cloud/custom-form-components/custom-editor.component.ts +++ b/demo-shell/src/app/components/cloud/custom-form-components/custom-editor.component.ts @@ -17,7 +17,7 @@ import { Component, OnInit } from '@angular/core'; import { FormService, WidgetComponent } from '@alfresco/adf-core'; -// tslint:disable:component-selector +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'custom-editor-widget', diff --git a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html index 39af105809..926132795b 100644 --- a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html @@ -27,7 +27,7 @@ - {{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }} {{ DEFAULT_PEOPLE_PLACEHOLDER }} + {{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }} {{ defaultPeoplePlaceholder }} {{ @@ -102,7 +102,7 @@ data-automation-id="app-group-app-input"/> - Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }} + Preselect: {{ defaultGroupPlaceholder }} diff --git a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.ts index da03733b52..c052e0f465 100644 --- a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.ts @@ -29,16 +29,16 @@ import { IdentityGroupModel, IdentityUserModel } from '@alfresco/adf-core'; }) export class PeopleGroupCloudDemoComponent { - DEFAULT_FILTER_MODE: string = 'appName'; - DEFAULT_GROUP_PLACEHOLDER: string = `[{"id": "1", "name":"activitiUserGroup"}]`; - DEFAULT_PEOPLE_PLACEHOLDER: string = `[{"id": "1", email": "user@user.com", "firstName":"user", "lastName": "lastName", "username": "user"}]`; + defaultFilterMode: string = 'appName'; + defaultGroupPlaceholder: string = `[{"id": "1", "name":"activitiUserGroup"}]`; + defaultPeoplePlaceholder: string = `[{"id": "1", email": "user@user.com", "firstName":"user", "lastName": "lastName", "username": "user"}]`; peopleMode: ComponentSelectionMode = 'single'; preSelectUsers: IdentityUserModel[] = []; invalidUsers: IdentityUserModel[] = []; peopleRoles: string[] = []; peopleAppName: string; - peopleFilterMode: string = this.DEFAULT_FILTER_MODE; + peopleFilterMode: string = this.defaultFilterMode; peoplePreselectValidation = false; groupPreselectValidation = false; peopleReadonly = false; @@ -49,7 +49,7 @@ export class PeopleGroupCloudDemoComponent { invalidGroups: IdentityGroupModel[] = []; groupRoles: string[]; groupAppName: string; - groupFilterMode: string = this.DEFAULT_FILTER_MODE; + groupFilterMode: string = this.defaultFilterMode; setPeoplePreselectValue(value: string): void { this.preSelectUsers = this.getArrayFromString(value); diff --git a/demo-shell/src/app/components/cloud/process-cloud-layout.component.ts b/demo-shell/src/app/components/cloud/process-cloud-layout.component.ts index 7df8d0e247..40491fa6f4 100644 --- a/demo-shell/src/app/components/cloud/process-cloud-layout.component.ts +++ b/demo-shell/src/app/components/cloud/process-cloud-layout.component.ts @@ -39,7 +39,7 @@ export class ProcessCloudLayoutComponent { 'custom-something': () => CustomWidgetComponent, 'custom-boolean': () => CustomWidgetComponent, 'custom-date': () => CustomWidgetComponent, - 'custom': () => CustomWidgetComponent + custom: () => CustomWidgetComponent }); } } diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts index be461e1cfb..f25934dc8d 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts @@ -41,8 +41,8 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { actionMenu: boolean; contextMenu: boolean; actions: any[] = []; - selectedAction: { id: number, name: string, actionType: string}; - selectedContextAction: { id: number, name: string, actionType: string}; + selectedAction: { id: number; name: string; actionType: string}; + selectedContextAction: { id: number; name: string; actionType: string}; filterProperties: string[]; filterSortProperties: string[]; @@ -145,14 +145,12 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { } onShowRowContextMenu(event: DataCellEvent) { - event.value.actions = this.actions.map((action) => { - return { + event.value.actions = this.actions.map((action) => ({ data: event.value.row['obj'], model: action, subject: this.performAction$ - }; - }); + })); } onExecuteRowAction(row: any) { diff --git a/demo-shell/src/app/components/cloud/service-task-list-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/service-task-list-cloud-demo.component.ts index b4570bb9d7..3d9379eab7 100644 --- a/demo-shell/src/app/components/cloud/service-task-list-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/service-task-list-cloud-demo.component.ts @@ -22,15 +22,12 @@ import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layou import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; +const TASK_FILTER_PROPERTY_KEYS = 'adf-edit-service-task-filter'; + @Component({ templateUrl: './service-task-list-cloud-demo.component.html' }) export class ServiceTaskListCloudDemoComponent implements OnInit, OnDestroy { - - public static ACTION_SAVE_AS = 'saveAs'; - public static ACTION_DELETE = 'delete'; - static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-service-task-filter'; - @ViewChild('taskCloud') taskCloud: ServiceTaskListCloudComponent; @@ -49,8 +46,8 @@ export class ServiceTaskListCloudDemoComponent implements OnInit, OnDestroy { actionMenu: boolean; contextMenu: boolean; actions: any[] = []; - selectedAction: { id: number, name: string, actionType: string}; - selectedContextAction: { id: number, name: string, actionType: string}; + selectedAction: { id: number; name: string; actionType: string}; + selectedContextAction: { id: number; name: string; actionType: string}; selectionMode: string; filterId: string; @@ -61,7 +58,7 @@ export class ServiceTaskListCloudDemoComponent implements OnInit, OnDestroy { private userPreference: UserPreferencesService, private appConfig: AppConfigService) { - const properties = this.appConfig.get>(ServiceTaskListCloudDemoComponent.TASK_FILTER_PROPERTY_KEYS); + const properties = this.appConfig.get>(TASK_FILTER_PROPERTY_KEYS); if (properties === this.taskFilterProperties) { this.taskFilterProperties = properties; } diff --git a/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts b/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts index 3d74f20dd4..8aafd259db 100644 --- a/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts +++ b/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts @@ -45,11 +45,11 @@ export class CloudProcessFiltersService { ); } - readQueryParams(obj: Object): ProcessFilterCloudModel { + readQueryParams(obj: any): ProcessFilterCloudModel { return this.processFilterCloudService.readQueryParams(obj); } - writeQueryParams(value: Object, appName?: string, id?: string): Object { + writeQueryParams(value: any, appName?: string, id?: string): any { return this.processFilterCloudService.writeQueryParams(value, this.filterProperties, appName, id); } } diff --git a/demo-shell/src/app/components/cloud/shared/cloud-settings.component.ts b/demo-shell/src/app/components/cloud/shared/cloud-settings.component.ts index 0fb63d17ae..ad99a077ea 100644 --- a/demo-shell/src/app/components/cloud/shared/cloud-settings.component.ts +++ b/demo-shell/src/app/components/cloud/shared/cloud-settings.component.ts @@ -114,7 +114,7 @@ export class CloudSettingsComponent implements OnInit, OnDestroy { } addAction() { - this.actions.push( this.actionMenuForm.value); + this.actions.push(this.actionMenuForm.value); this.actionMenuForm.get('key').reset(); this.actionMenuForm.get('title').reset(); this.actionMenuForm.get('icon').reset(); diff --git a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts index 0cfebda1da..74b396277e 100644 --- a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts @@ -23,15 +23,14 @@ import { CloudLayoutService } from './services/cloud-layout.service'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; +const ACTION_SAVE_AS = 'saveAs'; +const ACTION_DELETE = 'delete'; +const TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter'; + @Component({ templateUrl: './tasks-cloud-demo.component.html' }) export class TasksCloudDemoComponent implements OnInit, OnDestroy { - - public static ACTION_SAVE_AS = 'saveAs'; - public static ACTION_DELETE = 'delete'; - static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter'; - @ViewChild('taskCloud') taskCloud: TaskListCloudComponent; @@ -51,8 +50,8 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy { actionMenu: boolean; contextMenu: boolean; actions: any[] = []; - selectedAction: { id: number, name: string, actionType: string}; - selectedContextAction: { id: number, name: string, actionType: string}; + selectedAction: { id: number; name: string; actionType: string}; + selectedContextAction: { id: number; name: string; actionType: string}; testingMode: boolean; selectionMode: string; taskDetailsRedirection: boolean; @@ -67,7 +66,7 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy { private userPreference: UserPreferencesService, private appConfig: AppConfigService) { - const properties = this.appConfig.get>(TasksCloudDemoComponent.TASK_FILTER_PROPERTY_KEYS); + const properties = this.appConfig.get>(TASK_FILTER_PROPERTY_KEYS); if (properties) { this.taskFilterProperties = properties; } @@ -134,13 +133,13 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy { onTaskFilterAction(filterAction: any) { - if (filterAction.actionType === TasksCloudDemoComponent.ACTION_DELETE) { + if (filterAction.actionType === ACTION_DELETE) { this.cloudLayoutService.setCurrentTaskFilterParam({ index: 0 }); } else { this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id }); } - if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) { + if (filterAction.actionType === ACTION_SAVE_AS) { this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filterAction.filter }); } } @@ -150,14 +149,12 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy { } onShowRowContextMenu(event: DataCellEvent) { - event.value.actions = this.actions.map((action) => { - return { + event.value.actions = this.actions.map((action) => ({ data: event.value.row['obj'], model: action, subject: this.performAction$ - }; - }); + })); } onExecuteRowAction(row: any) { diff --git a/demo-shell/src/app/components/confirm-dialog/confirm-dialog-example.component.ts b/demo-shell/src/app/components/confirm-dialog/confirm-dialog-example.component.ts index 15d2f094b1..3aa6c53609 100644 --- a/demo-shell/src/app/components/confirm-dialog/confirm-dialog-example.component.ts +++ b/demo-shell/src/app/components/confirm-dialog/confirm-dialog-example.component.ts @@ -53,7 +53,7 @@ export class ConfirmDialogExampleComponent { const dialog = this.dialog.open(ConfirmDialogComponent, { data: { title: 'Upload', - thirdOptionLabel: thirdOptionLabel, + thirdOptionLabel, message: `This is the default message` }, minWidth: '250px' diff --git a/demo-shell/src/app/components/datatable/datatable.component.ts b/demo-shell/src/app/components/datatable/datatable.component.ts index 751287cd03..f92350a493 100644 --- a/demo-shell/src/app/components/datatable/datatable.component.ts +++ b/demo-shell/src/app/components/datatable/datatable.component.ts @@ -73,8 +73,8 @@ export class DataTableComponent { { value: 'multiple', viewValue: 'Multiple' } ]; - private _imageUrl = 'http://placehold.it/140x100'; - private _createdBy: any = { + private imageUrl = 'http://placehold.it/140x100'; + private createdBy: any = { name: 'Administrator', email: 'admin@alfresco.com' }; @@ -91,7 +91,7 @@ export class DataTableComponent { if (col.key === 'status') { const users = row.getValue('users'); - return (value || []).map((status, index) => ({ 'name': `${users[index].firstName} ${users[index].lastName}`, status })); + return (value || []).map((status, index) => ({ name: `${users[index].firstName} ${users[index].lastName}`, status })); } return value; @@ -110,7 +110,7 @@ export class DataTableComponent { Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.`, createdOn: new Date(2016, 6, 2, 15, 8, 1), - createdBy: this._createdBy, + createdBy: this.createdBy, icon: 'material-icons://folder_open', json: null, users: [ @@ -132,7 +132,7 @@ export class DataTableComponent { id: 2, name: 'Name 2', createdOn: new Date(2016, 6, 2, 15, 8, 2), - createdBy: this._createdBy, + createdBy: this.createdBy, icon: 'material-icons://accessibility', json: null, users: [ @@ -154,7 +154,7 @@ export class DataTableComponent { id: 3, name: 'Name 3', createdOn: new Date(2016, 6, 2, 15, 8, 3), - createdBy: this._createdBy, + createdBy: this.createdBy, icon: 'material-icons://alarm', json: null, users: [ @@ -176,7 +176,7 @@ export class DataTableComponent { id: 4, name: 'Image 8', createdOn: new Date(2016, 6, 2, 15, 8, 4), - createdBy: this._createdBy, + createdBy: this.createdBy, icon: 'material-icons://alarm', json: { id: 4, @@ -207,7 +207,7 @@ export class DataTableComponent { id: 5, name: 'I am using custom resolver', createdOn: new Date(2016, 6, 2, 15, 8, 4), - createdBy: this._createdBy, + createdBy: this.createdBy, icon: 'material-icons://person_outline', users: [ { @@ -244,11 +244,11 @@ export class DataTableComponent { addRow() { const id = this.data.getRows().length + 1; const row = new ObjectDataRow({ - id: id, + id, name: 'Name ' + id, createdOn: new Date(), icon: 'material-icons://extension', - createdBy: this._createdBy + createdBy: this.createdBy }); this.data.getRows().push(row); this.data.sort(); @@ -259,30 +259,30 @@ export class DataTableComponent { { id: 10, name: 'Name 10', - createdBy: this._createdBy, + createdBy: this.createdBy, createdOn: new Date(2016, 6, 2, 15, 8, 5), icon: 'material-icons://face' }, { id: 11, name: 'Name 11', - createdBy: this._createdBy, + createdBy: this.createdBy, createdOn: new Date(2016, 6, 2, 15, 8, 6), icon: 'material-icons://language' }, { id: 12, name: 'Name 12', - createdBy: this._createdBy, + createdBy: this.createdBy, createdOn: new Date(2016, 6, 2, 15, 8, 7), icon: 'material-icons://pets' }, { id: 13, name: 'Image 13', - createdBy: this._createdBy, + createdBy: this.createdBy, createdOn: new Date(2016, 6, 2, 15, 8, 8), - icon: this._imageUrl + icon: this.imageUrl } ]; const rows = objects.map((obj) => new ObjectDataRow(obj)); diff --git a/demo-shell/src/app/components/files/files.component.ts b/demo-shell/src/app/components/files/files.component.ts index ea82522072..98199965c5 100644 --- a/demo-shell/src/app/components/files/files.component.ts +++ b/demo-shell/src/app/components/files/files.component.ts @@ -262,10 +262,10 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { ngOnInit() { if (!this.pagination) { - this.pagination = { + this.pagination = { maxItems: this.preference.paginationSize, skipCount: 0 - }; + } as Pagination; } if (this.route) { @@ -345,7 +345,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { ngOnChanges(changes: SimpleChanges) { if (changes.nodeResult && changes.nodeResult.currentValue) { - this.nodeResult = changes.nodeResult.currentValue; + this.nodeResult = changes.nodeResult.currentValue; this.pagination = this.nodeResult.list.pagination; } if (!this.pagination) { @@ -354,12 +354,12 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { } giveDefaultPaginationWhenNotDefined() { - this.pagination = { + this.pagination = { maxItems: this.preference.paginationSize, skipCount: 0, totalItems: 0, hasMoreItems: false - }; + } as Pagination; } getCurrentDocumentListNode(): MinimalNodeEntity[] { @@ -650,8 +650,11 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { if (this.contentService.hasAllowableOperations(contentEntry, 'update')) { this.dialog.open(VersionManagerDialogAdapterComponent, { data: { - contentEntry: contentEntry, showComments: showComments, allowDownload: allowDownload, - newFileVersion: newFileVersion, showComparison: true + contentEntry, + showComments, + allowDownload, + newFileVersion, + showComparison: true }, panelClass: 'adf-version-manager-dialog', width: '630px' diff --git a/demo-shell/src/app/components/form/form.component.ts b/demo-shell/src/app/components/form/form.component.ts index 5909e96195..11046a854c 100644 --- a/demo-shell/src/app/components/form/form.component.ts +++ b/demo-shell/src/app/components/form/form.component.ts @@ -106,7 +106,7 @@ export class FormComponent implements OnInit, OnDestroy { const fileReader = new FileReader(); fileReader.onload = () => { - this.formConfig = fileReader.result; + this.formConfig = fileReader.result as string; }; fileReader.readAsText(file); diff --git a/demo-shell/src/app/components/header-data/header-data.service.ts b/demo-shell/src/app/components/header-data/header-data.service.ts index 6e58c98fc1..0904e0b60e 100644 --- a/demo-shell/src/app/components/header-data/header-data.service.ts +++ b/demo-shell/src/app/components/header-data/header-data.service.ts @@ -21,7 +21,7 @@ import { ThemePalette } from '@angular/material/core'; @Injectable({ providedIn: 'root' }) -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class HeaderDataService { show = true; diff --git a/demo-shell/src/app/components/pipes/pipes.component.html b/demo-shell/src/app/components/pipes/pipes.component.html index f31951412d..f4c9cb75f4 100644 --- a/demo-shell/src/app/components/pipes/pipes.component.html +++ b/demo-shell/src/app/components/pipes/pipes.component.html @@ -72,7 +72,7 @@ - + @@ -93,16 +93,16 @@

AdfDecimalNumber Pipe - Default

-
{{ number | adfDecimalNumber }}
+
{{ numberValue | adfDecimalNumber }}

AdfDecimalNumber Pipe - Custom digits config

-
{{ number | adfDecimalNumber : decimalValues }}
+
{{ numberValue | adfDecimalNumber : decimalValues }}

AdfDecimalNumber Pipe - Custom locale

-
{{ number | adfDecimalNumber : null : locale }}
+
{{ numberValue | adfDecimalNumber : null : locale }}

AdfDecimalNumber Pipe - Custom digits config and locale

-
{{ number | adfDecimalNumber : decimalValues : locale }}
+
{{ numberValue | adfDecimalNumber : decimalValues : locale }}

diff --git a/demo-shell/src/app/components/pipes/pipes.component.ts b/demo-shell/src/app/components/pipes/pipes.component.ts index 2c9a672189..ae72009494 100644 --- a/demo-shell/src/app/components/pipes/pipes.component.ts +++ b/demo-shell/src/app/components/pipes/pipes.component.ts @@ -28,7 +28,7 @@ export class PipesComponent { today = new Date(); locale: string; format: string; - number = 12345.56; + numberValue = 12345.56; decimalValues = { minIntegerDigits: undefined, minFractionDigits: undefined, diff --git a/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts b/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts index ab422ecf30..f0b058d3d5 100644 --- a/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts +++ b/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts @@ -21,25 +21,22 @@ import { ActivatedRoute, Params } from '@angular/router'; import { debounceTime, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; +const DEFAULT_SIZE = 20; + @Component({ templateUrl: './process-list-demo.component.html', styleUrls: [`./process-list-demo.component.scss`] }) export class ProcessListDemoComponent implements OnInit, OnDestroy { - - DEFAULT_SIZE = 20; - minValue = 0; - processListForm: FormGroup; - appId: number; processDefId: string; processInsId: string; state: string; sort: string; - size: number = this.DEFAULT_SIZE; + size: number = DEFAULT_SIZE; page: number = 0; presetColumn = 'default'; @@ -140,7 +137,7 @@ export class ProcessListDemoComponent implements OnInit, OnDestroy { this.processDefId = null; this.state = this.stateOptions[0].value; this.sort = null; - this.size = this.DEFAULT_SIZE; + this.size = DEFAULT_SIZE; this.page = null; } diff --git a/demo-shell/src/app/components/process-service/custom-editor/custom-editor.component.ts b/demo-shell/src/app/components/process-service/custom-editor/custom-editor.component.ts index 0ad2395d24..8ad9a5f867 100644 --- a/demo-shell/src/app/components/process-service/custom-editor/custom-editor.component.ts +++ b/demo-shell/src/app/components/process-service/custom-editor/custom-editor.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable */ +/* eslint-disable */ import { Component, NgModule } from '@angular/core'; import { WidgetComponent } from '@alfresco/adf-core'; diff --git a/demo-shell/src/app/components/process-service/process-service.component.ts b/demo-shell/src/app/components/process-service/process-service.component.ts index 291e247d4d..9def4e2523 100644 --- a/demo-shell/src/app/components/process-service/process-service.component.ts +++ b/demo-shell/src/app/components/process-service/process-service.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -// tslint:disable-next-line:adf-file-name +// eslint-disable-next-line import { AfterViewInit, Component, diff --git a/demo-shell/src/app/components/search/search-config-test.service.ts b/demo-shell/src/app/components/search/search-config-test.service.ts index da3c92cf3c..9457569c29 100644 --- a/demo-shell/src/app/components/search/search-config-test.service.ts +++ b/demo-shell/src/app/components/search/search-config-test.service.ts @@ -30,10 +30,10 @@ export class TestSearchConfigurationService implements SearchConfigurationInterf include: ['path', 'allowableOperations'], paging: { maxItems: maxResults, - skipCount: skipCount + skipCount }, filterQueries: [ - /*tslint:disable-next-line */ + /* eslint-disable-next-line */ { query: "TYPE:'cm:folder'" }, { query: 'NOT cm:creator:System' }] }; diff --git a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts index 81a63f98c3..df63a87129 100644 --- a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts +++ b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts @@ -23,7 +23,7 @@ import { ActivatedRoute, Router } from '@angular/router'; templateUrl: './shared-link-view.component.html', styleUrls: [ './shared-link-view.component.scss' ], encapsulation: ViewEncapsulation.None, - // tslint:disable-next-line:use-host-property-decorator + // eslint-disable-next-line host: { 'class': 'app-shared-link-view' } }) export class SharedLinkViewComponent implements OnInit { diff --git a/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts b/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts index ddd1415bc4..17601beec1 100644 --- a/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts +++ b/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts @@ -22,6 +22,8 @@ import { debounceTime, takeUntil } from 'rxjs/operators'; import moment from 'moment-es6'; import { Subject } from 'rxjs'; +const DEFAULT_SIZE = 20; + @Component({ selector: 'app-task-list-demo', templateUrl: './task-list-demo.component.html', @@ -29,8 +31,6 @@ import { Subject } from 'rxjs'; }) export class TaskListDemoComponent implements OnInit, OnDestroy { - DEFAULT_SIZE = 20; - taskListForm: FormGroup; errorMessage: string; @@ -46,7 +46,7 @@ export class TaskListDemoComponent implements OnInit, OnDestroy { name: string; sort: string; start: number; - size: number = this.DEFAULT_SIZE; + size: number = DEFAULT_SIZE; page: number = 0; dueAfter: string; dueBefore: string; @@ -184,7 +184,7 @@ export class TaskListDemoComponent implements OnInit, OnDestroy { this.state = null; this.sort = null; this.start = null; - this.size = this.DEFAULT_SIZE; + this.size = DEFAULT_SIZE; this.page = null; this.dueAfter = null; this.dueBefore = null; diff --git a/demo-shell/src/app/components/theme-picker/theme-picker.ts b/demo-shell/src/app/components/theme-picker/theme-picker.ts index aa3bd5e668..8938ac17e6 100644 --- a/demo-shell/src/app/components/theme-picker/theme-picker.ts +++ b/demo-shell/src/app/components/theme-picker/theme-picker.ts @@ -112,7 +112,7 @@ export class ThemePickerComponent { ]; constructor(public styleManager: StyleManager, - private _themeStorage: ThemeStorage) { + private themeStorage: ThemeStorage) { } @@ -120,17 +120,17 @@ export class ThemePickerComponent { if (theme.isDefault === true) { this.styleManager.setStyle('theme', ``); } else { - this.currentTheme = this._getCurrentThemeFromHref(theme.href); + this.currentTheme = this.getCurrentThemeFromHref(theme.href); this.styleManager.setStyle('theme', theme.href); if (this.currentTheme) { - this._themeStorage.storeTheme(this.currentTheme); + this.themeStorage.storeTheme(this.currentTheme); } } } - private _getCurrentThemeFromHref(href: string): DocsSiteTheme { + private getCurrentThemeFromHref(href: string): DocsSiteTheme { return this.themes.find((theme) => theme.href === href); } } diff --git a/demo-shell/src/app/services/in-memory-form.service.ts b/demo-shell/src/app/services/in-memory-form.service.ts index 561e95dc7f..ee69359af2 100644 --- a/demo-shell/src/app/services/in-memory-form.service.ts +++ b/demo-shell/src/app/services/in-memory-form.service.ts @@ -24,14 +24,14 @@ import { Observable, Subject } from 'rxjs'; interface ProcessServiceData { rest: { fields: Array<{ - processId?: string, - taskId?: string, - fieldId?: string, + processId?: string; + taskId?: string; + fieldId?: string; values?: Array<{ - id: string, - name: string - }> - }> + id: string; + name: string; + }>; + }>; }; } // @@ -84,7 +84,7 @@ export class InMemoryFormService extends FormService { const form = new FormModel(flattenForm, formValues, readOnly, this, prefixedSpace); if (!json.fields) { form.outcomes = [ - new FormOutcomeModel( form, { + new FormOutcomeModel(form, { id: '$save', name: FormOutcomeModel.SAVE_ACTION, isSystem: true diff --git a/demo-shell/src/typings.d.ts b/demo-shell/src/typings.d.ts index ef5c7bd620..af562f3749 100644 --- a/demo-shell/src/typings.d.ts +++ b/demo-shell/src/typings.d.ts @@ -1,5 +1,5 @@ /* SystemJS module definition */ -declare var module: NodeModule; +declare const module: NodeModule; interface NodeModule { id: string; } diff --git a/demo-shell/tsconfig.app.json b/demo-shell/tsconfig.app.json new file mode 100644 index 0000000000..3c43903cfd --- /dev/null +++ b/demo-shell/tsconfig.app.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.json" +} diff --git a/e2e/core/pages/data-table.page.ts b/e2e/core/pages/data-table.page.ts index ffb54be000..1e277a922b 100644 --- a/e2e/core/pages/data-table.page.ts +++ b/e2e/core/pages/data-table.page.ts @@ -189,6 +189,7 @@ export class DataTablePage { } async getClipboardInputText(): Promise { - return BrowserActions.getInputValue(this.pasteClipboardInput); + const inputValue = await BrowserActions.getInputValue(this.pasteClipboardInput); + return inputValue.match(/\d/).toString(); } } diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index bbf805fd31..eb2c4fb0cb 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -1,4 +1,8 @@ { "C269081": "https://alfresco.atlassian.net/browse/ADF-5385", - "C272819": "https://alfresco.atlassian.net/browse/ADF-5385" + "C272819": "https://alfresco.atlassian.net/browse/ADF-5385", + "C260188": "https://alfresco.atlassian.net/browse/ADF-5470", + "C260192": "https://alfresco.atlassian.net/browse/ADF-5470", + "C260193": "https://alfresco.atlassian.net/browse/ADF-5470", + "C216426": "https://alfresco.atlassian.net/browse/ADF-5470" } diff --git a/lib/content-services/.storybook/tsconfig.json b/lib/content-services/.storybook/tsconfig.json index 74829392d7..83c6a0ca45 100644 --- a/lib/content-services/.storybook/tsconfig.json +++ b/lib/content-services/.storybook/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "emitDecoratorMetadata": true - + }, - + "exclude": ["../**/*.spec.ts" ], "include": ["../src/**/*", "*.js"] } diff --git a/lib/core/.eslintrc.json b/lib/core/.eslintrc.json new file mode 100644 index 0000000000..387680af7d --- /dev/null +++ b/lib/core/.eslintrc.json @@ -0,0 +1,112 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/core/tsconfig.lib.json", + "lib/core/tsconfig.spec.json" + ], + "createDefaultProgram": true + }, + "plugins": [ + "eslint-plugin-unicorn", + "eslint-plugin-rxjs" + ], + "rules": { + "jsdoc/newline-after-description": "warn", + "@typescript-eslint/naming-convention": "warn", + "@typescript-eslint/consistent-type-assertions": "warn", + "@typescript-eslint/prefer-for-of": "warn", + "no-underscore-dangle": "warn", + "no-shadow": "warn", + "quote-props": "warn", + "object-shorthand": "warn", + "prefer-const": "warn", + "arrow-body-style": "warn", + "@angular-eslint/no-output-native": "warn", + "space-before-function-paren": "warn", + + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": [ + "element", + "attribute" + ], + "prefix": [ + "adf", + "app" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/no-host-metadata-property": "off", + "@angular-eslint/no-input-prefix": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-member-accessibility": [ + "off", + { + "accessibility": "explicit" + } + ], + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-var-requires": "error", + "brace-style": [ + "error", + "1tbs" + ], + "comma-dangle": "error", + "default-case": "error", + "import/order": "off", + "max-len": [ + "error", + { + "code": 240 + } + ], + "no-bitwise": "off", + "no-duplicate-imports": "error", + "no-multiple-empty-lines": "error", + "no-redeclare": "error", + "no-return-await": "error", + "rxjs/no-create": "error", + "rxjs/no-subject-unsubscribe": "error", + "rxjs/no-subject-value": "error", + "rxjs/no-unsafe-takeuntil": "error", + "unicorn/filename-case": "error" + } + }, + { + "files": [ + "*.html" + ], + "rules": { + "@angular-eslint/template/no-autofocus": "error", + "@angular-eslint/template/no-positive-tabindex": "error", + + "@angular-eslint/template/no-negated-async": "warn" + } + } + ] +} diff --git a/lib/core/.storybook/tsconfig.json b/lib/core/.storybook/tsconfig.json index 3f01515e9a..cb81195a95 100644 --- a/lib/core/.storybook/tsconfig.json +++ b/lib/core/.storybook/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "emitDecoratorMetadata": true - + }, - + "exclude": ["../**/*.spec.ts" ], "include": ["../**/*.ts", "*.js"] } diff --git a/lib/core/card-view/components/base-card-view.ts b/lib/core/card-view/components/base-card-view.ts index 0fd9583e0d..e63543a06f 100644 --- a/lib/core/card-view/components/base-card-view.ts +++ b/lib/core/card-view/components/base-card-view.ts @@ -23,7 +23,7 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class BaseCardView implements OnDestroy { @Input() diff --git a/lib/core/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.spec.ts b/lib/core/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.spec.ts index 78f5788e3f..a7cb01d0a2 100644 --- a/lib/core/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.spec.ts +++ b/lib/core/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, Input, SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; @@ -109,12 +109,12 @@ describe('CardViewItemDispatcherComponent', () => { }); it('should update the subcomponent\'s input parameters', () => { - const expectedEditable = false, - expectedDisplayEmpty = true, - expectedProperty = {}, - expectedCustomInput = 1, - expectedDisplayNoneOption = false, - expectedDisplayClearAction = false; + const expectedEditable = false; + const expectedDisplayEmpty = true; + const expectedProperty = {}; + const expectedCustomInput = 1; + const expectedDisplayNoneOption = false; + const expectedDisplayClearAction = false; component.ngOnChanges({ editable: new SimpleChange(true, expectedEditable, false), diff --git a/lib/core/card-view/components/card-view-selectitem/card-view-selectitem.component.ts b/lib/core/card-view/components/card-view-selectitem/card-view-selectitem.component.ts index f5a50c711d..eb2e1461be 100644 --- a/lib/core/card-view/components/card-view-selectitem/card-view-selectitem.component.ts +++ b/lib/core/card-view/components/card-view-selectitem/card-view-selectitem.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Input, OnChanges, OnDestroy } from '@angular/core'; +import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core'; import { CardViewSelectItemModel } from '../../models/card-view-selectitem.model'; import { CardViewUpdateService } from '../../services/card-view-update.service'; import { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'; @@ -30,7 +30,7 @@ import { takeUntil, map } from 'rxjs/operators'; templateUrl: './card-view-selectitem.component.html', styleUrls: ['./card-view-selectitem.component.scss'] }) -export class CardViewSelectItemComponent extends BaseCardView> implements OnChanges, OnDestroy { +export class CardViewSelectItemComponent extends BaseCardView> implements OnInit, OnChanges, OnDestroy { static HIDE_FILTER_LIMIT = 5; @Input() editable: boolean = false; diff --git a/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts b/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts index 2ed6cbf379..96060e497e 100644 --- a/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts +++ b/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, ViewEncapsulation, ViewChild, ElementRef, OnDestroy, Inject, Output, EventEmitter } from '@angular/core'; +import { Component, ViewEncapsulation, ViewChild, ElementRef, OnDestroy, Inject, Output, EventEmitter, OnInit } from '@angular/core'; import { ESCAPE, TAB } from '@angular/cdk/keycodes'; import { MatSelect } from '@angular/material/select'; import { Subject } from 'rxjs'; @@ -28,7 +28,7 @@ import { takeUntil } from 'rxjs/operators'; host: { 'class': 'adf-select-filter-input' }, encapsulation: ViewEncapsulation.None }) -export class SelectFilterInputComponent implements OnDestroy { +export class SelectFilterInputComponent implements OnInit, OnDestroy { @ViewChild('selectFilterInput', { read: ElementRef, static: false }) selectFilterInput: ElementRef; @Output() change = new EventEmitter(); diff --git a/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.ts b/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.ts index e6defba1dc..4618ea3c2a 100644 --- a/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.ts +++ b/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation } from '@angular/core'; import { CardViewTextItemModel } from '../../models/card-view-textitem.model'; import { CardViewUpdateService } from '../../services/card-view-update.service'; import { BaseCardView } from '../base-card-view'; @@ -42,7 +42,7 @@ const templateTypes = { styleUrls: ['./card-view-textitem.component.scss'], encapsulation: ViewEncapsulation.None }) -export class CardViewTextItemComponent extends BaseCardView implements OnChanges { +export class CardViewTextItemComponent extends BaseCardView implements OnChanges, OnDestroy { @Input() editable: boolean = false; @@ -92,7 +92,11 @@ export class CardViewTextItemComponent extends BaseCardView { expect(validator2.isValid).toHaveBeenCalledWith('test-against-this'); }); - it("should return the registered validators' common decision (case true)", () => { + it('should return the registered validators common decision (case true)', () => { const validator1: CardViewItemValidator = { isValid: () => true, message: 'validator 1' }; const validator2: CardViewItemValidator = { isValid: () => true, message: 'validator 2' }; properties.validators = [validator1, validator2]; @@ -107,7 +107,7 @@ describe('CardViewBaseItemModel', () => { expect(itemModel.getValidationErrors('test-against-this')).toEqual([]); }); - it("should return the registered validators' common decision (case false)", () => { + it('should return the registered validators common decision (case false)', () => { const validator1: CardViewItemValidator = { isValid: () => false, message: 'validator 1' }; const validator2: CardViewItemValidator = { isValid: () => true, message: 'validator 2' }; const validator3: CardViewItemValidator = { isValid: () => false, message: 'validator 3' }; diff --git a/lib/core/card-view/services/card-item-types.service.ts b/lib/core/card-view/services/card-item-types.service.ts index 78afdab6e6..8d9c907a68 100644 --- a/lib/core/card-view/services/card-item-types.service.ts +++ b/lib/core/card-view/services/card-item-types.service.ts @@ -30,7 +30,7 @@ import { CardViewArrayItemComponent } from '../components/card-view-arrayitem/ca }) export class CardItemTypeService extends DynamicComponentMapper { - protected defaultValue: Type<{}> = CardViewTextItemComponent; + protected defaultValue: Type = CardViewTextItemComponent; protected types: { [key: string]: DynamicComponentResolveFunction } = { 'text': DynamicComponentResolver.fromType(CardViewTextItemComponent), diff --git a/lib/core/card-view/services/card-view-update.service.ts b/lib/core/card-view/services/card-view-update.service.ts index 20156a7493..ed6c8c9967 100644 --- a/lib/core/card-view/services/card-view-update.service.ts +++ b/lib/core/card-view/services/card-view-update.service.ts @@ -29,10 +29,10 @@ export interface ClickNotification { target: any; } -export function transformKeyToObject(key: string, value): Object { +export function transformKeyToObject(key: string, value): any { const objectLevels: string[] = key.split('.').reverse(); - return objectLevels.reduce<{}>((previousValue, currentValue) => { + return objectLevels.reduce((previousValue, currentValue) => { return { [currentValue]: previousValue}; }, value); } diff --git a/lib/core/clipboard/clipboard.directive.ts b/lib/core/clipboard/clipboard.directive.ts index 7fe1c5db1f..ee898cfb4b 100644 --- a/lib/core/clipboard/clipboard.directive.ts +++ b/lib/core/clipboard/clipboard.directive.ts @@ -24,7 +24,7 @@ import { ClipboardService } from './clipboard.service'; }) export class ClipboardDirective { /** Translation key or message for the tooltip. */ - // tslint:disable-next-line:no-input-rename + // eslint-disable-next-line @angular-eslint/no-input-rename @Input('adf-clipboard') placeholder: string; @@ -33,7 +33,7 @@ export class ClipboardDirective { target: HTMLInputElement | HTMLTextAreaElement; /** Translation key or message for snackbar notification. */ - // tslint:disable-next-line:no-input-rename + // eslint-disable-next-line @angular-eslint/no-input-rename @Input('clipboard-notification') message: string; constructor(private clipboardService: ClipboardService, diff --git a/lib/core/context-menu/context-menu.directive.ts b/lib/core/context-menu/context-menu.directive.ts index 623e7bb356..6da091c955 100644 --- a/lib/core/context-menu/context-menu.directive.ts +++ b/lib/core/context-menu/context-menu.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, HostListener, Input } from '@angular/core'; import { ContextMenuOverlayService } from './context-menu-overlay.service'; diff --git a/lib/core/data-column/data-column-header.component.ts b/lib/core/data-column/data-column-header.component.ts index 25610f0cea..df09912478 100644 --- a/lib/core/data-column/data-column-header.component.ts +++ b/lib/core/data-column/data-column-header.component.ts @@ -15,16 +15,16 @@ * limitations under the License. */ -/* tslint:disable:component-selector no-input-rename */ +/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ -import { Component, ContentChild, TemplateRef } from '@angular/core'; +import { AfterContentInit, Component, ContentChild, TemplateRef } from '@angular/core'; import { DataColumnComponent } from './data-column.component'; @Component({ selector: 'adf-data-column-header', template: '' }) -export class DateColumnHeaderComponent { +export class DateColumnHeaderComponent implements AfterContentInit { @ContentChild(TemplateRef) public header: TemplateRef; diff --git a/lib/core/data-column/data-column-list.component.ts b/lib/core/data-column/data-column-list.component.ts index 54952a5ff0..b87f71b84a 100644 --- a/lib/core/data-column/data-column-list.component.ts +++ b/lib/core/data-column/data-column-list.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ContentChildren, QueryList } from '@angular/core'; import { DataColumnComponent } from './data-column.component'; diff --git a/lib/core/data-column/data-column.component.ts b/lib/core/data-column/data-column.component.ts index 2feeda74a7..3b764815f3 100644 --- a/lib/core/data-column/data-column.component.ts +++ b/lib/core/data-column/data-column.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core'; @@ -56,7 +56,7 @@ export class DataColumnComponent implements OnInit { /** Custom tooltip formatter function. */ @Input() - formatTooltip: Function; + formatTooltip: (...args) => string; /** Title to be used for screen readers. */ @Input('sr-title') diff --git a/lib/core/datatable/components/datatable/datatable.component.spec.ts b/lib/core/datatable/components/datatable/datatable.component.spec.ts index 3e3fb108f8..4981621e8b 100644 --- a/lib/core/datatable/components/datatable/datatable.component.spec.ts +++ b/lib/core/datatable/components/datatable/datatable.component.spec.ts @@ -1090,7 +1090,7 @@ describe('DataTable', () => { const column = {}; const row: any = { - getValue: function () { + getValue: function() { return 'material-icons://android'; } }; @@ -1102,7 +1102,7 @@ describe('DataTable', () => { const column = {}; const row: any = { - getValue: function () { + getValue: function() { return 'http://www.google.com'; } }; @@ -1114,7 +1114,7 @@ describe('DataTable', () => { const column = {}; const row: any = { - getValue: function () { + getValue: function() { return 'material-icons://android'; } }; @@ -1126,7 +1126,7 @@ describe('DataTable', () => { const column = {}; const row: any = { - getValue: function () { + getValue: function() { return 'http://www.google.com'; } }; @@ -1229,7 +1229,7 @@ describe('DataTable', () => { const column = {}; const row: any = { - getValue: function () { + getValue: function() { return 'id'; } }; diff --git a/lib/core/datatable/components/datatable/datatable.component.ts b/lib/core/datatable/components/datatable/datatable.component.ts index e883119382..b269453ef2 100644 --- a/lib/core/datatable/components/datatable/datatable.component.ts +++ b/lib/core/datatable/components/datatable/datatable.component.ts @@ -15,10 +15,12 @@ * limitations under the License. */ +/* eslint-disable @angular-eslint/no-conflicting-lifecycle */ + import { ViewChildren, QueryList, HostListener, AfterContentInit, Component, ContentChild, DoCheck, ElementRef, EventEmitter, Input, - IterableDiffers, OnChanges, Output, SimpleChange, SimpleChanges, TemplateRef, ViewEncapsulation, OnDestroy + IterableDiffers, OnChanges, Output, SimpleChange, SimpleChanges, TemplateRef, ViewEncapsulation, OnDestroy, AfterViewInit } from '@angular/core'; import { FocusKeyManager } from '@angular/cdk/a11y'; import { MatCheckboxChange } from '@angular/material/checkbox'; @@ -57,7 +59,7 @@ export enum ShowHeaderMode { encapsulation: ViewEncapsulation.None, host: { class: 'adf-datatable' } }) -export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, OnDestroy { +export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, OnDestroy, AfterViewInit { @ViewChildren(DataTableRowComponent) rowsList: QueryList; @@ -122,7 +124,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, * docs for more details and usage examples. */ @Input() - rowStyle: { [key: string]: any; }; + rowStyle: { [key: string]: any }; /** The CSS class to apply to every row. */ @Input() @@ -203,7 +205,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, private click$: Observable; private differ: any; - private rowMenuCache: object = {}; + private rowMenuCache: any = {}; private subscriptions: Subscription[] = []; private singleClickStreamSub: Subscription; @@ -856,7 +858,7 @@ export interface DataTableDropEvent { target: 'cell' | 'header'; event: Event; column: DataColumn; - row?: DataRow + row?: DataRow; }; preventDefault(): void; diff --git a/lib/core/datatable/components/json-cell/json-cell.component.ts b/lib/core/datatable/components/json-cell/json-cell.component.ts index 99c9880140..807a110a0f 100644 --- a/lib/core/datatable/components/json-cell/json-cell.component.ts +++ b/lib/core/datatable/components/json-cell/json-cell.component.ts @@ -57,7 +57,7 @@ export class JsonCellComponent extends DataTableCellComponent implements OnInit } view() { - const rawValue: string | object = this.data.getValue(this.row, this.column, this.resolverFn); + const rawValue: string | any = this.data.getValue(this.row, this.column, this.resolverFn); const value = typeof rawValue === 'object' ? JSON.stringify(rawValue || {}, null, 2) : rawValue; diff --git a/lib/core/datatable/data/data-column.model.ts b/lib/core/datatable/data/data-column.model.ts index fd9cbb0d98..995dfc574b 100644 --- a/lib/core/datatable/data/data-column.model.ts +++ b/lib/core/datatable/data/data-column.model.ts @@ -38,7 +38,7 @@ export interface DataColumn { srTitle?: string; cssClass?: string; template?: TemplateRef; - formatTooltip?: Function; + formatTooltip?: (...args) => string; copyContent?: boolean; editable?: boolean; focus?: boolean; diff --git a/lib/core/datatable/data/data-table.schema.ts b/lib/core/datatable/data/data-table.schema.ts index 219bb2bc4e..98501c64f5 100644 --- a/lib/core/datatable/data/data-table.schema.ts +++ b/lib/core/datatable/data/data-table.schema.ts @@ -22,7 +22,7 @@ import { DataColumn } from './data-column.model'; import { ObjectDataColumn } from './object-datacolumn.model'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class DataTableSchema { @ContentChild(DataColumnListComponent) diff --git a/lib/core/datatable/data/object-datatable-adapter.spec.ts b/lib/core/datatable/data/object-datatable-adapter.spec.ts index 0f31d6765e..db74d57944 100644 --- a/lib/core/datatable/data/object-datatable-adapter.spec.ts +++ b/lib/core/datatable/data/object-datatable-adapter.spec.ts @@ -136,12 +136,16 @@ describe('ObjectDataTableAdapter', () => { it('should fail getting value with row not defined', () => { const adapter = new ObjectDataTableAdapter([], []); - expect(() => { adapter.getValue(null, null); }).toThrowError('Row not found'); + expect(() => { + adapter.getValue(null, null); + }).toThrowError('Row not found'); }); it('should fail getting value with column not defined', () => { const adapter = new ObjectDataTableAdapter([], []); - expect(() => { adapter.getValue( {}, null); }).toThrowError('Column not found'); + expect(() => { + adapter.getValue( {}, null); + }).toThrowError('Column not found'); }); it('should get value from row with column key', () => { @@ -300,7 +304,9 @@ describe('ObjectDataTableAdapter', () => { describe('ObjectDataRow', () => { it('should require object source', () => { - expect(() => { return new ObjectDataRow(null); }).toThrowError('Object source not found'); + expect(() => { + return new ObjectDataRow(null); + }).toThrowError('Object source not found'); }); it('should get top level property value', () => { diff --git a/lib/core/directives/check-allowable-operation.directive.ts b/lib/core/directives/check-allowable-operation.directive.ts index fd400061c5..f0386acb12 100644 --- a/lib/core/directives/check-allowable-operation.directive.ts +++ b/lib/core/directives/check-allowable-operation.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { ChangeDetectorRef, Directive, ElementRef, Host, Inject, Input, OnChanges, Optional, Renderer2, SimpleChanges } from '@angular/core'; import { NodeEntry } from '@alfresco/js-api'; diff --git a/lib/core/directives/highlight.directive.ts b/lib/core/directives/highlight.directive.ts index 925cb7b5ed..5500bb093e 100644 --- a/lib/core/directives/highlight.directive.ts +++ b/lib/core/directives/highlight.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, ElementRef, Input, Renderer2, AfterViewChecked } from '@angular/core'; import { HighlightTransformService, HighlightTransformResult } from '../services/highlight-transform.service'; diff --git a/lib/core/directives/library-favorite.directive.ts b/lib/core/directives/library-favorite.directive.ts index d46406b16e..2fa0d8d0e3 100644 --- a/lib/core/directives/library-favorite.directive.ts +++ b/lib/core/directives/library-favorite.directive.ts @@ -34,7 +34,7 @@ export class LibraryFavoriteDirective implements OnChanges { library: LibraryEntity = null; @Output() toggle = new EventEmitter(); - // tslint:disable-next-line: no-output-native + // eslint-disable-next-line @angular-eslint/no-output-native @Output() error = new EventEmitter(); private targetLibrary = null; diff --git a/lib/core/directives/library-membership.directive.spec.ts b/lib/core/directives/library-membership.directive.spec.ts index 6524768f4a..f8b45c48bc 100644 --- a/lib/core/directives/library-membership.directive.spec.ts +++ b/lib/core/directives/library-membership.directive.spec.ts @@ -149,7 +149,7 @@ describe('LibraryMembershipDirective', () => { expect(deleteMembershipSpy).not.toHaveBeenCalled(); })); - it("should add 'workspace' to send appropriate email", fakeAsync(() => { + it(`should add 'workspace' to send appropriate email`, fakeAsync(() => { mockSupportedVersion = true; const selection = { entry: { id: 'no-membership-requested' } }; const change = new SimpleChange(null, selection, true); diff --git a/lib/core/directives/library-membership.directive.ts b/lib/core/directives/library-membership.directive.ts index 31064cdf5a..a68b1192ff 100644 --- a/lib/core/directives/library-membership.directive.ts +++ b/lib/core/directives/library-membership.directive.ts @@ -65,7 +65,7 @@ export class LibraryMembershipDirective implements OnChanges { @Output() toggle = new EventEmitter(); - // tslint:disable-next-line: no-output-native + // eslint-disable-next-line @angular-eslint/no-output-native @Output() error = new EventEmitter(); diff --git a/lib/core/directives/node-delete.directive.ts b/lib/core/directives/node-delete.directive.ts index d9f5dc9079..27cf49bb38 100644 --- a/lib/core/directives/node-delete.directive.ts +++ b/lib/core/directives/node-delete.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output } from '@angular/core'; import { NodeEntry, Node, DeletedNodeEntity, DeletedNode, TrashcanApi, NodesApi } from '@alfresco/js-api'; @@ -185,6 +185,7 @@ export class NodeDeleteDirective implements OnChanges { if (status.allFailed && !status.oneFailed) { return this.translation.instant( 'CORE.DELETE_NODE.ERROR_PLURAL', + // eslint-disable-next-line id-blacklist { number: status.failed.length } ); } @@ -192,6 +193,7 @@ export class NodeDeleteDirective implements OnChanges { if (status.allSucceeded && !status.oneSucceeded) { return this.translation.instant( 'CORE.DELETE_NODE.PLURAL', + // eslint-disable-next-line id-blacklist { number: status.success.length } ); } diff --git a/lib/core/directives/node-download.directive.ts b/lib/core/directives/node-download.directive.ts index e1b81b2241..73d103eb2f 100755 --- a/lib/core/directives/node-download.directive.ts +++ b/lib/core/directives/node-download.directive.ts @@ -26,7 +26,7 @@ import { DownloadService } from '../services/download.service'; * Directive selectors without adf- prefix will be deprecated on 3.0.0 */ @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adfNodeDownload]' }) export class NodeDownloadDirective { @@ -110,7 +110,8 @@ export class NodeDownloadDirective { // nodeId for Shared node const id = ( node.entry).nodeId || node.entry.id; - let url, fileName; + let url; + let fileName; if (this.version) { url = this.contentApi.getVersionContentUrl(id, this.version.entry.id, true); fileName = this.version.entry.name; diff --git a/lib/core/directives/node-favorite.directive.ts b/lib/core/directives/node-favorite.directive.ts index 3ef9661a09..48cf78f5b4 100644 --- a/lib/core/directives/node-favorite.directive.ts +++ b/lib/core/directives/node-favorite.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, EventEmitter, HostListener, Input, OnChanges, Output } from '@angular/core'; import { FavoriteBody, NodeEntry, SharedLinkEntry, Node, SharedLink, FavoritesApi } from '@alfresco/js-api'; diff --git a/lib/core/directives/node-restore.directive.spec.ts b/lib/core/directives/node-restore.directive.spec.ts index a6b0d667c2..5e4da1c62c 100644 --- a/lib/core/directives/node-restore.directive.spec.ts +++ b/lib/core/directives/node-restore.directive.spec.ts @@ -69,7 +69,9 @@ describe('NodeRestoreDirective', () => { })); translationService = TestBed.inject(TranslationService); - spyOn(translationService, 'instant').and.callFake((key) => { return key; }); + spyOn(translationService, 'instant').and.callFake((key) => { + return key; + }); }); it('should not restore when selection is empty', () => { diff --git a/lib/core/directives/node-restore.directive.ts b/lib/core/directives/node-restore.directive.ts index ad0c48b5eb..f920714e74 100644 --- a/lib/core/directives/node-restore.directive.ts +++ b/lib/core/directives/node-restore.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector no-input-rename */ +/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core'; import { TrashcanApi, DeletedNodeEntry, DeletedNodesPaging, PathInfoEntity } from '@alfresco/js-api'; @@ -194,6 +194,7 @@ export class NodeRestoreDirective { return this.translation.instant( 'CORE.RESTORE_NODE.PARTIAL_PLURAL', { + // eslint-disable-next-line id-blacklist number: status.fail.length } ); diff --git a/lib/core/directives/upload.directive.ts b/lib/core/directives/upload.directive.ts index 30245e946c..796297a0df 100644 --- a/lib/core/directives/upload.directive.ts +++ b/lib/core/directives/upload.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core'; import { FileInfo, FileUtils } from '../utils/file-utils'; diff --git a/lib/core/form/components/form-base.component.ts b/lib/core/form/components/form-base.component.ts index 208ac80b7d..3df64b85d1 100644 --- a/lib/core/form/components/form-base.component.ts +++ b/lib/core/form/components/form-base.component.ts @@ -20,7 +20,7 @@ import { EventEmitter, Input, Output, Directive } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class FormBaseComponent { static SAVE_OUTCOME_ID: string = '$save'; diff --git a/lib/core/form/components/form-field/form-field.component.ts b/lib/core/form/components/form-field/form-field.component.ts index 06e7837339..597ebd1dba 100644 --- a/lib/core/form/components/form-field/form-field.component.ts +++ b/lib/core/form/components/form-field/form-field.component.ts @@ -35,7 +35,7 @@ import { WidgetVisibilityService } from './../../services/widget-visibility.serv import { FormFieldModel } from './../widgets/core/form-field.model'; import { WidgetComponent } from './../widgets/widget.component'; -declare var adf: any; +declare const adf: any; @Component({ selector: 'adf-form-field', @@ -63,7 +63,7 @@ export class FormFieldComponent implements OnInit, OnDestroy { @Input() field: FormFieldModel = null; - componentRef: ComponentRef<{}>; + componentRef: ComponentRef; focus: boolean = false; diff --git a/lib/core/form/components/widgets/amount/amount.widget.ts b/lib/core/form/components/widgets/amount/amount.widget.ts index bb02836bbf..6b6e5779b9 100644 --- a/lib/core/form/components/widgets/amount/amount.widget.ts +++ b/lib/core/form/components/widgets/amount/amount.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, OnInit, ViewEncapsulation, InjectionToken, Inject, Optional } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/checkbox/checkbox.widget.ts b/lib/core/form/components/widgets/checkbox/checkbox.widget.ts index b25d33576a..109cded50f 100644 --- a/lib/core/form/components/widgets/checkbox/checkbox.widget.ts +++ b/lib/core/form/components/widgets/checkbox/checkbox.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector no-input-rename */ +/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/container/container.widget.model.ts b/lib/core/form/components/widgets/container/container.widget.model.ts index 36c2b9c0f2..16192aec31 100644 --- a/lib/core/form/components/widgets/container/container.widget.model.ts +++ b/lib/core/form/components/widgets/container/container.widget.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { ContainerColumnModel } from './../core/container-column.model'; import { ContainerModel } from './../core/container.model'; diff --git a/lib/core/form/components/widgets/container/container.widget.ts b/lib/core/form/components/widgets/container/container.widget.ts index 027b581388..1d07925f31 100644 --- a/lib/core/form/components/widgets/container/container.widget.ts +++ b/lib/core/form/components/widgets/container/container.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { AfterViewInit, Component, OnInit, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/core/container-column.model.ts b/lib/core/form/components/widgets/core/container-column.model.ts index 6bbd78c5b5..d55966ceda 100644 --- a/lib/core/form/components/widgets/core/container-column.model.ts +++ b/lib/core/form/components/widgets/core/container-column.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ export class ContainerColumnModel { diff --git a/lib/core/form/components/widgets/core/container.model.ts b/lib/core/form/components/widgets/core/container.model.ts index d31edd130b..bc02c39910 100644 --- a/lib/core/form/components/widgets/core/container.model.ts +++ b/lib/core/form/components/widgets/core/container.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { FormFieldModel } from './form-field.model'; import { FormWidgetModel } from './form-widget.model'; diff --git a/lib/core/form/components/widgets/core/content-link.model.ts b/lib/core/form/components/widgets/core/content-link.model.ts index b9eb0561e4..f73e5095bc 100644 --- a/lib/core/form/components/widgets/core/content-link.model.ts +++ b/lib/core/form/components/widgets/core/content-link.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { RelatedContentRepresentation } from '@alfresco/js-api'; diff --git a/lib/core/form/components/widgets/core/displayable-cm-properties.model.ts b/lib/core/form/components/widgets/core/displayable-cm-properties.model.ts index 800b176e2b..ae141febb2 100644 --- a/lib/core/form/components/widgets/core/displayable-cm-properties.model.ts +++ b/lib/core/form/components/widgets/core/displayable-cm-properties.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ export interface DisplayableCMProperties { name?: string; diff --git a/lib/core/form/components/widgets/core/error-message.model.ts b/lib/core/form/components/widgets/core/error-message.model.ts index 41086f0fd3..3e4f5e233e 100644 --- a/lib/core/form/components/widgets/core/error-message.model.ts +++ b/lib/core/form/components/widgets/core/error-message.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ export class ErrorMessageModel { diff --git a/lib/core/form/components/widgets/core/external-content-link.ts b/lib/core/form/components/widgets/core/external-content-link.ts index 143fe6bd26..0dfd28da8e 100644 --- a/lib/core/form/components/widgets/core/external-content-link.ts +++ b/lib/core/form/components/widgets/core/external-content-link.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export interface ExternalContentLink { contentAvailable: boolean; diff --git a/lib/core/form/components/widgets/core/external-content.ts b/lib/core/form/components/widgets/core/external-content.ts index b8a6f48e63..457a021bd1 100644 --- a/lib/core/form/components/widgets/core/external-content.ts +++ b/lib/core/form/components/widgets/core/external-content.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export interface ExternalContent { folder: boolean; diff --git a/lib/core/form/components/widgets/core/form-field-file-source.ts b/lib/core/form/components/widgets/core/form-field-file-source.ts index f168e03453..05827f88c8 100644 --- a/lib/core/form/components/widgets/core/form-field-file-source.ts +++ b/lib/core/form/components/widgets/core/form-field-file-source.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { FormFieldSelectedFolder } from './form-field-selected-folder'; diff --git a/lib/core/form/components/widgets/core/form-field-metadata.ts b/lib/core/form/components/widgets/core/form-field-metadata.ts index ea3296566a..ce0ab3d186 100644 --- a/lib/core/form/components/widgets/core/form-field-metadata.ts +++ b/lib/core/form/components/widgets/core/form-field-metadata.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { DisplayableCMProperties } from './displayable-cm-properties.model'; import { FormFieldFileSource } from './form-field-file-source'; @@ -31,10 +31,10 @@ export interface FormFieldMetadata { }; responseVariable?: boolean; menuOptions?: { - show?: boolean, - download?: boolean, - retrieveMetadata?: boolean, - remove?: boolean + show?: boolean; + download?: boolean; + retrieveMetadata?: boolean; + remove?: boolean; }; displayableCMProperties?: DisplayableCMProperties[]; } diff --git a/lib/core/form/components/widgets/core/form-field-option.ts b/lib/core/form/components/widgets/core/form-field-option.ts index cb3610e6c2..babaf9fd25 100644 --- a/lib/core/form/components/widgets/core/form-field-option.ts +++ b/lib/core/form/components/widgets/core/form-field-option.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export interface FormFieldOption { id: string; diff --git a/lib/core/form/components/widgets/core/form-field-selected-folder.ts b/lib/core/form/components/widgets/core/form-field-selected-folder.ts index 62537f6a42..313d25c34f 100644 --- a/lib/core/form/components/widgets/core/form-field-selected-folder.ts +++ b/lib/core/form/components/widgets/core/form-field-selected-folder.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export interface FormFieldSelectedFolder { accountId: string; diff --git a/lib/core/form/components/widgets/core/form-field-templates.ts b/lib/core/form/components/widgets/core/form-field-templates.ts index 5d1d3d74a4..9a6b34d13c 100644 --- a/lib/core/form/components/widgets/core/form-field-templates.ts +++ b/lib/core/form/components/widgets/core/form-field-templates.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export interface FormFieldTemplates { [key: string]: string; diff --git a/lib/core/form/components/widgets/core/form-field-types.ts b/lib/core/form/components/widgets/core/form-field-types.ts index 43050c20e2..8b7a697bb4 100644 --- a/lib/core/form/components/widgets/core/form-field-types.ts +++ b/lib/core/form/components/widgets/core/form-field-types.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export class FormFieldTypes { static CONTAINER: string = 'container'; diff --git a/lib/core/form/components/widgets/core/form-field-validator.ts b/lib/core/form/components/widgets/core/form-field-validator.ts index a00082d7c8..31ef0eab5a 100644 --- a/lib/core/form/components/widgets/core/form-field-validator.ts +++ b/lib/core/form/components/widgets/core/form-field-validator.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import moment from 'moment-es6'; import { FormFieldTypes } from './form-field-types'; diff --git a/lib/core/form/components/widgets/core/form-field.model.ts b/lib/core/form/components/widgets/core/form-field.model.ts index 300f9b192c..411a3f1018 100644 --- a/lib/core/form/components/widgets/core/form-field.model.ts +++ b/lib/core/form/components/widgets/core/form-field.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import moment from 'moment-es6'; import { WidgetVisibilityModel } from '../../../models/widget-visibility.model'; import { ContainerColumnModel } from './container-column.model'; diff --git a/lib/core/form/components/widgets/core/form-outcome-event.model.ts b/lib/core/form/components/widgets/core/form-outcome-event.model.ts index 241bc7a9bd..9e1804e4e3 100644 --- a/lib/core/form/components/widgets/core/form-outcome-event.model.ts +++ b/lib/core/form/components/widgets/core/form-outcome-event.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { FormOutcomeModel } from './form-outcome.model'; diff --git a/lib/core/form/components/widgets/core/form-outcome.model.ts b/lib/core/form/components/widgets/core/form-outcome.model.ts index b9c4779514..87d601a2a4 100644 --- a/lib/core/form/components/widgets/core/form-outcome.model.ts +++ b/lib/core/form/components/widgets/core/form-outcome.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { FormWidgetModel } from './form-widget.model'; import { WidgetVisibilityModel } from './../../../models/widget-visibility.model'; diff --git a/lib/core/form/components/widgets/core/form-values.ts b/lib/core/form/components/widgets/core/form-values.ts index 797111c0b5..b6feba2cea 100644 --- a/lib/core/form/components/widgets/core/form-values.ts +++ b/lib/core/form/components/widgets/core/form-values.ts @@ -15,9 +15,9 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ -/* tslint:disable */ +/* eslint-disable */ import { FormFieldMetadata } from './form-field-metadata'; export interface FormValues extends FormFieldMetadata { diff --git a/lib/core/form/components/widgets/core/form-widget.model.ts b/lib/core/form/components/widgets/core/form-widget.model.ts index b6de6b651f..7102268312 100644 --- a/lib/core/form/components/widgets/core/form-widget.model.ts +++ b/lib/core/form/components/widgets/core/form-widget.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export abstract class FormWidgetModel { diff --git a/lib/core/form/components/widgets/core/form.model.ts b/lib/core/form/components/widgets/core/form.model.ts index 63ed3b59ed..c49e6382d3 100644 --- a/lib/core/form/components/widgets/core/form.model.ts +++ b/lib/core/form/components/widgets/core/form.model.ts @@ -43,7 +43,7 @@ export interface FormRepresentationModel { taskName?: string; processDefinitionId?: string; customFieldTemplates?: { - [key: string]: string + [key: string]: string; }; selectedOutcome?: string; fields?: any[]; diff --git a/lib/core/form/components/widgets/core/index.ts b/lib/core/form/components/widgets/core/index.ts index 11ec5348a0..32f097c194 100644 --- a/lib/core/form/components/widgets/core/index.ts +++ b/lib/core/form/components/widgets/core/index.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ export * from './form-field-metadata'; export * from './form-values'; diff --git a/lib/core/form/components/widgets/core/tab.model.ts b/lib/core/form/components/widgets/core/tab.model.ts index 04a2e4354d..9829d3a401 100644 --- a/lib/core/form/components/widgets/core/tab.model.ts +++ b/lib/core/form/components/widgets/core/tab.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { WidgetVisibilityModel } from '../../../models/widget-visibility.model'; import { FormWidgetModel } from './form-widget.model'; diff --git a/lib/core/form/components/widgets/date-time/date-time.widget.ts b/lib/core/form/components/widgets/date-time/date-time.widget.ts index a3a4259519..56dc3d369b 100644 --- a/lib/core/form/components/widgets/date-time/date-time.widget.ts +++ b/lib/core/form/components/widgets/date-time/date-time.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core'; import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; diff --git a/lib/core/form/components/widgets/date/date.widget.ts b/lib/core/form/components/widgets/date/date.widget.ts index 66bd03c2d5..799987c610 100644 --- a/lib/core/form/components/widgets/date/date.widget.ts +++ b/lib/core/form/components/widgets/date/date.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { UserPreferencesService, UserPreferenceValues } from '../../../../services/user-preferences.service'; import { MomentDateAdapter } from '../../../../utils/moment-date-adapter'; diff --git a/lib/core/form/components/widgets/display-text/display-text.widget.ts b/lib/core/form/components/widgets/display-text/display-text.widget.ts index 3062cc9c61..36cdadc920 100644 --- a/lib/core/form/components/widgets/display-text/display-text.widget.ts +++ b/lib/core/form/components/widgets/display-text/display-text.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/dropdown/dropdown.widget.ts b/lib/core/form/components/widgets/dropdown/dropdown.widget.ts index e05a340bba..38a8d6bc68 100644 --- a/lib/core/form/components/widgets/dropdown/dropdown.widget.ts +++ b/lib/core/form/components/widgets/dropdown/dropdown.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { Component, OnInit, ViewEncapsulation } from '@angular/core'; diff --git a/lib/core/form/components/widgets/dynamic-table/cell-validator.model.ts b/lib/core/form/components/widgets/dynamic-table/cell-validator.model.ts index b53f2c0f42..f5d770ab8d 100644 --- a/lib/core/form/components/widgets/dynamic-table/cell-validator.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/cell-validator.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { DynamicTableColumn } from './dynamic-table-column.model'; import { DynamicTableRow } from './dynamic-table-row.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/date-cell-validator-model.ts b/lib/core/form/components/widgets/dynamic-table/date-cell-validator-model.ts index baae431d3b..8f48210f2f 100644 --- a/lib/core/form/components/widgets/dynamic-table/date-cell-validator-model.ts +++ b/lib/core/form/components/widgets/dynamic-table/date-cell-validator-model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import moment from 'moment-es6'; import { CellValidator } from './cell-validator.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-row-validation-summary.model.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-row-validation-summary.model.ts index 86681b0167..c88d5679ae 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-row-validation-summary.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-row-validation-summary.model.ts @@ -17,7 +17,7 @@ import { ErrorMessageModel } from '../core/error-message.model'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ export class DynamicRowValidationSummary extends ErrorMessageModel { diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-table-column-option.model.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-table-column-option.model.ts index d0ffdb9e55..4aab2485e3 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-table-column-option.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-table-column-option.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ // maps to: com.activiti.model.editor.form.OptionRepresentation export interface DynamicTableColumnOption { diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-table-column.model.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-table-column.model.ts index 21065d6036..3e28e981bd 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-table-column.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-table-column.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { DynamicTableColumnOption } from './dynamic-table-column-option.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-table-row.model.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-table-row.model.ts index 8197696b66..97f84d23f8 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-table-row.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-table-row.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ export interface DynamicTableRow { isNew: boolean; diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.model.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.model.ts index 83dceeef82..2c7b249b95 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import moment from 'moment-es6'; import { ValidateDynamicTableRowEvent } from '../../../events/validate-dynamic-table-row.event'; diff --git a/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.ts b/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.ts index c8fd997daf..c2e18c3b62 100644 --- a/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.ts +++ b/lib/core/form/components/widgets/dynamic-table/dynamic-table.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/amount/amount.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/amount/amount.editor.ts index e084ab7954..e440d772f1 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/amount/amount.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/amount/amount.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, Input, OnInit } from '@angular/core'; import { DynamicTableColumn } from './../../dynamic-table-column.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/boolean/boolean.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/boolean/boolean.editor.ts index 4203fabd5d..6c9a9fb1db 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/boolean/boolean.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/boolean/boolean.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, Input } from '@angular/core'; import { DynamicTableColumn } from './../../dynamic-table-column.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/date/date.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/date/date.editor.ts index 245f19458a..4dea65ab7b 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/date/date.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/date/date.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { UserPreferencesService, UserPreferenceValues } from '../../../../../../services/user-preferences.service'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/datetime/datetime.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/datetime/datetime.editor.ts index 8508a4b1b1..8f234e9d3e 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/datetime/datetime.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/datetime/datetime.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { UserPreferencesService, UserPreferenceValues } from '../../../../../../services/user-preferences.service'; import { MomentDateAdapter } from '../../../../../../utils/moment-date-adapter'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts index 41deea0e65..99db2f7fbe 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../../../services/log.service'; import { Component, Input, OnInit } from '@angular/core'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/row.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/row.editor.ts index a33347f3eb..0432e53c90 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/row.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/row.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { DynamicRowValidationSummary } from './../dynamic-row-validation-summary.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/editors/text/text.editor.ts b/lib/core/form/components/widgets/dynamic-table/editors/text/text.editor.ts index 15bebcc3d4..d192884e7e 100644 --- a/lib/core/form/components/widgets/dynamic-table/editors/text/text.editor.ts +++ b/lib/core/form/components/widgets/dynamic-table/editors/text/text.editor.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, Input, OnInit } from '@angular/core'; import { DynamicTableColumn } from './../../dynamic-table-column.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/number-cell-validator.model.ts b/lib/core/form/components/widgets/dynamic-table/number-cell-validator.model.ts index cfe2a49a19..eff49ba4eb 100644 --- a/lib/core/form/components/widgets/dynamic-table/number-cell-validator.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/number-cell-validator.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { CellValidator } from './cell-validator.model'; import { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model'; diff --git a/lib/core/form/components/widgets/dynamic-table/required-cell-validator.model.ts b/lib/core/form/components/widgets/dynamic-table/required-cell-validator.model.ts index bf7de85d8b..cd0a2f3a56 100644 --- a/lib/core/form/components/widgets/dynamic-table/required-cell-validator.model.ts +++ b/lib/core/form/components/widgets/dynamic-table/required-cell-validator.model.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { CellValidator } from './cell-validator.model'; import { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model'; diff --git a/lib/core/form/components/widgets/error/error.component.ts b/lib/core/form/components/widgets/error/error.component.ts index 75043248e0..f15e781e03 100644 --- a/lib/core/form/components/widgets/error/error.component.ts +++ b/lib/core/form/components/widgets/error/error.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { animate, state, style, transition, trigger } from '@angular/animations'; import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core'; diff --git a/lib/core/form/components/widgets/file-viewer/file-viewer.widget.ts b/lib/core/form/components/widgets/file-viewer/file-viewer.widget.ts index d148c2b316..696d55aa77 100644 --- a/lib/core/form/components/widgets/file-viewer/file-viewer.widget.ts +++ b/lib/core/form/components/widgets/file-viewer/file-viewer.widget.ts @@ -19,7 +19,7 @@ import { Component, ViewEncapsulation } from '@angular/core'; import { FormService } from '../../../services/form.service'; import { WidgetComponent } from './../widget.component'; - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'file-viewer-widget', diff --git a/lib/core/form/components/widgets/functional-group/functional-group.widget.ts b/lib/core/form/components/widgets/functional-group/functional-group.widget.ts index 61e2aa8f0b..b7d9f052f5 100644 --- a/lib/core/form/components/widgets/functional-group/functional-group.widget.ts +++ b/lib/core/form/components/widgets/functional-group/functional-group.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core'; import { FormService } from '../../../services/form.service'; diff --git a/lib/core/form/components/widgets/hyperlink/hyperlink.widget.ts b/lib/core/form/components/widgets/hyperlink/hyperlink.widget.ts index 32fd9d00bb..fec6650972 100644 --- a/lib/core/form/components/widgets/hyperlink/hyperlink.widget.ts +++ b/lib/core/form/components/widgets/hyperlink/hyperlink.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/multiline-text/multiline-text.widget.ts b/lib/core/form/components/widgets/multiline-text/multiline-text.widget.ts index 309b080bf9..7608ca04ee 100644 --- a/lib/core/form/components/widgets/multiline-text/multiline-text.widget.ts +++ b/lib/core/form/components/widgets/multiline-text/multiline-text.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/number/number.widget.ts b/lib/core/form/components/widgets/number/number.widget.ts index 69064aef7e..2c2a2036a6 100644 --- a/lib/core/form/components/widgets/number/number.widget.ts +++ b/lib/core/form/components/widgets/number/number.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ViewEncapsulation, OnInit } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/people/people.widget.ts b/lib/core/form/components/widgets/people/people.widget.ts index f3f55a5530..0078784dfc 100644 --- a/lib/core/form/components/widgets/people/people.widget.ts +++ b/lib/core/form/components/widgets/people/people.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { PeopleProcessService } from '../../../../services/people-process.service'; import { UserProcessModel } from '../../../../models'; diff --git a/lib/core/form/components/widgets/radio-buttons/radio-buttons.widget.ts b/lib/core/form/components/widgets/radio-buttons/radio-buttons.widget.ts index cdcb3e43e7..5752970d49 100644 --- a/lib/core/form/components/widgets/radio-buttons/radio-buttons.widget.ts +++ b/lib/core/form/components/widgets/radio-buttons/radio-buttons.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { Component, OnInit, ViewEncapsulation } from '@angular/core'; diff --git a/lib/core/form/components/widgets/tabs/tabs.widget.ts b/lib/core/form/components/widgets/tabs/tabs.widget.ts index 5dc32a3b49..3967bccd08 100644 --- a/lib/core/form/components/widgets/tabs/tabs.widget.ts +++ b/lib/core/form/components/widgets/tabs/tabs.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { AfterContentChecked, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { FormFieldModel, TabModel } from './../core/index'; @@ -44,9 +44,7 @@ export class TabsWidgetComponent implements AfterContentChecked { } filterVisibleTabs() { - this.visibleTabs = this.tabs.filter((tab) => { - return tab.isVisible; - }); + this.visibleTabs = this.tabs.filter((tab) => tab.isVisible); } tabChanged(field: FormFieldModel) { diff --git a/lib/core/form/components/widgets/text/text-mask.component.ts b/lib/core/form/components/widgets/text/text-mask.component.ts index 1a8fb075db..37ea8c2f39 100644 --- a/lib/core/form/components/widgets/text/text-mask.component.ts +++ b/lib/core/form/components/widgets/text/text-mask.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable: component-selector no-use-before-declare no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @typescript-eslint/no-use-before-define, @angular-eslint/no-input-rename */ import { Directive, @@ -46,8 +46,8 @@ export class InputMaskDirective implements OnChanges, ControlValueAccessor { /** Object defining mask and "reversed" status. */ @Input('textMask') inputMask: { - mask: string, - isReversed: boolean + mask: string; + isReversed: boolean; }; private translationMask = { @@ -66,10 +66,10 @@ export class InputMaskDirective implements OnChanges, ControlValueAccessor { } _onChange = (_: any) => { - } + }; _onTouched = () => { - } + }; @HostListener('input', ['$event']) @HostListener('keyup', ['$event']) onTextInput(event: KeyboardEvent) { @@ -158,9 +158,9 @@ export class InputMaskDirective implements OnChanges, ControlValueAccessor { } check = this.isToCheck(isReversed, maskIndex, maskLen, valueIndex, valueLength); while (check) { - const maskDigit = mask.charAt(maskIndex), - valDigit = value.charAt(valueIndex), - translation = this.translationMask[maskDigit]; + const maskDigit = mask.charAt(maskIndex); + const valDigit = value.charAt(valueIndex); + const translation = this.translationMask[maskDigit]; if (translation) { if (valDigit.match(translation.pattern)) { diff --git a/lib/core/form/components/widgets/text/text.widget.ts b/lib/core/form/components/widgets/text/text.widget.ts index 79c4251662..08c0fb8b5e 100644 --- a/lib/core/form/components/widgets/text/text.widget.ts +++ b/lib/core/form/components/widgets/text/text.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/typeahead/typeahead.widget.spec.ts b/lib/core/form/components/widgets/typeahead/typeahead.widget.spec.ts index 25e7bb529a..d58a035fdf 100644 --- a/lib/core/form/components/widgets/typeahead/typeahead.widget.spec.ts +++ b/lib/core/form/components/widgets/typeahead/typeahead.widget.spec.ts @@ -47,8 +47,12 @@ describe('TypeaheadWidgetComponent', () => { beforeEach(() => { alfrescoApiService = TestBed.inject(AlfrescoApiService); translationService = TestBed.inject(TranslateService); - spyOn(translationService, 'instant').and.callFake((key) => { return key; }); - spyOn(translationService, 'get').and.callFake((key) => { return of(key); }); + spyOn(translationService, 'instant').and.callFake((key) => { + return key; + }); + spyOn(translationService, 'get').and.callFake((key) => { + return of(key); + }); formService = new FormService(null, alfrescoApiService, null); widget = new TypeaheadWidgetComponent(formService, null); diff --git a/lib/core/form/components/widgets/typeahead/typeahead.widget.ts b/lib/core/form/components/widgets/typeahead/typeahead.widget.ts index 38c0dd8e14..2b4c29a83e 100644 --- a/lib/core/form/components/widgets/typeahead/typeahead.widget.ts +++ b/lib/core/form/components/widgets/typeahead/typeahead.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { ENTER, ESCAPE } from '@angular/cdk/keycodes'; diff --git a/lib/core/form/components/widgets/unknown/unknown.widget.ts b/lib/core/form/components/widgets/unknown/unknown.widget.ts index c605984058..1f1998adf8 100644 --- a/lib/core/form/components/widgets/unknown/unknown.widget.ts +++ b/lib/core/form/components/widgets/unknown/unknown.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../../services/form.service'; diff --git a/lib/core/form/components/widgets/upload-folder/upload-folder.widget.ts b/lib/core/form/components/widgets/upload-folder/upload-folder.widget.ts index 37a1ca14fd..61b1daff1c 100644 --- a/lib/core/form/components/widgets/upload-folder/upload-folder.widget.ts +++ b/lib/core/form/components/widgets/upload-folder/upload-folder.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { ThumbnailService } from '../../../../services/thumbnail.service'; diff --git a/lib/core/form/components/widgets/upload/upload.widget.ts b/lib/core/form/components/widgets/upload/upload.widget.ts index 356a2aced9..9857203b35 100644 --- a/lib/core/form/components/widgets/upload/upload.widget.ts +++ b/lib/core/form/components/widgets/upload/upload.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { LogService } from '../../../../services/log.service'; import { ThumbnailService } from '../../../../services/thumbnail.service'; diff --git a/lib/core/form/components/widgets/widget.component.ts b/lib/core/form/components/widgets/widget.component.ts index 844f2b5ff6..a71c46779a 100644 --- a/lib/core/form/components/widgets/widget.component.ts +++ b/lib/core/form/components/widgets/widget.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { AfterViewInit, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { FormService } from './../../services/form.service'; diff --git a/lib/core/form/services/form-rendering.service.ts b/lib/core/form/services/form-rendering.service.ts index f12d516ce0..e9ae3e7b4e 100644 --- a/lib/core/form/services/form-rendering.service.ts +++ b/lib/core/form/services/form-rendering.service.ts @@ -24,7 +24,7 @@ import * as widgets from './../components/widgets/index'; }) export class FormRenderingService extends DynamicComponentMapper { - protected defaultValue: Type<{}> = widgets.UnknownWidgetComponent; + protected defaultValue: Type = widgets.UnknownWidgetComponent; protected types: { [key: string]: DynamicComponentResolveFunction } = { 'text': DynamicComponentResolver.fromType(widgets.TextWidgetComponent), 'string': DynamicComponentResolver.fromType(widgets.TextWidgetComponent), diff --git a/lib/core/form/services/widget-visibility.service.ts b/lib/core/form/services/widget-visibility.service.ts index 4b74590d3a..0451d011b4 100644 --- a/lib/core/form/services/widget-visibility.service.ts +++ b/lib/core/form/services/widget-visibility.service.ts @@ -157,7 +157,7 @@ export class WidgetVisibilityService { getFormValue(form: FormModel, fieldId: string): any { const formField = this.getFormFieldById(form, fieldId); - let value = undefined; + let value; if (this.isFormFieldValid(formField)) { value = this.getFieldValue(form.values, fieldId); @@ -174,7 +174,8 @@ export class WidgetVisibilityService { } getFieldValue(valueList: any, fieldId: string): any { - let labelFilterByName, valueFound; + let labelFilterByName; + let valueFound; if (fieldId && fieldId.indexOf('_LABEL') > 0) { labelFilterByName = fieldId.substring(0, fieldId.length - 6); if (valueList[labelFilterByName]) { diff --git a/lib/core/layout/components/sidenav-layout/sidenav-layout.component.spec.ts b/lib/core/layout/components/sidenav-layout/sidenav-layout.component.spec.ts index c04756f341..7672f3228c 100644 --- a/lib/core/layout/components/sidenav-layout/sidenav-layout.component.spec.ts +++ b/lib/core/layout/components/sidenav-layout/sidenav-layout.component.spec.ts @@ -15,12 +15,10 @@ * limitations under the License. */ -/*tslint:disable: ban*/ - import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { SidenavLayoutComponent } from './sidenav-layout.component'; -import { Component, Input } from '@angular/core'; +import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core'; import { LayoutModule, MediaMatcher } from '@angular/cdk/layout'; import { PlatformModule } from '@angular/cdk/platform'; import { MaterialModule } from '../../../material.module'; @@ -78,10 +76,10 @@ export class SidenavLayoutTesterComponent {} describe('SidenavLayoutComponent', () => { - let fixture: ComponentFixture, - mediaMatcher: MediaMatcher, - mediaQueryList: any, - component: SidenavLayoutComponent; + let fixture: ComponentFixture; + let mediaMatcher: MediaMatcher; + let mediaQueryList: any; + let component: SidenavLayoutComponent; setupTestBed({ imports: [ @@ -100,6 +98,9 @@ describe('SidenavLayoutComponent', () => { providers: [ MediaMatcher, { provide: UserPreferencesService, useValue: { select: () => of() } } + ], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA ] }); @@ -107,7 +108,9 @@ describe('SidenavLayoutComponent', () => { mediaQueryList = { mediaFn: null, matches: false, - addListener: function (mediaFn) { this.mediaFn = mediaFn; }, + addListener(mediaFn) { + this.mediaFn = mediaFn; + }, removeListener: () => {} }; diff --git a/lib/core/login/components/login.component.spec.ts b/lib/core/login/components/login.component.spec.ts index e55ff32d35..dee8509805 100644 --- a/lib/core/login/components/login.component.spec.ts +++ b/lib/core/login/components/login.component.spec.ts @@ -43,7 +43,8 @@ describe('LoginComponent', () => { let appConfigService: AppConfigService; let alfrescoApiService: AlfrescoApiService; - let usernameInput, passwordInput; + let usernameInput; + let passwordInput; const getLoginErrorElement = () => { return element.querySelector('#login-error'); diff --git a/lib/core/mock/alfresco-api.mock.ts b/lib/core/mock/alfresco-api.mock.ts index 46a769dc02..1b11d69703 100644 --- a/lib/core/mock/alfresco-api.mock.ts +++ b/lib/core/mock/alfresco-api.mock.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -/* tslint:disable:adf-file-name */ export class AlfrescoApiMock { login() { diff --git a/lib/core/mock/alfresco-api.service.mock.ts b/lib/core/mock/alfresco-api.service.mock.ts index 4106f67aab..fb86a75123 100644 --- a/lib/core/mock/alfresco-api.service.mock.ts +++ b/lib/core/mock/alfresco-api.service.mock.ts @@ -20,7 +20,6 @@ import { AppConfigService } from '../app-config/app-config.service'; import { AlfrescoApiService } from '../services/alfresco-api.service'; import { StorageService } from '../services/storage.service'; -/* tslint:disable:adf-file-name */ @Injectable() export class AlfrescoApiServiceMock extends AlfrescoApiService { diff --git a/lib/core/mock/authentication.service.mock.ts b/lib/core/mock/authentication.service.mock.ts index 1cb41d2ddc..ccb3dc18be 100644 --- a/lib/core/mock/authentication.service.mock.ts +++ b/lib/core/mock/authentication.service.mock.ts @@ -38,7 +38,7 @@ export class AuthenticationMock { } // TODO: real auth service returns Observable - login(username: string, password: string): Observable<{ type: string, ticket: any }> { + login(username: string, password: string): Observable<{ type: string; ticket: any }> { if (username === 'fake-username' && password === 'fake-password') { return of({ type: 'type', ticket: 'ticket' }); } diff --git a/lib/core/mock/discovery-api.service.mock.ts b/lib/core/mock/discovery-api.service.mock.ts index 62fdbd2d9d..13502f482c 100644 --- a/lib/core/mock/discovery-api.service.mock.ts +++ b/lib/core/mock/discovery-api.service.mock.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -/* tslint:disable */ import { Injectable } from '@angular/core'; import { Observable, Subject, of } from 'rxjs'; import { BpmProductVersionModel } from '../models/product-version.model'; @@ -110,8 +109,6 @@ export class DiscoveryApiServiceMock { } public getBPMSystemProperties(): Observable { - return of({}); + return of({} as any); } } - -/* tslint:enable */ diff --git a/lib/core/models/ecm-user.model.ts b/lib/core/models/ecm-user.model.ts index 5a764404e2..df301d5fd4 100644 --- a/lib/core/models/ecm-user.model.ts +++ b/lib/core/models/ecm-user.model.ts @@ -39,7 +39,7 @@ export class EcmUserModel { enabled: boolean; emailNotificationsEnabled?: boolean; aspectNames?: string[]; - properties?: { [key: string]: string; }; + properties?: { [key: string]: string }; capabilities?: Capabilities; constructor(obj?: any) { diff --git a/lib/core/models/oauth-config.model.ts b/lib/core/models/oauth-config.model.ts index a358f4b9c3..505d80e9b4 100644 --- a/lib/core/models/oauth-config.model.ts +++ b/lib/core/models/oauth-config.model.ts @@ -24,6 +24,6 @@ export interface OauthConfigModel { silentLogin?: boolean; secret?: string; redirectUriLogout?: string; - refreshTokenTimeout?: Number; + refreshTokenTimeout?: number; publicUrls: string[]; } diff --git a/lib/core/notifications/models/notification.model.ts b/lib/core/notifications/models/notification.model.ts index c33bd4b10c..71100a3511 100644 --- a/lib/core/notifications/models/notification.model.ts +++ b/lib/core/notifications/models/notification.model.ts @@ -23,7 +23,7 @@ export enum NOTIFICATION_TYPE { } export interface NotificationInitiator { - key: string | Symbol; + key: string | symbol; displayName: string; firstName?: string; lastName?: string; diff --git a/lib/core/pagination/infinite-pagination.component.ts b/lib/core/pagination/infinite-pagination.component.ts index e2765e5a7f..dd3368c0d7 100644 --- a/lib/core/pagination/infinite-pagination.component.ts +++ b/lib/core/pagination/infinite-pagination.component.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ -/* tslint:disable:rxjs-no-subject-value */ +/* eslint-disable @angular-eslint/no-input-rename */ +/* eslint-disable rxjs/no-subject-value */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, diff --git a/lib/core/pagination/pagination.component.ts b/lib/core/pagination/pagination.component.ts index ec6c75ad83..dc136c3327 100644 --- a/lib/core/pagination/pagination.component.ts +++ b/lib/core/pagination/pagination.component.ts @@ -30,23 +30,23 @@ export type PaginationAction = | 'CHANGE_PAGE_SIZE' | 'CHANGE_PAGE_NUMBER'; +export const DEFAULT_PAGINATION: PaginationModel = { + skipCount: 0, + maxItems: 25, + totalItems: 0, + count: 0, + hasMoreItems: false +}; + @Component({ selector: 'adf-pagination', - host: { 'class': 'adf-pagination' }, + host: { class: 'adf-pagination' }, templateUrl: './pagination.component.html', styleUrls: ['./pagination.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }) export class PaginationComponent implements OnInit, OnDestroy, PaginationComponentInterface { - static DEFAULT_PAGINATION: PaginationModel = { - skipCount: 0, - maxItems: 25, - totalItems: 0, - count: 0, - hasMoreItems: false - }; - private _pagination: PaginationModel; private _isEmpty = true; private _hasItems = false; @@ -66,7 +66,7 @@ export class PaginationComponent implements OnInit, OnDestroy, PaginationCompone /** Pagination object. */ @Input() set pagination(value: PaginationModel) { - value = value || PaginationComponent.DEFAULT_PAGINATION; + value = value || DEFAULT_PAGINATION; this._pagination = value; this._hasItems = value && value.count > 0; @@ -83,6 +83,7 @@ export class PaginationComponent implements OnInit, OnDestroy, PaginationCompone } /** Emitted when pagination changes in any way. */ + // eslint-disable-next-line @angular-eslint/no-output-native @Output() change = new EventEmitter(); @@ -118,7 +119,7 @@ export class PaginationComponent implements OnInit, OnDestroy, PaginationCompone .pipe(takeUntil(this.onDestroy$)) .subscribe(maxItems => { this.pagination = { - ...PaginationComponent.DEFAULT_PAGINATION, + ...DEFAULT_PAGINATION, ...this.pagination, maxItems }; @@ -144,7 +145,7 @@ export class PaginationComponent implements OnInit, OnDestroy, PaginationCompone if (!this.pagination) { this.pagination = { - ...PaginationComponent.DEFAULT_PAGINATION + ...DEFAULT_PAGINATION }; } } diff --git a/lib/core/pipes/file-size.pipe.ts b/lib/core/pipes/file-size.pipe.ts index 38351d8f0c..a540dbac80 100644 --- a/lib/core/pipes/file-size.pipe.ts +++ b/lib/core/pipes/file-size.pipe.ts @@ -41,11 +41,10 @@ export class FileSizePipe implements PipeTransform { return '0 ' + this.translation.instant('CORE.FILE_SIZE.BYTES'); } - const k = 1024, - dm = decimals || 2, - sizes = ['BYTES', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], - i = Math.floor(Math.log(bytes) / Math.log(k)); - + const k = 1024; + const dm = decimals || 2; + const sizes = ['BYTES', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); const i18nSize = this.translation.instant(`CORE.FILE_SIZE.${sizes[i]}`); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + i18nSize; diff --git a/lib/core/pipes/node-name-tooltip.pipe.ts b/lib/core/pipes/node-name-tooltip.pipe.ts index 352fca8fd9..18dd406d1d 100644 --- a/lib/core/pipes/node-name-tooltip.pipe.ts +++ b/lib/core/pipes/node-name-tooltip.pipe.ts @@ -38,7 +38,9 @@ export class NodeNameTooltipPipe implements PipeTransform { private removeDuplicateLines(lines: string[]): string[] { const reducer = (acc: string[], line: string): string[] => { - if (!this.containsLine(acc, line)) { acc.push(line); } + if (!this.containsLine(acc, line)) { + acc.push(line); + } return acc; }; diff --git a/lib/core/search-text/search-text-input.component.ts b/lib/core/search-text/search-text-input.component.ts index 896e0b781c..84d1b2cf89 100644 --- a/lib/core/search-text/search-text-input.component.ts +++ b/lib/core/search-text/search-text-input.component.ts @@ -320,7 +320,6 @@ export class SearchTextInputComponent implements OnInit, OnDestroy { } private emitVisibilitySearch() { - this.isSearchBarActive() ? this.searchVisibility.emit(true) : this.searchVisibility.emit(false); + this.searchVisibility.emit(this.isSearchBarActive()); } - } diff --git a/lib/core/search-text/search-trigger.directive.ts b/lib/core/search-text/search-trigger.directive.ts index 58be0d33c0..b67c3761f1 100644 --- a/lib/core/search-text/search-trigger.directive.ts +++ b/lib/core/search-text/search-trigger.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable: no-input-rename no-use-before-declare no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename, @typescript-eslint/no-use-before-define, @angular-eslint/no-input-rename */ import { ENTER, ESCAPE } from '@angular/cdk/keycodes'; import { @@ -45,7 +45,7 @@ export const SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR: any = { * Directive selectors without adf- prefix will be deprecated on 3.0.0 */ @Directive({ - // tslint:disable-next-line:directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: `input[searchAutocomplete], textarea[searchAutocomplete]`, host: { 'role': 'combobox', @@ -139,11 +139,11 @@ export class SearchTriggerDirective implements ControlValueAccessor, OnDestroy { Promise.resolve(null).then(() => this.setTriggerValue(value)); } - registerOnChange(fn: (value: any) => {}): void { + registerOnChange(fn: (value: any) => any): void { this.onChange = fn; } - registerOnTouched(fn: () => {}) { + registerOnTouched(fn: () => any) { this.onTouched = fn; } diff --git a/lib/core/services/alfresco-api.service.ts b/lib/core/services/alfresco-api.service.ts index 5d5530c7bd..27c986cb81 100644 --- a/lib/core/services/alfresco-api.service.ts +++ b/lib/core/services/alfresco-api.service.ts @@ -22,8 +22,6 @@ import { Subject, ReplaySubject } from 'rxjs'; import { OauthConfigModel } from '../models/oauth-config.model'; import { StorageService } from './storage.service'; -/* tslint:disable:adf-file-name */ - @Injectable({ providedIn: 'root' }) diff --git a/lib/core/services/apps-process.service.spec.ts b/lib/core/services/apps-process.service.spec.ts index 69d1cf05c6..6b71f78f3b 100644 --- a/lib/core/services/apps-process.service.spec.ts +++ b/lib/core/services/apps-process.service.spec.ts @@ -24,8 +24,6 @@ import { TranslateModule } from '@ngx-translate/core'; declare let jasmine: any; -/* tslint:disable:adf-file-name */ - describe('AppsProcessService', () => { let service: AppsProcessService; diff --git a/lib/core/services/auth-guard-sso-role.service.ts b/lib/core/services/auth-guard-sso-role.service.ts index 605c087463..6c40838dc0 100644 --- a/lib/core/services/auth-guard-sso-role.service.ts +++ b/lib/core/services/auth-guard-sso-role.service.ts @@ -32,7 +32,6 @@ export class AuthGuardSsoRoleService implements CanActivate { } async canActivate(route: ActivatedRouteSnapshot): Promise { - let hasRole; let hasRealmRole = false; let hasClientRole = true; @@ -51,7 +50,7 @@ export class AuthGuardSsoRoleService implements CanActivate { } } - hasRole = hasRealmRole && hasClientRole; + const hasRole = hasRealmRole && hasClientRole; if (!hasRole && route.data && route.data['redirectUrl']) { this.router.navigate(['/' + route.data['redirectUrl']]); diff --git a/lib/core/services/authentication.service.ts b/lib/core/services/authentication.service.ts index 7a03e9a890..57b7ba37ef 100644 --- a/lib/core/services/authentication.service.ts +++ b/lib/core/services/authentication.service.ts @@ -162,7 +162,7 @@ export class AuthenticationService { * @param rememberMe Stores the user's login details if true * @returns Object with auth type ("ECM", "BPM" or "ALL") and auth ticket */ - login(username: string, password: string, rememberMe: boolean = false): Observable<{ type: string, ticket: any }> { + login(username: string, password: string, rememberMe: boolean = false): Observable<{ type: string; ticket: any }> { return from(this.alfrescoApi.getInstance().login(username, password)) .pipe( map((response: any) => { @@ -313,7 +313,7 @@ export class AuthenticationService { * @returns The redirect URL */ getRedirect(): string { - const provider = this.appConfig.get(AppConfigValues.PROVIDERS); + const provider = this.appConfig.get(AppConfigValues.PROVIDERS); return this.hasValidRedirection(provider) ? this.redirectUrl.url : null; } diff --git a/lib/core/services/deleted-nodes-api.service.ts b/lib/core/services/deleted-nodes-api.service.ts index 35465c34b2..89a86782a0 100644 --- a/lib/core/services/deleted-nodes-api.service.ts +++ b/lib/core/services/deleted-nodes-api.service.ts @@ -51,7 +51,7 @@ export class DeletedNodesApiService { * @param options Options for JS-API call * @returns List of nodes in the trash */ - getDeletedNodes(options?: Object): Observable { + getDeletedNodes(options?: any): Observable { const defaultOptions = { include: [ 'path', 'properties' ], maxItems: this.preferences.paginationSize, diff --git a/lib/core/services/directionality-config-factory.ts b/lib/core/services/directionality-config-factory.ts index d3e2ec58a0..b27bd57c02 100644 --- a/lib/core/services/directionality-config-factory.ts +++ b/lib/core/services/directionality-config-factory.ts @@ -17,6 +17,6 @@ import { DirectionalityConfigService } from '../services/directionality-config.service'; -export function directionalityConfigFactory( - directionalityConfigService: DirectionalityConfigService -): Function { return () => directionalityConfigService; } +export function directionalityConfigFactory(directionalityConfigService: DirectionalityConfigService) { + return () => directionalityConfigService; +} diff --git a/lib/core/services/download.service.ts b/lib/core/services/download.service.ts index 77e9f5edeb..9b616295b4 100644 --- a/lib/core/services/download.service.ts +++ b/lib/core/services/download.service.ts @@ -21,7 +21,7 @@ import { Injectable } from '@angular/core'; providedIn: 'root' }) export class DownloadService { - private readonly saveData: Function; + private readonly saveData: any; constructor() { this.saveData = (function() { @@ -44,9 +44,9 @@ export class DownloadService { if (blob) { if ( typeof window.navigator !== 'undefined' && - window.navigator.msSaveOrOpenBlob + window.navigator['msSaveOrOpenBlob'] ) { - navigator.msSaveOrOpenBlob(blob, fileName); + window.navigator['msSaveOrOpenBlob'](blob, fileName); } else { const url = window.URL.createObjectURL(blob); a.href = url; diff --git a/lib/core/services/dynamic-component-mapper.service.ts b/lib/core/services/dynamic-component-mapper.service.ts index 4f7d1836c0..abae906228 100644 --- a/lib/core/services/dynamic-component-mapper.service.ts +++ b/lib/core/services/dynamic-component-mapper.service.ts @@ -18,17 +18,17 @@ import { Type } from '@angular/core'; import { getType } from './get-type'; -export interface DynamicComponentModel { type: string; } -export type DynamicComponentResolveFunction = (model: DynamicComponentModel) => Type<{}>; +export interface DynamicComponentModel { type: string } +export type DynamicComponentResolveFunction = (model: DynamicComponentModel) => Type; export class DynamicComponentResolver { - static fromType(type: Type<{}>): DynamicComponentResolveFunction { + static fromType(type: Type): DynamicComponentResolveFunction { return getType(type); } } export abstract class DynamicComponentMapper { - protected defaultValue: Type<{}> = undefined; + protected defaultValue: Type = undefined; protected types: { [key: string]: DynamicComponentResolveFunction } = {}; /** @@ -37,7 +37,7 @@ export abstract class DynamicComponentMapper { * @param defaultValue Default type returned for types that are not yet mapped * @returns Resolver function */ - getComponentTypeResolver(type: string, defaultValue: Type<{}> = this.defaultValue): DynamicComponentResolveFunction { + getComponentTypeResolver(type: string, defaultValue: Type = this.defaultValue): DynamicComponentResolveFunction { if (type) { return this.types[type] || DynamicComponentResolver.fromType(defaultValue); } @@ -84,7 +84,7 @@ export abstract class DynamicComponentMapper { * @param defaultValue Default type returned for field types that are not yet mapped. * @returns Component type */ - resolveComponentType(model: DynamicComponentModel, defaultValue: Type<{}> = this.defaultValue): Type<{}> { + resolveComponentType(model: DynamicComponentModel, defaultValue: Type = this.defaultValue): Type { if (model) { const resolver = this.getComponentTypeResolver(model.type, defaultValue); return resolver(model); diff --git a/lib/core/services/highlight-transform.service.ts b/lib/core/services/highlight-transform.service.ts index a91b80c1bb..ace46bb4b8 100644 --- a/lib/core/services/highlight-transform.service.ts +++ b/lib/core/services/highlight-transform.service.ts @@ -35,8 +35,8 @@ export class HighlightTransformService { * @returns New text along with boolean value to indicate whether anything was highlighted */ public highlight(text: string, search: string, wrapperClass: string = 'adf-highlight'): HighlightTransformResult { - let isMatching = false, - result = text; + let isMatching = false; + let result = text; if (search && text) { let pattern = search.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); diff --git a/lib/core/services/jwt-helper.service.ts b/lib/core/services/jwt-helper.service.ts index 8fc70950dc..46b5612a0d 100644 --- a/lib/core/services/jwt-helper.service.ts +++ b/lib/core/services/jwt-helper.service.ts @@ -41,7 +41,7 @@ export class JwtHelperService { * @param token Token in encoded form * @returns Decoded token data object */ - decodeToken(token): Object { + decodeToken(token): any { const parts = token.split('.'); if (parts.length !== 3) { diff --git a/lib/core/services/log.service.spec.ts b/lib/core/services/log.service.spec.ts index 0693a1532f..7d2e92d806 100644 --- a/lib/core/services/log.service.spec.ts +++ b/lib/core/services/log.service.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-console */ +/* eslint-disable no-console */ import { HttpClientModule } from '@angular/common/http'; import { Component } from '@angular/core'; diff --git a/lib/core/services/log.service.ts b/lib/core/services/log.service.ts index 79238611bd..067778993d 100644 --- a/lib/core/services/log.service.ts +++ b/lib/core/services/log.service.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-console */ +/* eslint-disable no-console */ import { Injectable } from '@angular/core'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; diff --git a/lib/core/services/nodes-api.service.ts b/lib/core/services/nodes-api.service.ts index 076a85f3ff..30d0ecb226 100644 --- a/lib/core/services/nodes-api.service.ts +++ b/lib/core/services/nodes-api.service.ts @@ -203,8 +203,9 @@ export class NodesApiService { } private generateUuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + const r = Math.random() * 16 | 0; + const v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } diff --git a/lib/core/services/people-content.service.spec.ts b/lib/core/services/people-content.service.spec.ts index 88bbf2a45f..a90a81d18e 100644 --- a/lib/core/services/people-content.service.spec.ts +++ b/lib/core/services/people-content.service.spec.ts @@ -74,7 +74,9 @@ describe('PeopleContentService', () => { it('should be able to list people', (done) => { spyOn(service['peopleApi'], 'listPeople').and.returnValue(Promise.resolve(fakeEcmUserList)); service.listPeople().subscribe((response: PeopleContentQueryResponse) => { - const people = response.entries, pagination = response.pagination; + const people = response.entries; + const pagination = response.pagination; + expect(people).toBeDefined(); expect(people[0].id).toEqual('fake-id'); expect(people[1].id).toEqual('another-fake-id'); diff --git a/lib/core/services/renditions.service.ts b/lib/core/services/renditions.service.ts index c16b27be99..a5aa58eac9 100644 --- a/lib/core/services/renditions.service.ts +++ b/lib/core/services/renditions.service.ts @@ -154,7 +154,7 @@ export class RenditionsService { * @param encoding Name of the rendition encoding * @returns Null response to indicate completion */ - createRendition(nodeId: string, encoding: string): Observable<{}> { + createRendition(nodeId: string, encoding: string): Observable { return from(this.renditionsApi.createRendition(nodeId, { id: encoding })); } diff --git a/lib/core/services/search-configuration.service.ts b/lib/core/services/search-configuration.service.ts index 114743d31c..ae04a1cff7 100644 --- a/lib/core/services/search-configuration.service.ts +++ b/lib/core/services/search-configuration.service.ts @@ -45,7 +45,7 @@ export class SearchConfigurationService implements SearchConfigurationInterface skipCount: skipCount }, filterQueries: [ - { query: "TYPE:'cm:folder' OR TYPE:'cm:content'" }, + { query: `TYPE:'cm:folder' OR TYPE:'cm:content'` }, { query: 'NOT cm:creator:System' }] }; diff --git a/lib/core/services/search.service.spec.ts b/lib/core/services/search.service.spec.ts index e88a5c8cfa..d90ce60d32 100644 --- a/lib/core/services/search.service.spec.ts +++ b/lib/core/services/search.service.spec.ts @@ -49,7 +49,8 @@ describe('SearchService', () => { }); it('should call search API with additional options', (done) => { - const searchTerm = 'searchTerm63688', options = { + const searchTerm = 'searchTerm63688'; + const options = { include: [ 'path' ], rootNodeId: '-root-', nodeType: 'cm:content' diff --git a/lib/core/services/shared-links-api.service.ts b/lib/core/services/shared-links-api.service.ts index 3936e23174..d0cdd6d67d 100644 --- a/lib/core/services/shared-links-api.service.ts +++ b/lib/core/services/shared-links-api.service.ts @@ -27,7 +27,7 @@ import { catchError } from 'rxjs/operators'; }) export class SharedLinksApiService { - error = new Subject<{ statusCode: number, message: string }>(); + error = new Subject<{ statusCode: number; message: string }>(); _sharedLinksApi: SharedlinksApi; get sharedLinksApi(): SharedlinksApi { diff --git a/lib/core/services/sites.service.ts b/lib/core/services/sites.service.ts index 85eb25557f..9398fe510e 100644 --- a/lib/core/services/sites.service.ts +++ b/lib/core/services/sites.service.ts @@ -84,7 +84,7 @@ export class SitesService { * @param opts Options supported by JS-API * @returns Information about the site */ - getSite(siteId: string, opts?: any): Observable { + getSite(siteId: string, opts?: any): Observable { return from(this.sitesApi.getSite(siteId, opts)) .pipe( catchError((err: any) => this.handleError(err)) @@ -111,7 +111,7 @@ export class SitesService { * @param siteId ID of the target site * @returns Site content */ - getSiteContent(siteId: string): Observable { + getSiteContent(siteId: string): Observable { return this.getSite(siteId, { relations: ['containers'] }); } @@ -120,7 +120,7 @@ export class SitesService { * @param siteId ID of the target site * @returns Site members */ - getSiteMembers(siteId: string): Observable { + getSiteMembers(siteId: string): Observable { return this.getSite(siteId, { relations: ['members'] }); } diff --git a/lib/core/services/startup-service-factory.ts b/lib/core/services/startup-service-factory.ts index d85b9a68fe..99becc8460 100644 --- a/lib/core/services/startup-service-factory.ts +++ b/lib/core/services/startup-service-factory.ts @@ -17,6 +17,6 @@ import { AlfrescoApiService } from './alfresco-api.service'; -export function startupServiceFactory(alfrescoApiService: AlfrescoApiService): Function { +export function startupServiceFactory(alfrescoApiService: AlfrescoApiService) { return () => alfrescoApiService.load(); } diff --git a/lib/core/services/thumbnail.service.ts b/lib/core/services/thumbnail.service.ts index 040441c44b..49b9c87ec5 100644 --- a/lib/core/services/thumbnail.service.ts +++ b/lib/core/services/thumbnail.service.ts @@ -22,13 +22,12 @@ import { DomSanitizer } from '@angular/platform-browser'; import { AlfrescoApiService } from './alfresco-api.service'; import { ContentApi, NodeEntry } from '@alfresco/js-api'; +const DEFAULT_ICON = './assets/images/ft_ic_miscellaneous.svg'; + @Injectable({ providedIn: 'root' }) export class ThumbnailService { - - DEFAULT_ICON: string = './assets/images/ft_ic_miscellaneous.svg'; - mimeTypeIcons: any = { 'image/png': './assets/images/ft_ic_raster_image.svg', 'image/jpeg': './assets/images/ft_ic_raster_image.svg', @@ -201,7 +200,7 @@ export class ThumbnailService { resultUrl = this.contentApi.getDocumentThumbnailUrl(nodeId, attachment, ticket); } - return resultUrl || this.DEFAULT_ICON; + return resultUrl || DEFAULT_ICON; } /** @@ -211,7 +210,7 @@ export class ThumbnailService { */ public getMimeTypeIcon(mimeType: string): string { const icon = this.mimeTypeIcons[mimeType]; - return (icon || this.DEFAULT_ICON); + return (icon || DEFAULT_ICON); } /** @@ -219,6 +218,6 @@ export class ThumbnailService { * @returns URL string */ public getDefaultMimeTypeIcon(): string { - return this.DEFAULT_ICON; + return DEFAULT_ICON; } } diff --git a/lib/core/services/translation.service.ts b/lib/core/services/translation.service.ts index 44b33217db..7ddf741377 100644 --- a/lib/core/services/translation.service.ts +++ b/lib/core/services/translation.service.ts @@ -122,7 +122,7 @@ export class TranslationService { * @param interpolateParams String(s) to be interpolated into the main message * @returns Translated text */ - get(key: string | Array, interpolateParams?: Object): Observable { + get(key: string | Array, interpolateParams?: any): Observable { return this.translate.get(key, interpolateParams); } @@ -132,7 +132,7 @@ export class TranslationService { * @param interpolateParams String(s) to be interpolated into the main message * @returns Translated text */ - instant(key: string | Array, interpolateParams?: Object): string | any { + instant(key: string | Array, interpolateParams?: any): string | any { return key ? this.translate.instant(key, interpolateParams) : ''; } } diff --git a/lib/core/services/version-compatibility-factory.ts b/lib/core/services/version-compatibility-factory.ts index 2a7164fc3b..7044b2e285 100644 --- a/lib/core/services/version-compatibility-factory.ts +++ b/lib/core/services/version-compatibility-factory.ts @@ -17,6 +17,6 @@ import { VersionCompatibilityService } from './version-compatibility.service'; -export function versionCompatibilityFactory( - versionCompatibilityService: VersionCompatibilityService -): Function { return () => versionCompatibilityService; } +export function versionCompatibilityFactory(versionCompatibilityService: VersionCompatibilityService) { + return () => versionCompatibilityService; +} diff --git a/lib/core/settings/host-settings.component.ts b/lib/core/settings/host-settings.component.ts index 2c3e7dcd98..a7250b1771 100644 --- a/lib/core/settings/host-settings.component.ts +++ b/lib/core/settings/host-settings.component.ts @@ -23,6 +23,8 @@ import { AlfrescoApiService } from '../services/alfresco-api.service'; import { OauthConfigModel } from '../models/oauth-config.model'; import { ENTER } from '@angular/cdk/keycodes'; +export const HOST_REGEX = '^(http|https):\/\/.*[^/]$'; + @Component({ selector: 'adf-host-settings', templateUrl: 'host-settings.component.html', @@ -33,9 +35,6 @@ import { ENTER } from '@angular/cdk/keycodes'; encapsulation: ViewEncapsulation.None }) export class HostSettingsComponent implements OnInit { - - HOST_REGEX: string = '^(http|https):\/\/.*[^/]$'; - /** * Tells the component which provider options are available. Possible valid values * are "ECM" (Content), "BPM" (Process) , "ALL" (Content and Process), 'OAUTH2' SSO. @@ -48,6 +47,7 @@ export class HostSettingsComponent implements OnInit { form: FormGroup; /** Emitted when the URL is invalid. */ + // eslint-disable-next-line @angular-eslint/no-output-native @Output() error = new EventEmitter(); @@ -56,6 +56,7 @@ export class HostSettingsComponent implements OnInit { cancel = new EventEmitter(); /** Emitted when the changes are successfully applied. */ + // eslint-disable-next-line @angular-eslint/no-output-native @Output() success = new EventEmitter(); @@ -137,10 +138,10 @@ export class HostSettingsComponent implements OnInit { } private createOAuthFormGroup(): FormGroup { - const oauth = this.appConfig.get(AppConfigValues.OAUTHCONFIG, {}); + const oauth = this.appConfig.get(AppConfigValues.OAUTHCONFIG, {} as any); return this.formBuilder.group({ - host: [oauth.host, [Validators.required, Validators.pattern(this.HOST_REGEX)]], + host: [oauth.host, [Validators.required, Validators.pattern(HOST_REGEX)]], clientId: [oauth.clientId, Validators.required], redirectUri: [oauth.redirectUri, Validators.required], redirectUriLogout: [oauth.redirectUriLogout], @@ -153,15 +154,15 @@ export class HostSettingsComponent implements OnInit { } private createBPMFormControl(): FormControl { - return new FormControl(this.appConfig.get(AppConfigValues.BPMHOST), [Validators.required, Validators.pattern(this.HOST_REGEX)]); + return new FormControl(this.appConfig.get(AppConfigValues.BPMHOST), [Validators.required, Validators.pattern(HOST_REGEX)]); } private createIdentityFormControl(): FormControl { - return new FormControl(this.appConfig.get(AppConfigValues.IDENTITY_HOST), [Validators.required, Validators.pattern(this.HOST_REGEX)]); + return new FormControl(this.appConfig.get(AppConfigValues.IDENTITY_HOST), [Validators.required, Validators.pattern(HOST_REGEX)]); } private createECMFormControl(): FormControl { - return new FormControl(this.appConfig.get(AppConfigValues.ECMHOST), [Validators.required, Validators.pattern(this.HOST_REGEX)]); + return new FormControl(this.appConfig.get(AppConfigValues.ECMHOST), [Validators.required, Validators.pattern(HOST_REGEX)]); } onCancel() { diff --git a/lib/core/sorting-picker/sorting-picker.component.ts b/lib/core/sorting-picker/sorting-picker.component.ts index b095bb275a..be6fb916ce 100644 --- a/lib/core/sorting-picker/sorting-picker.component.ts +++ b/lib/core/sorting-picker/sorting-picker.component.ts @@ -28,7 +28,7 @@ export class SortingPickerComponent { /** Available sorting options */ @Input() - options: Array<{key: string, label: string}> = []; + options: Array<{key: string; label: string}> = []; /** Currently selected option key */ @Input() diff --git a/lib/core/utils/file-utils.ts b/lib/core/utils/file-utils.ts index 2e27c4d766..fcde0f86ed 100644 --- a/lib/core/utils/file-utils.ts +++ b/lib/core/utils/file-utils.ts @@ -36,7 +36,7 @@ export class FileUtils { iterations.push(Promise.all(entries.map((entry) => { if (entry.isFile) { return new Promise((resolveFile) => { - entry.file(function (file: File) { + entry.file(function(file: File) { files.push({ entry: entry, file: file, diff --git a/lib/core/viewer/components/img-viewer.component.ts b/lib/core/viewer/components/img-viewer.component.ts index fe9353a213..0a97251ca8 100644 --- a/lib/core/viewer/components/img-viewer.component.ts +++ b/lib/core/viewer/components/img-viewer.component.ts @@ -23,7 +23,7 @@ import { ViewEncapsulation, ElementRef, Output, - EventEmitter, AfterViewInit, ViewChild, HostListener + EventEmitter, AfterViewInit, ViewChild, HostListener, OnDestroy } from '@angular/core'; import { ContentService } from '../../services/content.service'; import { AppConfigService } from './../../app-config/app-config.service'; @@ -36,7 +36,7 @@ import Cropper from 'cropperjs'; host: { 'class': 'adf-image-viewer' }, encapsulation: ViewEncapsulation.None }) -export class ImgViewerComponent implements AfterViewInit, OnChanges { +export class ImgViewerComponent implements AfterViewInit, OnChanges, OnDestroy { @Input() showToolbar = true; @@ -53,9 +53,11 @@ export class ImgViewerComponent implements AfterViewInit, OnChanges { @Input() nameFile: string; + // eslint-disable-next-line @angular-eslint/no-output-native @Output() error = new EventEmitter(); + // eslint-disable-next-line @angular-eslint/no-output-native @Output() submit = new EventEmitter(); diff --git a/lib/core/viewer/components/pdf-viewer.component.ts b/lib/core/viewer/components/pdf-viewer.component.ts index 8eaddbbf47..ea814a2da5 100644 --- a/lib/core/viewer/components/pdf-viewer.component.ts +++ b/lib/core/viewer/components/pdf-viewer.component.ts @@ -15,6 +15,10 @@ * limitations under the License. */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable no-underscore-dangle */ +/* eslint-disable @angular-eslint/no-output-native */ + import { Component, TemplateRef, @@ -360,7 +364,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { if (!this.isSameScale(this.currentScale, newScale)) { this.currentScale = newScale; - this.pdfViewer._pages.forEach(function (currentPage) { + this.pdfViewer._pages.forEach(function(currentPage) { currentPage.update(newScale); }); } @@ -539,8 +543,9 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { } private generateUuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + const r = Math.random() * 16 | 0; + const v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } diff --git a/lib/core/viewer/components/viewer.component.ts b/lib/core/viewer/components/viewer.component.ts index c6185fc834..012b227200 100644 --- a/lib/core/viewer/components/viewer.component.ts +++ b/lib/core/viewer/components/viewer.component.ts @@ -217,14 +217,12 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { @Output() invalidSharedLink = new EventEmitter(); - TRY_TIMEOUT: number = 10000; - viewerType = 'unknown'; isLoading = false; nodeEntry: NodeEntry; versionEntry: VersionEntry; - extensionTemplates: { template: TemplateRef, isVisible: boolean }[] = []; + extensionTemplates: { template: TemplateRef; isVisible: boolean }[] = []; urlFileContent: string; otherMenu: any; extension: string; @@ -655,6 +653,7 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { /** * Keyboard event listener + * * @param event */ @HostListener('document:keyup', ['$event']) @@ -730,8 +729,8 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { this.viewerType = 'image'; this.urlFileContent = this.contentApi.getSharedLinkRenditionUrl(sharedId, 'imgpreview'); } - } catch (error) { - this.logService.error(error); + } catch (renditionError) { + this.logService.error(renditionError); } } } diff --git a/lib/process-services-cloud/.storybook/tsconfig.json b/lib/process-services-cloud/.storybook/tsconfig.json index 74829392d7..83c6a0ca45 100644 --- a/lib/process-services-cloud/.storybook/tsconfig.json +++ b/lib/process-services-cloud/.storybook/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "emitDecoratorMetadata": true - + }, - + "exclude": ["../**/*.spec.ts" ], "include": ["../src/**/*", "*.js"] } diff --git a/lib/process-services/src/lib/process-list/components/process-list.component.ts b/lib/process-services/src/lib/process-list/components/process-list.component.ts index 7b6e566341..76f46347dd 100644 --- a/lib/process-services/src/lib/process-list/components/process-list.component.ts +++ b/lib/process-services/src/lib/process-list/components/process-list.component.ts @@ -25,10 +25,10 @@ import { DataColumn, AppConfigService, PaginatedComponent, - PaginationComponent, PaginationModel, UserPreferencesService, - DataCellEvent + DataCellEvent, + DEFAULT_PAGINATION } from '@alfresco/adf-core'; import { AfterContentInit, @@ -90,7 +90,7 @@ export class ProcessInstanceListComponent extends DataTableSchema implements OnC /** The number of processes to fetch in each page. */ @Input() - size: number = PaginationComponent.DEFAULT_PAGINATION.maxItems; + size: number = DEFAULT_PAGINATION.maxItems; /** Data source to define the datatable. */ @Input() @@ -135,10 +135,12 @@ export class ProcessInstanceListComponent extends DataTableSchema implements OnC rowClick = new EventEmitter(); /** Emitted when the list of process instances has been loaded successfully from the server. */ + // eslint-disable-next-line @angular-eslint/no-output-native @Output() success = new EventEmitter(); /** Emitted when an error occurs while loading the list of process instances from the server. */ + // eslint-disable-next-line @angular-eslint/no-output-native @Output() error = new EventEmitter(); diff --git a/lib/process-services/src/lib/task-list/components/task-list.component.ts b/lib/process-services/src/lib/task-list/components/task-list.component.ts index e96474a83d..ad7ef84303 100644 --- a/lib/process-services/src/lib/task-list/components/task-list.component.ts +++ b/lib/process-services/src/lib/task-list/components/task-list.component.ts @@ -17,8 +17,8 @@ import { DataRowEvent, DataTableAdapter, DataTableSchema, CustomEmptyContentTemplateDirective, CustomLoadingContentTemplateDirective, - AppConfigService, PaginationComponent, PaginatedComponent, - UserPreferencesService, UserPreferenceValues, PaginationModel, DataCellEvent } from '@alfresco/adf-core'; + AppConfigService, PaginatedComponent, + UserPreferencesService, UserPreferenceValues, PaginationModel, DataCellEvent, DEFAULT_PAGINATION } from '@alfresco/adf-core'; import { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, OnDestroy, OnInit } from '@angular/core'; @@ -161,7 +161,7 @@ export class TaskListComponent extends DataTableSchema implements OnChanges, Aft /** The number of tasks to fetch. Default value: 25. */ @Input() - size: number = PaginationComponent.DEFAULT_PAGINATION.maxItems; + size: number = DEFAULT_PAGINATION.maxItems; /** Filter the tasks. Display only tasks with `created_date` after `dueAfter`. */ @Input() diff --git a/lib/stories/.storybook/tsconfig.json b/lib/stories/.storybook/tsconfig.json index 74829392d7..83c6a0ca45 100644 --- a/lib/stories/.storybook/tsconfig.json +++ b/lib/stories/.storybook/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "emitDecoratorMetadata": true - + }, - + "exclude": ["../**/*.spec.ts" ], "include": ["../src/**/*", "*.js"] } diff --git a/package-lock.json b/package-lock.json index 45a508d284..98fd45cda5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -724,6 +724,100 @@ "rxjs": "6.6.3" } }, + "@angular-eslint/builder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-1.2.0.tgz", + "integrity": "sha512-bYIut4edOq/RWyYsi3Z5NW/wEHSGLpjXfQ38zbdRlsX93+N8nAu1hf5ishbnpkEobEyerktoRVmRI8UXPsijjg==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-1.2.0.tgz", + "integrity": "sha512-HxSDdAS2/lbwYBJmRVRKlx5wjiKdeBPl7JJlciwhrP7QR01a66AWun+fW1ZpMnnqivkF+D5sISsoedRLthRcwA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.3.0" + } + }, + "@angular-eslint/eslint-plugin-template": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-1.2.0.tgz", + "integrity": "sha512-Oi/y+N/FETuyhbVuFxbkCqSfLo61CAvIPwnQQCfDku/IsCSTI1SjW+B2xO9thDI5po7t5V+3n26uMLQsWNZmlw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.3.0", + "aria-query": "^4.2.2", + "axobject-query": "^2.2.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-1.2.0.tgz", + "integrity": "sha512-F0Mb6XyLWGmmtov5kv/BHvt22Uo/FuD4y2WhO7NUA9rZRJd+anmyHCkC9HXmNKUuLQIUKjJ4DJgsmD0Kh0Hr2g==", + "dev": true, + "requires": { + "@angular-eslint/eslint-plugin": "1.2.0", + "@angular-eslint/eslint-plugin-template": "1.2.0", + "strip-json-comments": "3.1.1", + "tslint-to-eslint-config": "2.0.1" + }, + "dependencies": { + "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 + } + } + }, + "@angular-eslint/template-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-1.2.0.tgz", + "integrity": "sha512-EfNJh0nFGJInHa2ccVw8Eb9ujWoUAwaQMCi9GppzYrqhSPc0YZqdQg4eIW2AlZs1giHD2Ko/V1rphzw+9gisCw==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + } + } + }, "@angular/animations": { "version": "10.0.12", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.12.tgz", @@ -3971,6 +4065,24 @@ "regenerator-runtime": "^0.13.4" } }, + "@babel/runtime-corejs3": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", + "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", + "dev": true, + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "core-js-pure": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.3.tgz", + "integrity": "sha512-Q2H6tQ5MtPtcC7f3HxJ48i4Q7T9ybPKgvWyuH7JXIoNa2pm0KuBnycsET/qw1SLLZYfbsbrZQNMeIOClb+6WIA==", + "dev": true + } + } + }, "@babel/template": { "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", @@ -4476,11 +4588,100 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", "dev": true }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.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": { + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "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.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 + } + } + }, "@graphql-typed-document-node/core": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz", "integrity": "sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==" }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -22678,6 +22879,306 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.3.0.tgz", + "integrity": "sha512-RqEcaHuEKnn3oPFislZ6TNzsBLqpZjN93G69SS+laav/I8w/iGMuMq97P0D2/2/kW4SCebHggqhbcCfbDaaX+g==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.3.0", + "@typescript-eslint/scope-manager": "4.3.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.3.0.tgz", + "integrity": "sha512-cmmIK8shn3mxmhpKfzMMywqiEheyfXLV/+yPDnOTvQX/ztngx7Lg/OD26J8gTZfkLKUmaEBxO2jYP3keV7h2OQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.3.0", + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/typescript-estree": "4.3.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.3.0.tgz", + "integrity": "sha512-JyfRnd72qRuUwItDZ00JNowsSlpQGeKfl9jxwO0FHK1qQ7FbYdoy5S7P+5wh1ISkT2QyAvr2pc9dAemDxzt75g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.3.0", + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/typescript-estree": "4.3.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.3.0.tgz", + "integrity": "sha512-cTeyP5SCNE8QBRfc+Lgh4Xpzje46kNUhXYfc3pQWmJif92sjrFuHT9hH4rtOkDTo/si9Klw53yIr+djqGZS1ig==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/visitor-keys": "4.3.0" + } + }, + "@typescript-eslint/types": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.3.0.tgz", + "integrity": "sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.3.0.tgz", + "integrity": "sha512-ZAI7xjkl+oFdLV/COEz2tAbQbR3XfgqHEGy0rlUXzfGQic6EBCR4s2+WS3cmTPG69aaZckEucBoTxW9PhzHxxw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/visitor-keys": "4.3.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/utils": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.1.tgz", + "integrity": "sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.10.1", + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/typescript-estree": "5.10.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@typescript-eslint/scope-manager": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz", + "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/visitor-keys": "5.10.1" + } + }, + "@typescript-eslint/types": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz", + "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz", + "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/visitor-keys": "5.10.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz", + "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.10.1", + "eslint-visitor-keys": "^3.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.3.0.tgz", + "integrity": "sha512-xZxkuR7XLM6RhvLkgv9yYlTcBHnTULzfnw4i6+z2TGBLy9yljAypQaZl9c3zFvy7PNI7fYWyvKYtohyF8au3cw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "eslint-visitor-keys": "^2.0.0" + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -26051,6 +26552,15 @@ } } }, + "clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -26396,6 +26906,12 @@ } } }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true + }, "collapse-white-space": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", @@ -26515,6 +27031,18 @@ "repeat-string": "^1.6.1" } }, + "comment-parser": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", + "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -26803,6 +27331,12 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -27383,6 +27917,15 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, + "cson-parser": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-4.0.7.tgz", + "integrity": "sha512-BSnAl0gllETWjU9/lb8MmeqhsGaRINPwhoPiBjI/TJBRvKf/24I9EVqnwvmk6R3Gt66cMRSGVktl6QicxIb72g==", + "dev": true, + "requires": { + "coffeescript": "1.12.7" + } + }, "cspell": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/cspell/-/cspell-5.5.1.tgz", @@ -29360,6 +29903,994 @@ } } }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "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", + "escape-string-regexp": "^4.0.0", + "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", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "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.merge": "^4.6.2", + "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.9", + "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" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "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" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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" + } + }, + "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" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "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 + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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 + }, + "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" + } + }, + "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.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": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, + "eslint-etc": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-5.1.0.tgz", + "integrity": "sha512-Rmjl01h5smi5cbsFne2xpTuch2xNnwXiX2lbS4HttXUN5FwXKAwG1UEFBVGO1nC091YO/QyVahyfNPJSX2ae+g==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^5.0.0", + "tsutils": "^3.17.1", + "tsutils-etc": "^1.4.1" + }, + "dependencies": { + "@types/yargs": { + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", + "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.10.1.tgz", + "integrity": "sha512-Ryeb8nkJa/1zKl8iujNtJC8tgj6PgaY0sDUnrTqbmC70nrKKkZaHfiRDTcqICmCSCEQyLQcJAoh0AukLaIaGTw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.10.1" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "tsutils-etc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tsutils-etc/-/tsutils-etc-1.4.1.tgz", + "integrity": "sha512-6UPYgc7OXcIW5tFxlsZF3OVSBvDInl/BkS3Xsu64YITXk7WrnWTVByKWPCThFDBp5gl5IGHOzGMdQuDCE7OL4g==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.0", + "yargs": "^17.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-jsdoc": { + "version": "30.7.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.6.tgz", + "integrity": "sha512-w18IOiS/9ahKgRfQOuHbce+EQYx3fwIkZhUZDEK+augNlhJkzgTSZkrBkzaflSbFNZ9/Tk4xzUABEaTbsBSzew==", + "dev": true, + "requires": { + "comment-parser": "^0.7.6", + "debug": "^4.2.0", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.2", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "eslint-plugin-prefer-arrow": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz", + "integrity": "sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ==", + "dev": true + }, + "eslint-plugin-rxjs": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-rxjs/-/eslint-plugin-rxjs-5.0.2.tgz", + "integrity": "sha512-Q2wsEHWInhZ3uz5df+YbD4g/NPQqAeYHjJuEsxqgVS+XAsYCuVE2pj9kADdMFy4GsQy2jt7KP+TOrnq1i6bI5Q==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^5.0.0", + "common-tags": "^1.8.0", + "decamelize": "^5.0.0", + "eslint-etc": "^5.1.0", + "requireindex": "~1.2.0", + "rxjs-report-usage": "^1.0.4", + "tslib": "^2.0.0", + "tsutils": "^3.0.0", + "tsutils-etc": "^1.4.1" + }, + "dependencies": { + "@types/yargs": { + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", + "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.10.1.tgz", + "integrity": "sha512-Ryeb8nkJa/1zKl8iujNtJC8tgj6PgaY0sDUnrTqbmC70nrKKkZaHfiRDTcqICmCSCEQyLQcJAoh0AukLaIaGTw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.10.1" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "tsutils-etc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tsutils-etc/-/tsutils-etc-1.4.1.tgz", + "integrity": "sha512-6UPYgc7OXcIW5tFxlsZF3OVSBvDInl/BkS3Xsu64YITXk7WrnWTVByKWPCThFDBp5gl5IGHOzGMdQuDCE7OL4g==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.0", + "yargs": "^17.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + } + } + }, + "eslint-plugin-unicorn": { + "version": "40.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.1.0.tgz", + "integrity": "sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "ci-info": "^3.3.0", + "clean-regexp": "^1.0.0", + "eslint-utils": "^3.0.0", + "esquery": "^1.4.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.1.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.24", + "safe-regex": "^2.1.1", + "semver": "^7.3.5", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "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" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "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" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "requires": { + "regexp-tree": "~0.1.1" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -29370,6 +30901,54 @@ "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", @@ -30674,6 +32253,12 @@ } } }, + "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 + }, "functions-have-names": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", @@ -32451,6 +34036,15 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, "is-callable": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", @@ -35376,6 +36970,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -35534,6 +37134,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", @@ -36515,6 +38121,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -39808,6 +41420,12 @@ "find-up": "^3.0.0" } }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -41362,6 +42980,12 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -43005,6 +44629,12 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, + "regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true + }, "regexp.prototype.flags": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", @@ -43015,6 +44645,12 @@ "define-properties": "^1.1.3" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", @@ -43025,6 +44661,12 @@ "regjsparser": "^0.1.4" } }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -43646,6 +45288,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -46524,6 +48172,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -47547,6 +49201,87 @@ } } }, + "tslint-to-eslint-config": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslint-to-eslint-config/-/tslint-to-eslint-config-2.0.1.tgz", + "integrity": "sha512-RURU/zcBQpW9jKS7H2J6of4+64npTb0nrH7ND8tNhagMwryVjVnUDcucsl8DQuD7tO9RgjFO9bmJfDhyP0yV1w==", + "dev": true, + "requires": { + "chalk": "4.1.0", + "commander": "6.2.0", + "cson-parser": "4.0.7", + "eslint-config-prettier": "6.15.0", + "glob": "7.1.6", + "json5": "2.1.3", + "lodash": "4.17.20", + "minimatch": "3.0.4", + "tslint": "6.1.3", + "typescript": "4.1.2" + }, + "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" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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" + } + }, + "commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true + }, + "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 + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "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" + } + }, + "typescript": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", + "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", + "dev": true + } + } + }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", diff --git a/package.json b/package.json index c9c4735e92..1f48c6831d 100644 --- a/package.json +++ b/package.json @@ -171,7 +171,20 @@ "tsconfig-paths": "^3.12.0", "tslint": "6.1.3", "typescript": "3.9.8", - "webdriver-manager": "12.1.8" + "webdriver-manager": "12.1.8", + "eslint": "^7.6.0", + "eslint-plugin-import": "2.22.1", + "eslint-plugin-jsdoc": "30.7.6", + "eslint-plugin-prefer-arrow": "1.2.2", + "@angular-eslint/builder": "1.2.0", + "@angular-eslint/eslint-plugin": "1.2.0", + "@angular-eslint/eslint-plugin-template": "1.2.0", + "@angular-eslint/schematics": "1.2.0", + "@angular-eslint/template-parser": "1.2.0", + "@typescript-eslint/eslint-plugin": "4.3.0", + "@typescript-eslint/parser": "4.3.0", + "eslint-plugin-unicorn": "latest", + "eslint-plugin-rxjs": "latest" }, "license": "Apache-2.0", "bundlesize": [ diff --git a/tsconfig.base.json b/tsconfig.base.json deleted file mode 100644 index a06ac98956..0000000000 --- a/tsconfig.base.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "compileOnSave": false, - "compilerOptions": { - "downlevelIteration": true, - "module": "esnext", - "rootDir": ".", - "outDir": "./dist/out-tsc", - "baseUrl": ".", - "sourceMap": true, - "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "target": "es2015", - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "typeRoots": [ - "node_modules/@types" - ], - "types": ["jasmine", "node", "jasminewd2"], - "lib": [ - "es2018", - "esnext.array", - "esnext.asynciterable", - "dom" - ], - "paths": { - "@alfresco/js-api": ["node_modules/@alfresco/js-api"], - "@alfresco/adf-extensions": ["lib/extensions"], - "@alfresco/adf-core": ["lib/core"], - "@alfresco/adf-content-services": ["lib/content-services"], - "@alfresco/adf-process-services": ["lib/process-services"], - "@alfresco/adf-insights": ["lib/insights"], - "@alfresco/adf-process-services-cloud": ["lib/process-services-cloud"], - "@alfresco/adf-testing": ["lib/testing"] - } - }, - "exclude": [ - "lib/config", - "integration", - "scripts", - "assets", - "tools", - "node_modules" - ], - "angularCompilerOptions": { - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "strictTemplates": true - } -} diff --git a/tsconfig.json b/tsconfig.json index ffcbb9477e..a06ac98956 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,55 @@ { - "extends": "./tsconfig.base.json" + "compileOnSave": false, + "compilerOptions": { + "downlevelIteration": true, + "module": "esnext", + "rootDir": ".", + "outDir": "./dist/out-tsc", + "baseUrl": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "skipLibCheck": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "target": "es2015", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "typeRoots": [ + "node_modules/@types" + ], + "types": ["jasmine", "node", "jasminewd2"], + "lib": [ + "es2018", + "esnext.array", + "esnext.asynciterable", + "dom" + ], + "paths": { + "@alfresco/js-api": ["node_modules/@alfresco/js-api"], + "@alfresco/adf-extensions": ["lib/extensions"], + "@alfresco/adf-core": ["lib/core"], + "@alfresco/adf-content-services": ["lib/content-services"], + "@alfresco/adf-process-services": ["lib/process-services"], + "@alfresco/adf-insights": ["lib/insights"], + "@alfresco/adf-process-services-cloud": ["lib/process-services-cloud"], + "@alfresco/adf-testing": ["lib/testing"] + } + }, + "exclude": [ + "lib/config", + "integration", + "scripts", + "assets", + "tools", + "node_modules" + ], + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "strictTemplates": true + } }