From 8dc736e8f0a35a308e37749e1236e44f265c4572 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Thu, 3 Feb 2022 11:01:54 +0000 Subject: [PATCH] [AAE-7100] migrate ADF projects to eslint (#7483) * migrate content services to eslint * migrate insights to eslint * migrate extensions to eslint * migrate testing lib to eslint * migrate CLI to eslint * migrate process-services to eslint * migrate process-services-cloud to eslint * remove cli analytics [ci:force] --- .eslintrc.json | 2 +- angular.json | 110 +++++--------- lib/cli/.eslintrc.json | 104 +++++++++++++ lib/cli/scripts/artifact-from-s3.ts | 2 +- lib/cli/scripts/artifact-to-s3.ts | 2 +- lib/cli/scripts/audit.ts | 4 +- lib/cli/scripts/changelog.ts | 4 +- lib/cli/scripts/check-cs-env.ts | 4 +- lib/cli/scripts/check-ps-env.ts | 4 +- lib/cli/scripts/docker-publish.ts | 2 +- lib/cli/scripts/docker.ts | 6 +- lib/cli/scripts/init-aae-env.ts | 138 ++++++++++++------ lib/cli/scripts/init-acs-env.ts | 10 +- lib/cli/scripts/init-aps-env.ts | 14 +- lib/cli/scripts/kubectl-clean-app.ts | 47 ++++-- lib/cli/scripts/kubectl-delete.ts | 2 +- lib/cli/scripts/kubectl-image.ts | 2 +- lib/cli/scripts/licenses.ts | 10 +- lib/cli/scripts/logger.ts | 4 +- lib/cli/scripts/npm-publish.ts | 2 +- lib/cli/scripts/plugins/plugin-config.ts | 15 +- lib/cli/scripts/scan-env.ts | 32 ++-- lib/cli/scripts/update-commit-sha.ts | 2 +- lib/content-services/.eslintrc.json | 110 ++++++++++++++ .../src/lib/audit/audit.service.ts | 2 +- .../interfaces/property-group.interface.ts | 2 +- .../services/basic-properties.service.ts | 11 +- .../aspect-oriented-config.service.spec.ts | 17 +-- .../config/aspect-oriented-config.service.ts | 8 +- .../config/indifferent-config.service.ts | 4 +- .../layout-oriented-config.service.spec.ts | 12 +- .../config/layout-oriented-config.service.ts | 24 +-- .../services/content-metadata.service.ts | 2 +- .../content-node-dialog.service.ts | 2 +- .../content-node-selector-panel.component.ts | 2 +- .../content-node-share.directive.ts | 2 +- .../src/lib/dialogs/folder.dialog.spec.ts | 4 +- .../src/lib/dialogs/folder.dialog.ts | 4 +- .../lib/dialogs/library/library.dialog.html | 1 - .../src/lib/directives/node-lock.directive.ts | 2 +- .../content-action-list.component.ts | 2 +- .../content-action.component.ts | 6 +- .../document-list.component.spec.ts | 8 +- .../components/document-list.component.ts | 8 +- .../filter-header/filter-header.component.ts | 4 +- .../models/content-action.model.ts | 6 +- .../services/document-actions.service.ts | 2 +- .../services/folder-actions.service.ts | 2 +- .../services/node-actions.service.ts | 2 +- .../folder-create.directive.ts | 2 +- .../folder-directive/folder-edit.directive.ts | 2 +- .../src/lib/mock/search-filter-mock.ts | 16 +- .../search-config-permission.service.ts | 2 +- .../components/inherited-button.directive.ts | 2 +- .../permission-container.component.ts | 2 +- .../permission-list.component.ts | 4 +- .../permission-list.service.spec.ts | 14 +- .../permission-list.service.ts | 5 +- .../components/pop-over.directive.ts | 2 +- .../services/node-permission.service.spec.ts | 4 +- .../services/node-permission.service.ts | 7 +- .../search-check-list.component.spec.ts | 20 +-- .../search-date-range.component.ts | 2 +- .../search-datetime-range.component.ts | 2 +- .../search-filter-container.component.spec.ts | 3 +- .../search-number-range.component.ts | 2 +- .../search-panel.component.spec.ts | 20 +-- .../search-text/search-text.component.spec.ts | 14 +- .../search-widget-container.component.ts | 2 +- .../components/search.component.spec.ts | 3 +- .../lib/search/components/search.component.ts | 1 + .../forms/search-term-validator.spec.ts | 2 +- .../search/services/search-filter.service.ts | 2 +- .../lib/social/mock/rating.service.mock.ts | 4 +- .../src/lib/social/rating.component.ts | 4 +- .../services/rating.service.interface.ts | 4 +- .../src/lib/social/services/rating.service.ts | 4 +- .../src/lib/tag/services/tag.service.ts | 2 +- .../components/base-upload/upload-base.ts | 2 +- .../components/upload-drag-area.component.ts | 7 +- .../directives/file-draggable.directive.ts | 2 +- lib/extensions/.eslintrc.json | 110 ++++++++++++++ .../dynamic.component.spec.ts | 2 +- .../src/lib/config/extension-utils.ts | 2 +- .../services/component-register.service.ts | 6 +- .../src/lib/services/extension.service.ts | 24 ++- .../lib/services/startup-extension-factory.ts | 2 +- lib/insights/.eslintrc.json | 110 ++++++++++++++ ...analytics-report-parameters.component.html | 1 - .../widgets/checkbox/checkbox.widget.ts | 2 +- .../widgets/date-range/date-range.widget.ts | 2 +- .../widgets/dropdown/dropdown.widget.ts | 2 +- .../widgets/duration/duration.widget.ts | 2 +- .../widgets/number/number.widget.ts | 2 +- .../components/widgets/widget.component.ts | 2 +- .../diagram-box-publish-task.component.ts | 2 +- .../diagram-business-rule-task.component.ts | 2 +- .../diagram-camel-task.component.ts | 2 +- ...iagram-container-service-task.component.ts | 2 +- ...ram-google-drive-publish-task.component.ts | 2 +- .../diagram-manual-task.component.ts | 2 +- .../activities/diagram-mule-task.component.ts | 2 +- .../diagram-receive-task.component.ts | 2 +- .../diagram-rest-call-task.component.ts | 2 +- .../diagram-script-task.component.ts | 2 +- .../activities/diagram-send-task.component.ts | 2 +- .../diagram-service-task.component.ts | 2 +- .../activities/diagram-task.component.ts | 2 +- .../activities/diagram-user-task.component.ts | 2 +- .../diagram-boundary-event.component.ts | 2 +- .../diagram-throw-event.component.ts | 2 +- .../events/diagram-end-event.component.ts | 2 +- .../events/diagram-event.component.ts | 2 +- .../events/diagram-start-event.component.ts | 2 +- .../diagram-event-gateway.component.ts | 2 +- .../diagram-exclusive-gateway.component.ts | 2 +- .../gateways/diagram-gateway.component.ts | 2 +- .../diagram-inclusive-gateway.component.ts | 2 +- .../diagram-parallel-gateway.component.ts | 2 +- .../diagram-container-icon-event.component.ts | 2 +- ...am-icon-alfresco-publish-task.component.ts | 2 +- ...diagram-icon-box-publish-task.component.ts | 2 +- ...agram-icon-business-rule-task.component.ts | 2 +- .../diagram-icon-camel-task.component.ts | 2 +- .../icons/diagram-icon-error.component.ts | 2 +- ...con-google-drive-publish-task.component.ts | 2 +- .../diagram-icon-manual-task.component.ts | 2 +- .../icons/diagram-icon-message.component.ts | 2 +- .../icons/diagram-icon-mule-task.component.ts | 2 +- .../diagram-icon-receive-task.component.ts | 2 +- .../diagram-icon-rest-call-task.component.ts | 2 +- .../diagram-icon-script-task.component.ts | 2 +- .../icons/diagram-icon-send-task.component.ts | 2 +- .../diagram-icon-service-task.component.ts | 2 +- .../icons/diagram-icon-signal.component.ts | 2 +- .../icons/diagram-icon-timer.component.ts | 2 +- .../icons/diagram-icon-user-task.component.ts | 2 +- ...m-intermediate-catching-event.component.ts | 2 +- .../diagram/components/raphael/polyline.ts | 2 +- .../diagram-event-subprocess.component.ts | 2 +- .../diagram-subprocess.component.ts | 2 +- .../swimlanes/diagram-lane.component.ts | 2 +- .../swimlanes/diagram-lanes.component.ts | 2 +- .../swimlanes/diagram-pool.component.ts | 2 +- .../swimlanes/diagram-pools.component.ts | 2 +- .../tooltip/diagram-tooltip.component.spec.ts | 8 +- .../tooltip/diagram-tooltip.component.ts | 2 +- lib/process-services-cloud/.eslintrc.json | 101 +++++++++++++ .../app/models/application-instance.model.ts | 2 +- .../services/apps-process-cloud.service.ts | 15 +- .../date-range-filter.component.ts | 4 +- .../components/form-cloud.component.spec.ts | 1 + .../attach-file-cloud-widget.component.ts | 2 +- .../file-properties-table-cloud.component.ts | 2 +- .../attach-file/upload-cloud.widget.ts | 2 +- .../widgets/date/date-cloud.widget.ts | 2 +- .../widgets/dropdown/dropdown-cloud.widget.ts | 8 +- .../widgets/group/group-cloud.widget.ts | 15 +- .../widgets/people/people-cloud.widget.ts | 17 +-- .../properties-viewer-wrapper.component.ts | 2 +- .../properties-viewer.widget.ts | 2 +- .../radio-buttons-cloud.widget.ts | 2 +- .../lib/form/mocks/form-cloud.service.mock.ts | 2 +- .../services/form-cloud.service.interface.ts | 2 +- .../group/components/group-cloud.component.ts | 4 +- .../components/people-cloud.component.ts | 4 +- .../directives/cancel-process.directive.ts | 2 +- .../models/process-filter-cloud.model.ts | 30 ++-- .../services/process-filter-cloud.service.ts | 8 +- .../services/process-list-cloud.service.ts | 2 +- .../start-process-cloud.component.spec.ts | 2 +- .../start-process-cloud.component.ts | 2 +- .../models/process-payload-cloud.model.ts | 2 +- .../lib/services/form-fields.interfaces.ts | 9 +- .../directives/claim-task-cloud.directive.ts | 2 +- .../directives/complete-task.directive.ts | 2 +- .../unclaim-task-cloud.directive.ts | 2 +- .../base-task-filters-cloud.component.ts | 2 +- .../base-edit-task-filter-cloud.component.ts | 2 +- .../task-filters/models/filter-cloud.model.ts | 26 ++-- .../service-task-filter-cloud.service.ts | 4 +- .../services/task-filter-cloud.service.ts | 4 +- .../base-task-list-cloud.component.ts | 2 +- .../task-list-cloud.component.spec.ts | 6 +- .../service-task-list-cloud.service.ts | 6 +- .../services/task-list-cloud.service.ts | 5 +- lib/process-services-cloud/tslint.json | 17 --- lib/process-services/.eslintrc.json | 101 +++++++++++++ ...-file-widget-dialog-component.interface.ts | 2 +- .../attach-file-widget-dialog.service.ts | 2 +- .../attach-file-widget.component.ts | 2 +- .../attach-folder-widget.component.ts | 2 +- .../src/lib/form/form.component.spec.ts | 1 + .../src/lib/form/start-form.component.spec.ts | 8 +- .../people-selector.component.ts | 2 +- .../people-search-action-label.directive.ts | 2 +- .../people-search-title.directive.ts | 2 +- .../components/process-audit.directive.ts | 4 +- .../services/process.service.spec.ts | 4 +- .../no-task-detail-template.directive.ts | 2 +- .../components/task-audit.directive.ts | 4 +- .../components/task-filters.component.ts | 21 ++- .../task-form/claim-task.directive.ts | 19 +-- .../task-form/task-form.component.ts | 4 +- .../task-form/unclaim-task.directive.ts | 15 +- lib/process-services/tslint.json | 17 --- lib/testing/.eslintrc.json | 101 +++++++++++++ .../identity/group-identity.service.ts | 9 +- .../core/actions/identity/identity.service.ts | 18 ++- .../core/actions/identity/query.service.ts | 63 ++++---- .../core/actions/identity/roles.service.ts | 6 +- .../form/widgets/container-widget.page.ts | 2 +- .../form/widgets/display-value-widget.page.ts | 4 +- .../form/widgets/document-widget.page.ts | 2 +- .../widgets/multiline-text-widget.page.ts | 2 +- .../pages/form/widgets/text-widget.page.ts | 2 +- .../core/pages/material/tabs.page.ts | 6 +- .../lib/protractor/core/utils/date-util.ts | 2 +- .../src/lib/protractor/core/utils/logger.ts | 2 +- .../actions/form-cloud.service.ts | 18 +-- .../actions/message-events.service.ts | 4 +- .../actions/process-instances.service.ts | 23 +-- .../process-services-cloud/actions/project.ts | 7 +- .../actions/tasks.service.ts | 19 ++- ...dit-process-filter-cloud-component.page.ts | 34 +++-- .../widget/attach-file-widget-cloud.page.ts | 4 +- .../pages/people-cloud-component.page.ts | 2 +- .../process-filters-cloud-component.page.ts | 2 +- .../resources/resources.ts | 1 + .../actions/integration.service.ts | 2 +- lib/testing/src/lib/shared/api/api.service.ts | 10 +- lib/testing/src/lib/shared/utils/logger.ts | 4 +- lib/testing/tslint.json | 18 --- 233 files changed, 1496 insertions(+), 725 deletions(-) create mode 100644 lib/cli/.eslintrc.json create mode 100644 lib/content-services/.eslintrc.json create mode 100644 lib/extensions/.eslintrc.json create mode 100644 lib/insights/.eslintrc.json create mode 100644 lib/process-services-cloud/.eslintrc.json delete mode 100644 lib/process-services-cloud/tslint.json create mode 100644 lib/process-services/.eslintrc.json delete mode 100644 lib/process-services/tslint.json create mode 100644 lib/testing/.eslintrc.json delete mode 100644 lib/testing/tslint.json diff --git a/.eslintrc.json b/.eslintrc.json index f9066a3275..17b5cc9b69 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -11,7 +11,7 @@ "parserOptions": { "project": [ "tsconfig.json", - "e2e/tsconfig.json" + "e2e/tsconfig.e2e.json" ], "createDefaultProgram": true }, diff --git a/angular.json b/angular.json index fd12e3892c..c084694891 100644 --- a/angular.json +++ b/angular.json @@ -507,19 +507,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/content-services/tsconfig.lib.json", - "lib/content-services/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/extensions/**/*", - "**/lib/core/**/*", - "**/lib/insights/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/process-services/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/content-services/**/*.ts", + "lib/content-services/**/*.html" ] } }, @@ -588,19 +580,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/process-services/tsconfig.lib.json", - "lib/process-services/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/extensions/**/*", - "**/lib/core/**/*", - "**/lib/insights/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/content-services/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/process-services/**/*.ts", + "lib/process-services/**/*.html" ] } } @@ -636,19 +620,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/process-services-cloud/tsconfig.lib.json", - "lib/process-services-cloud/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/extensions/**/*", - "**/lib/core/**/*", - "**/lib/insights/**/*", - "**/lib/process-services/**/*", - "**/lib/content-services/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/process-services-cloud/**/*.ts", + "lib/process-services-cloud/**/*.html" ] } }, @@ -717,19 +693,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/insights/tsconfig.lib.json", - "lib/insights/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/extensions/**/*", - "**/lib/core/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/process-services/**/*", - "**/lib/content-services/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/insights/**/*.ts", + "lib/insights/**/*.html" ] } } @@ -764,19 +732,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/extensions/tsconfig.lib.json", - "lib/extensions/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/core/**/*", - "**/lib/content-services/**/*", - "**/lib/process-services/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/insights/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/extensions/**/*.ts", + "lib/extensions/**/*.html" ] } } @@ -801,19 +761,11 @@ } }, "lint": { - "builder": "@angular-devkit/build-angular:tslint", + "builder": "@angular-eslint/builder:lint", "options": { - "tsConfig": [ - "lib/testing/tsconfig.lib.json", - "lib/testing/tsconfig.spec.json" - ], - "exclude": [ - "**/lib/core/**/*", - "**/lib/content-services/**/*", - "**/lib/process-services/**/*", - "**/lib/process-services-cloud/**/*", - "**/lib/insight/**/*", - "**/node_modules/**" + "lintFilePatterns": [ + "lib/testing/**/*.ts", + "lib/testing/**/*.html" ] } } @@ -835,6 +787,15 @@ "tsConfig": "lib/cli/tsconfig.lib.prod.json" } } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "lib/cli/**/*.ts", + "lib/cli/**/*.html" + ] + } } } }, @@ -879,8 +840,5 @@ } } }, - "defaultProject": "demoshell", - "cli": { - "analytics": "0ce5075f-0835-439a-bebe-7c41750179a6" - } + "defaultProject": "demoshell" } diff --git a/lib/cli/.eslintrc.json b/lib/cli/.eslintrc.json new file mode 100644 index 0000000000..670429d4e2 --- /dev/null +++ b/lib/cli/.eslintrc.json @@ -0,0 +1,104 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/cli/tsconfig.json" + ], + "createDefaultProgram": true + }, + "plugins": [ + "eslint-plugin-unicorn", + "eslint-plugin-rxjs" + ], + "rules": { + "prefer-arrow/prefer-arrow-functions": "warn", + "@typescript-eslint/no-var-requires": "warn", + "@typescript-eslint/naming-convention": "warn", + "quote-props": "warn", + "no-shadow": "warn", + "@typescript-eslint/consistent-type-assertions": "warn", + "@typescript-eslint/prefer-for-of": "warn", + "no-underscore-dangle": "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", + "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" + } + } + ] +} diff --git a/lib/cli/scripts/artifact-from-s3.ts b/lib/cli/scripts/artifact-from-s3.ts index 3ed08ee494..33c3639ce3 100644 --- a/lib/cli/scripts/artifact-from-s3.ts +++ b/lib/cli/scripts/artifact-from-s3.ts @@ -38,7 +38,7 @@ function zipArtifact(output: string) { logger.info(response); } -export default function () { +export default function() { main(); } diff --git a/lib/cli/scripts/artifact-to-s3.ts b/lib/cli/scripts/artifact-to-s3.ts index 020c17755a..851aaad78c 100644 --- a/lib/cli/scripts/artifact-to-s3.ts +++ b/lib/cli/scripts/artifact-to-s3.ts @@ -34,7 +34,7 @@ function awsCp(output: string) { logger.info(response); } -export default function () { +export default function() { main(); } diff --git a/lib/cli/scripts/audit.ts b/lib/cli/scripts/audit.ts index 86edcf662a..9aca3c7f58 100644 --- a/lib/cli/scripts/audit.ts +++ b/lib/cli/scripts/audit.ts @@ -54,7 +54,7 @@ export default function main(_args: string[], workingDir: string) { } return new Promise((resolve, reject) => { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log(`Running audit on ${packagePath}`); const packageJson = JSON.parse(fs.readFileSync(packagePath).toString()); @@ -75,7 +75,7 @@ export default function main(_args: string[], workingDir: string) { fs.writeFileSync(outputFile, mdText); - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log(`Report saved as ${outputFile}`); resolve(0); } diff --git a/lib/cli/scripts/changelog.ts b/lib/cli/scripts/changelog.ts index 5ef7800102..bcacd891be 100644 --- a/lib/cli/scripts/changelog.ts +++ b/lib/cli/scripts/changelog.ts @@ -56,6 +56,7 @@ interface DiffOptions { /** * Get the remote URL for the cloned git repository + * * @param workingDir Repository directory * @returns URL pointing to the git remote */ @@ -68,6 +69,7 @@ function getRemote(workingDir: string): string { /** * Get the list of commits based on the configuration options + * * @param options Logging options * @returns Collection of Commit objects */ @@ -78,7 +80,7 @@ function getCommits(options: DiffOptions): Array { .join('\|'); if (!authorFilter) { - authorFilter = "bot\|Alfresco Build User"; + authorFilter = `bot\|Alfresco Build User`; } diff --git a/lib/cli/scripts/check-cs-env.ts b/lib/cli/scripts/check-cs-env.ts index 0741e66245..717fa21b64 100755 --- a/lib/cli/scripts/check-cs-env.ts +++ b/lib/cli/scripts/check-cs-env.ts @@ -1,9 +1,9 @@ -/* tslint:disable */ +/* eslint-disable */ const alfrescoApi = require('@alfresco/js-api'); const program = require('commander'); const path = require('path'); const fs = require('fs'); -/* tslint:enable */ +/* eslint-enable */ import { logger } from './logger'; const MAX_RETRY = 3; const TIMEOUT = 20000; diff --git a/lib/cli/scripts/check-ps-env.ts b/lib/cli/scripts/check-ps-env.ts index e31112dc8b..c7295a4a05 100755 --- a/lib/cli/scripts/check-ps-env.ts +++ b/lib/cli/scripts/check-ps-env.ts @@ -1,7 +1,7 @@ -/* tslint:disable */ +/* eslint-disable */ const alfrescoApi = require('@alfresco/js-api'); const program = require('commander'); -/* tslint:enable */ +/* eslint-enable */ import { logger } from './logger'; const MAX_RETRY = 10; const TIMEOUT = 60000; diff --git a/lib/cli/scripts/docker-publish.ts b/lib/cli/scripts/docker-publish.ts index bbc2a0f089..06fa072bb7 100644 --- a/lib/cli/scripts/docker-publish.ts +++ b/lib/cli/scripts/docker-publish.ts @@ -19,6 +19,6 @@ import * as docker from './docker'; -export default function (args: any) { +export default function(args: any) { docker.default(args); } diff --git a/lib/cli/scripts/docker.ts b/lib/cli/scripts/docker.ts index dceff75a5a..f60b609ff9 100644 --- a/lib/cli/scripts/docker.ts +++ b/lib/cli/scripts/docker.ts @@ -50,9 +50,9 @@ function loginPerform(args: PublishArgs) { function buildImagePerform(args: PublishArgs, tag: string) { logger.info(`Perform docker build...${args.dockerRepo}:${tag}`); - let buildArgs = []; + const buildArgs = []; - if (typeof args.buildArgs === "string") { + if (typeof args.buildArgs === 'string') { buildArgs.push(`--build-arg=${args.buildArgs}`); } else { args.buildArgs.forEach((envVar) => { @@ -88,7 +88,7 @@ function cleanImagePerform(args: PublishArgs, tag: string) { logger.info(response); } -export default function (args: PublishArgs) { +export default function(args: PublishArgs) { main(args); } diff --git a/lib/cli/scripts/init-aae-env.ts b/lib/cli/scripts/init-aae-env.ts index 6b928217bd..01dbe9612f 100644 --- a/lib/cli/scripts/init-aae-env.ts +++ b/lib/cli/scripts/init-aae-env.ts @@ -19,13 +19,13 @@ import * as program from 'commander'; -/* tslint:disable */ +/* eslint-disable */ import request = require('request'); import * as fs from 'fs'; import { logger } from './logger'; import { AlfrescoApi } from '@alfresco/js-api'; const ACTIVITI_CLOUD_APPS = require('./resources').ACTIVITI_CLOUD_APPS; -/* tslint:enable */ +/* eslint-enable */ let alfrescoJsApiModeler: any; let alfrescoJsApiDevops: any; @@ -53,9 +53,14 @@ export const AAE_MICROSERVICES = [ async function healthCheck(nameService: string) { const url = `${args.host}/${nameService}/actuator/health`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { const health = await alfrescoJsApiModeler.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -63,7 +68,8 @@ async function healthCheck(nameService: string) { logger.error(`${nameService} is DOWN `); isValid = false; } else { - const reset = '\x1b[0m', green = '\x1b[32m'; + const reset = '\x1b[0m'; + const green = '\x1b[32m'; logger.info(`${green}${nameService} is UP!${reset}`); } } catch (error) { @@ -75,9 +81,14 @@ async function healthCheck(nameService: string) { async function getApplicationByStatus(status: string) { const url = `${args.host}/deployment-service/v1/applications/`; - const pathParams = {}, queryParams = { status: status }, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = { status }; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { await alfrescoJsApiDevops.login(args.devopsUsername, args.devopsPassword); @@ -95,9 +106,14 @@ async function getApplicationByStatus(status: string) { function getDescriptors() { const url = `${args.host}/deployment-service/v1/descriptors`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiDevops.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -111,9 +127,14 @@ function getDescriptors() { function getProjects() { const url = `${args.host}/modeling-service/v1/projects`; - const pathParams = {}, queryParams = { maxItems: 1000 }, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = { maxItems: 1000 }; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiModeler.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -127,9 +148,14 @@ function getProjects() { function getProjectRelease(projectId: string) { const url = `${args.host}/modeling-service/v1/projects/${projectId}/releases`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiModeler.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -143,9 +169,14 @@ function getProjectRelease(projectId: string) { async function releaseProject(projectId: string) { const url = `${args.host}/modeling-service/v1/projects/${projectId}/releases`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiModeler.oauth2Auth.callCustomApi(url, 'POST', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -160,9 +191,14 @@ async function releaseProject(projectId: string) { function deleteProject(projectId: string) { const url = `${args.host}/modeling-service/v1/projects/${projectId}`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiModeler.oauth2Auth.callCustomApi(url, 'DELETE', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -194,9 +230,14 @@ async function importAndReleaseProject(absoluteFilePath: string) { function deleteDescriptor(name: string) { const url = `${args.host}/deployment-service/v1/descriptors/${name}`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiDevops.oauth2Auth.callCustomApi(url, 'DELETE', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -210,9 +251,14 @@ function deleteDescriptor(name: string) { function deploy(model: any) { const url = `${args.host}/deployment-service/v1/applications/`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = model, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = model; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { return alfrescoJsApiDevops.oauth2Auth.callCustomApi(url, 'POST', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -248,7 +294,9 @@ async function deployMissingApps(tag?: string) { if (failingApps.length > 0) { failingApps.forEach( app => { - const reset = '\x1b[0m', bright = '\x1b[1m', red = '\x1b[31m'; + const reset = '\x1b[0m'; + const bright = '\x1b[1m'; + const red = '\x1b[31m'; logger.error(`${red}${bright}ERROR: App ${app.entry.name} down or inaccessible ${reset}${red} with status ${app.entry.status}${reset}`); }); process.exit(1); @@ -256,7 +304,8 @@ async function deployMissingApps(tag?: string) { logger.warn(`Missing apps: ${JSON.stringify(absentApps)}`); await checkIfAppIsReleased(absentApps, tag); } else { - const reset = '\x1b[0m', green = '\x1b[32m'; + const reset = '\x1b[0m'; + const green = '\x1b[32m'; logger.info(`${green}All the apps are correctly deployed${reset}`); } } @@ -269,9 +318,7 @@ async function checkIfAppIsReleased(missingApps: any [], tag?: string) { for (let i = 0; i < missingApps.length; i++) { noError = true; const currentAbsentApp = missingApps[i]; - const project = projectList.list.entries.find((currentApp: any) => { - return currentAbsentApp.name === currentApp.entry.name; - }); + const project = projectList.list.entries.find((currentApp: any) => currentAbsentApp.name === currentApp.entry.name); let projectRelease: any; if (project === undefined) { @@ -360,11 +407,8 @@ async function importProjectAndRelease(app: any, tag?: string) { } function findMissingApps(deployedApps: any []) { - Object.keys(ACTIVITI_CLOUD_APPS).forEach((key) => { - const isPresent = deployedApps.find((currentApp: any) => { - return ACTIVITI_CLOUD_APPS[key].name === currentApp.entry.name; - }); + const isPresent = deployedApps.find((currentApp: any) => ACTIVITI_CLOUD_APPS[key].name === currentApp.entry.name); if (!isPresent) { absentApps.push(ACTIVITI_CLOUD_APPS[key]); @@ -373,11 +417,8 @@ function findMissingApps(deployedApps: any []) { } function findFailingApps(deployedApps: any []) { - Object.keys(ACTIVITI_CLOUD_APPS).forEach((key) => { - const failingApp = deployedApps.filter((currentApp: any) => { - return ACTIVITI_CLOUD_APPS[key].name === currentApp.entry.name && 'Running' !== currentApp.entry.status; - }); + const failingApp = deployedApps.filter((currentApp: any) => ACTIVITI_CLOUD_APPS[key].name === currentApp.entry.name && 'Running' !== currentApp.entry.status); if (failingApp?.length > 0) { failingApps.push(...failingApp); @@ -386,7 +427,7 @@ function findFailingApps(deployedApps: any []) { } async function getFileFromRemote(url: string, name: string) { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { request(url) .pipe(fs.createWriteStream(`${name}.zip`)) .on('finish', () => { @@ -412,12 +453,11 @@ async function sleep(time: number) { return; } -export default async function (configArgs: ConfigArgs) { +export default async function(configArgs: ConfigArgs) { await main(configArgs); } async function main(configArgs: ConfigArgs) { - args = configArgs; program @@ -445,7 +485,8 @@ async function main(configArgs: ConfigArgs) { }); await alfrescoJsApiModeler.login(args.modelerUsername, args.modelerPassword).then(() => { - const reset = '\x1b[0m', green = '\x1b[32m'; + const reset = '\x1b[0m'; + const green = '\x1b[32m'; logger.info(`${green}login SSO ok${reset}`); }, (error) => { logger.error(`login SSO error ${JSON.stringify(error)} ${args.modelerUsername}`); @@ -453,7 +494,8 @@ async function main(configArgs: ConfigArgs) { }); if (isValid) { - const reset = '\x1b[0m', green = '\x1b[32m'; + const reset = '\x1b[0m'; + const green = '\x1b[32m'; logger.info(`${green}The environment is up and running ${reset}`); alfrescoJsApiDevops = getAlfrescoJsApiInstance(args); await alfrescoJsApiDevops.login(args.devopsUsername, args.devopsPassword).then(() => { diff --git a/lib/cli/scripts/init-acs-env.ts b/lib/cli/scripts/init-acs-env.ts index 6d4e138b51..c85c7a8679 100755 --- a/lib/cli/scripts/init-acs-env.ts +++ b/lib/cli/scripts/init-acs-env.ts @@ -1,4 +1,4 @@ -/* tslint:disable */ +/* eslint-disable */ let alfrescoApi = require('@alfresco/js-api'); let program = require('commander'); let fs = require ('fs'); @@ -9,11 +9,11 @@ let MAX_RETRY = 10; let counter = 0; let TIMEOUT = 6000; const ACS_DEFAULT = require('./resources').ACS_DEFAULT; -/* tslint:enable */ +/* eslint-enable */ let alfrescoJsApi; -export default async function () { +export default async function() { await main(); } @@ -120,7 +120,7 @@ async function lockFile(nodeId) { async function shareFile(nodeId) { const data = { - nodeId: nodeId + nodeId }; try { await new SharedlinksApi(alfrescoJsApi).createSharedLink(data); @@ -179,7 +179,7 @@ async function checkEnv() { } } -/* tslint:enable */ +/* eslint-enable */ function sleep(delay) { const start = new Date().getTime(); diff --git a/lib/cli/scripts/init-aps-env.ts b/lib/cli/scripts/init-aps-env.ts index ad00c3dd6c..bd23b6c972 100755 --- a/lib/cli/scripts/init-aps-env.ts +++ b/lib/cli/scripts/init-aps-env.ts @@ -1,4 +1,4 @@ -/* tslint:disable */ +/* eslint-disable */ let alfrescoApi = require('@alfresco/js-api'); let program = require('commander'); let fs = require ('fs'); @@ -13,12 +13,12 @@ const TENANT_DEFAULT_ID = 1; const TENANT_DEFAULT_NAME = 'default'; const CONTENT_DEFAULT_NAME = 'adw-content'; const ACTIVITI_APPS = require('./resources').ACTIVITI_APPS; -/* tslint:enable */ +/* eslint-enable */ let alfrescoJsApi; let alfrescoJsApiRepo; -export default async function () { +export default async function() { await main(); } @@ -336,11 +336,11 @@ async function addContentRepoWithBasic(tenantId, name) { const body = { alfrescoTenantId: '', authenticationType: 'basic', - name: name, + name, repositoryUrl: `${program.host}/alfresco`, shareUrl: `${program.host}/share`, // sitesFolder: '', not working on activiti 1.11.1.1 - tenantId: tenantId, + tenantId, version: '6.1.1' }; @@ -413,7 +413,7 @@ async function authorizeUserToContentWithBasic(username, contentId) { } } -/* tslint:disable */ +/* eslint-disable */ async function downloadLicenseFile(apsLicensePath) { try { @@ -428,7 +428,7 @@ async function downloadLicenseFile(apsLicensePath) { return false; } } -/* tslint:enable */ +/* eslint-enable */ function sleep(delay) { const start = new Date().getTime(); diff --git a/lib/cli/scripts/kubectl-clean-app.ts b/lib/cli/scripts/kubectl-clean-app.ts index 26bf4a6013..eaef0a418e 100644 --- a/lib/cli/scripts/kubectl-clean-app.ts +++ b/lib/cli/scripts/kubectl-clean-app.ts @@ -20,9 +20,9 @@ import * as program from 'commander'; import moment from 'moment-es6'; import { exec } from './exec'; -/* tslint:disable */ +/* eslint-disable */ import { AlfrescoApi } from '@alfresco/js-api'; -/* tslint:enable */ +/* eslint-enable */ import { logger } from './logger'; @@ -82,8 +82,11 @@ async function deleteDescriptor(args: ConfigArgs, apiService: any, name: string) const pathParams = {}; const bodyParam = {}; - const headerParams = {}, formParams = {}, queryParams = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const headerParams = {}; + const formParams = {}; + const queryParams = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; try { return await apiService.oauth2Auth.callCustomApi(url, 'DELETE', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -100,8 +103,11 @@ async function deleteProject(args: ConfigArgs, apiService: any, projectId: strin const pathParams = {}; const bodyParam = {}; - const headerParams = {}, formParams = {}, queryParams = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const headerParams = {}; + const formParams = {}; + const queryParams = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; try { return await apiService.oauth2Auth.callCustomApi(url, 'DELETE', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -114,9 +120,13 @@ async function deleteProjectByName(args: ConfigArgs, apiService: any, name: stri logger.warn(`Get the project by name ${name}`); const url = `${args.host}/modeling-service/v1/projects?name=${name}`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; try { const data = await apiService.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, @@ -136,9 +146,13 @@ async function getApplicationsByName(args: ConfigArgs, apiService: any, name: st logger.warn(`Get the applications by name ${name}`); const url = `${args.host}/deployment-service/v1/applications?name=${name}`; - const pathParams = {}, queryParams = {}, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; try { const apps = await apiService.oauth2Auth.callCustomApi(url, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, @@ -158,8 +172,11 @@ async function undeployApplication(args: ConfigArgs, apiService: any, name: stri const pathParams = {}; const bodyParam = {}; - const headerParams = {}, formParams = {}, queryParams = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const headerParams = {}; + const formParams = {}; + const queryParams = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; try { return await apiService.oauth2Auth.callCustomApi(url, 'DELETE', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts); @@ -192,7 +209,7 @@ function useContext(args: ConfigArgs) { logger.info(response); } -export default async function (args: ConfigArgs) { +export default async function(args: ConfigArgs) { await main(args); } diff --git a/lib/cli/scripts/kubectl-delete.ts b/lib/cli/scripts/kubectl-delete.ts index 841dad34e4..8a448edc2c 100644 --- a/lib/cli/scripts/kubectl-delete.ts +++ b/lib/cli/scripts/kubectl-delete.ts @@ -59,7 +59,7 @@ function deletePod(args: KubeArgs) { logger.info(response); } -export default function (args: KubeArgs) { +export default function(args: KubeArgs) { main(args); } diff --git a/lib/cli/scripts/kubectl-image.ts b/lib/cli/scripts/kubectl-image.ts index 729fff8a24..39326aae70 100644 --- a/lib/cli/scripts/kubectl-image.ts +++ b/lib/cli/scripts/kubectl-image.ts @@ -85,7 +85,7 @@ function installPerform() { exec('curl', [`LO`, `${k8sRelease}`], {}); } -export default function (args: KubeArgs) { +export default function(args: KubeArgs) { main(args); } diff --git a/lib/cli/scripts/licenses.ts b/lib/cli/scripts/licenses.ts index 644bfdb589..41f0f9cfd7 100644 --- a/lib/cli/scripts/licenses.ts +++ b/lib/cli/scripts/licenses.ts @@ -108,19 +108,19 @@ export default function main(_args: string[], workingDir: string) { } return new Promise((resolve, reject) => { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.info(`Checking ${packagePath}`); checker.init({ start: workingDir, production: true, failOn: 'GPL' - }, function (err: any, packages: any[]) { + }, function(err: any, packages: any[]) { if (err) { console.error(err); reject(err); } else { - // tslint:disable-next-line: forin + // eslint-disable-next-line guard-for-in for (const packageName in packages) { const pack = packages[packageName]; pack['licenseExp'] = pack['licenses'].toString() @@ -148,7 +148,7 @@ export default function main(_args: string[], workingDir: string) { const packageJson: PackageInfo = getPackageFile(packagePath); ejs.renderFile(templatePath, { - packages: packages, + packages, projVersion: packageJson.version, projName: packageJson.name }, {}, (ejsError: any, mdText: string) => { @@ -160,7 +160,7 @@ export default function main(_args: string[], workingDir: string) { const outputFile = path.join(outputPath, `license-info-${packageJson.version}.md`); fs.writeFileSync(outputFile, mdText); - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log(`Report saved as ${outputFile}`); resolve(0); } diff --git a/lib/cli/scripts/logger.ts b/lib/cli/scripts/logger.ts index 7e1872ea1b..ff7b8c0d76 100644 --- a/lib/cli/scripts/logger.ts +++ b/lib/cli/scripts/logger.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable */ +/* eslint-disable */ let log = null; log = { @@ -31,4 +31,4 @@ log = { }; export let logger = log; -/* tslint:enable */ +/* eslint-enable */ diff --git a/lib/cli/scripts/npm-publish.ts b/lib/cli/scripts/npm-publish.ts index 0e0d20e307..65602b4be0 100644 --- a/lib/cli/scripts/npm-publish.ts +++ b/lib/cli/scripts/npm-publish.ts @@ -104,7 +104,7 @@ function removeNpmConfig(args: PublishArgs, project: string) { } } -export default async function (args: PublishArgs) { +export default async function(args: PublishArgs) { await main(args); } diff --git a/lib/cli/scripts/plugins/plugin-config.ts b/lib/cli/scripts/plugins/plugin-config.ts index d4de367300..fb147c26e8 100644 --- a/lib/cli/scripts/plugins/plugin-config.ts +++ b/lib/cli/scripts/plugins/plugin-config.ts @@ -12,13 +12,14 @@ export class PluginConfiguration { } async callCustomApi(url: string) { - const pathParams = {}, - headerParams = {}, - formParams = {}, - bodyParam = {}, - queryParams = {}, - contentTypes = ['application/json'], - accepts = ['application/json']; + const pathParams = {}; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const queryParams = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; + try { const response = await this.alfrescoJsApi.oauth2Auth.callCustomApi( url, diff --git a/lib/cli/scripts/scan-env.ts b/lib/cli/scripts/scan-env.ts index e8a1a148e2..c76a3a85f7 100644 --- a/lib/cli/scripts/scan-env.ts +++ b/lib/cli/scripts/scan-env.ts @@ -2,23 +2,28 @@ import { AlfrescoApi, PeopleApi, NodesApi, GroupsApi, SitesApi, SearchApi } from import * as program from 'commander'; import { logger } from './logger'; -interface PeopleTally { enabled: number; disabled: number; } -interface RowToPrint { label: string; value: number; } +interface PeopleTally { enabled: number; disabled: number } +interface RowToPrint { label: string; value: number } const MAX_ATTEMPTS = 1; const TIMEOUT = 180000; const MAX_PEOPLE_PER_PAGE = 100; const USERS_HOME_RELATIVE_PATH = 'User Homes'; -const reset = '\x1b[0m', grey = '\x1b[90m', cyan = '\x1b[36m', yellow = '\x1b[33m', - bright = '\x1b[1m', red = '\x1b[31m', green = '\x1b[32m'; +const reset = '\x1b[0m'; +const grey = '\x1b[90m'; +const cyan = '\x1b[36m'; +const yellow = '\x1b[33m'; +const bright = '\x1b[1m'; +const red = '\x1b[31m'; +const green = '\x1b[32m'; let jsApiConnection: any; let loginAttempts: number = 0; export default async function main(_args: string[]) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log = () => {}; program @@ -35,22 +40,19 @@ export default async function main(_args: string[]) { const peopleCount = await getPeopleCount(); rowsToPrint.push({ label: 'Active Users', value: peopleCount.enabled }); rowsToPrint.push({ label: 'Deactivated Users', value: peopleCount.disabled }); - rowsToPrint.push({ label: "User's Home Folders", value: await getHomeFoldersCount() }); + rowsToPrint.push({ label: `User's Home Folders`, value: await getHomeFoldersCount() }); rowsToPrint.push({ label: 'Groups', value: await getGroupsCount() }); rowsToPrint.push({ label: 'Sites', value: await getSitesCount() }); rowsToPrint.push({ label: 'Files', value: await getFilesCount() }); logger.info(generateTable(rowsToPrint)); - } function generateTable(rowsToPrint: Array) { - const columnWidths = rowsToPrint.reduce((maxWidths, row: RowToPrint) => { - return { + const columnWidths = rowsToPrint.reduce((maxWidths, row: RowToPrint) => ({ labelColumn: Math.max(maxWidths.labelColumn, row.label.length), valueColumn: Math.max(maxWidths.valueColumn, row.value.toString().length) - }; - }, { labelColumn: 12, valueColumn: 1 }); + }), { labelColumn: 12, valueColumn: 1 }); const horizontalLine = ''.padEnd(columnWidths.labelColumn + columnWidths.valueColumn + 5, '═'); const headerText = 'ENVIRONM'.padStart(Math.floor((columnWidths.labelColumn + columnWidths.valueColumn + 3) / 2), ' ') @@ -134,10 +136,14 @@ async function getPeopleCount(skipCount: number = 0): Promise { const apiResult = await peopleApi.listPeople({ fields: ['enabled'], maxItems: MAX_PEOPLE_PER_PAGE, - skipCount: skipCount + skipCount }); const result: PeopleTally = apiResult.list.entries.reduce((peopleTally: PeopleTally, currentPerson) => { - if (currentPerson.entry.enabled) { peopleTally.enabled++; } else { peopleTally.disabled++; } + if (currentPerson.entry.enabled) { + peopleTally.enabled++; + } else { + peopleTally.disabled++; + } return peopleTally; }, { enabled: 0, disabled: 0 }); if (apiResult.list.pagination.hasMoreItems) { diff --git a/lib/cli/scripts/update-commit-sha.ts b/lib/cli/scripts/update-commit-sha.ts index a41a80be0b..0f394952d4 100644 --- a/lib/cli/scripts/update-commit-sha.ts +++ b/lib/cli/scripts/update-commit-sha.ts @@ -47,7 +47,7 @@ function replacePerform(args: CommitArgs, sha: string) { } } -export default function (args: CommitArgs) { +export default function(args: CommitArgs) { main(args); } diff --git a/lib/content-services/.eslintrc.json b/lib/content-services/.eslintrc.json new file mode 100644 index 0000000000..b06c12ded0 --- /dev/null +++ b/lib/content-services/.eslintrc.json @@ -0,0 +1,110 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/content-services/tsconfig.lib.json", + "lib/content-services/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" + } + } + ] +} diff --git a/lib/content-services/src/lib/audit/audit.service.ts b/lib/content-services/src/lib/audit/audit.service.ts index b0a0c4c955..e0326c6712 100644 --- a/lib/content-services/src/lib/audit/audit.service.ts +++ b/lib/content-services/src/lib/audit/audit.service.ts @@ -65,7 +65,7 @@ export class AuditService { ); } - updateAuditApp(auditApplicationId: string, auditAppBodyUpdate: boolean, opts?: any): Observable { + updateAuditApp(auditApplicationId: string, auditAppBodyUpdate: boolean, opts?: any): Observable { const defaultOptions = {}; const queryOptions = Object.assign({}, defaultOptions, opts); return from(this.auditApi.updateAuditApp(auditApplicationId, new AuditBodyUpdate({ isEnabled: auditAppBodyUpdate }), queryOptions)) diff --git a/lib/content-services/src/lib/content-metadata/interfaces/property-group.interface.ts b/lib/content-services/src/lib/content-metadata/interfaces/property-group.interface.ts index 13b73fe048..0e8670903a 100644 --- a/lib/content-services/src/lib/content-metadata/interfaces/property-group.interface.ts +++ b/lib/content-services/src/lib/content-metadata/interfaces/property-group.interface.ts @@ -22,7 +22,7 @@ export interface PropertyGroup { title: string; description?: string; properties: { - [key: string]: Property + [key: string]: Property; }; } diff --git a/lib/content-services/src/lib/content-metadata/services/basic-properties.service.ts b/lib/content-services/src/lib/content-metadata/services/basic-properties.service.ts index 78e2703f48..860c5bfe3a 100644 --- a/lib/content-services/src/lib/content-metadata/services/basic-properties.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/basic-properties.service.ts @@ -27,12 +27,11 @@ export class BasicPropertiesService { } getProperties(node: Node) { - - const sizeInBytes = node.content ? node.content.sizeInBytes : '', - mimeTypeName = node.content ? node.content.mimeTypeName : '', - author = node.properties ? node.properties['cm:author'] : '', - description = node.properties ? node.properties['cm:description'] : '', - title = node.properties ? node.properties['cm:title'] : ''; + const sizeInBytes = node.content ? node.content.sizeInBytes : ''; + const mimeTypeName = node.content ? node.content.mimeTypeName : ''; + const author = node.properties ? node.properties['cm:author'] : ''; + const description = node.properties ? node.properties['cm:description'] : ''; + const title = node.properties ? node.properties['cm:title'] : ''; return [ new CardViewTextItemModel({ diff --git a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts index 7747585d89..83138a3bf3 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts @@ -34,10 +34,10 @@ describe('AspectOrientedConfigService', () => { expectations: OrganisedPropertyGroup[]; } - const property1 = { name: 'property1' }, - property2 = { name: 'property2' }, - property3 = { name: 'property3' }, - property4 = { name: 'property4' }; + const property1 = { name: 'property1' }; + const property2 = { name: 'property2' }; + const property3 = { name: 'property3' }; + const property4 = { name: 'property4' }; const propertyGroups: PropertyGroupContainer = { berseria: { title: 'Berseria', description: '', name: 'berseria', properties: { property1, property2 } }, @@ -177,11 +177,10 @@ describe('AspectOrientedConfigService', () => { }); describe('appendAllPreset', () => { - - const property1 = { name: 'property1' }, - property2 = { name: 'property2' }, - property3 = { name: 'property3' }, - property4 = { name: 'property4' }; + const property1 = { name: 'property1' }; + const property2 = { name: 'property2' }; + const property3 = { name: 'property3' }; + const property4 = { name: 'property4' }; const propertyGroups: PropertyGroupContainer = { berseria: { title: 'Berseria', description: '', name: 'berseria', properties: { property1, property2 } }, diff --git a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts index 6205f84458..ad0eda3770 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts @@ -31,8 +31,8 @@ export class AspectOrientedConfigService implements ContentMetadataConfig { } public reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { - const aspects = this.config, - aspectNames = Object.keys(aspects); + const aspects = this.config; + const aspectNames = Object.keys(aspects); return aspectNames .reduce((groupAccumulator, aspectName) => { @@ -45,8 +45,8 @@ export class AspectOrientedConfigService implements ContentMetadataConfig { public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { const groups = Object.keys(propertyGroups) .map((groupName) => { - const propertyGroup = propertyGroups[groupName], - properties = propertyGroup.properties; + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; if (this.isAspectReadOnly(groupName)) { Object.keys(properties).map((propertyName) => this.setReadOnlyProperty(properties[propertyName])); diff --git a/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts index b9961ecd71..ff007140cf 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts @@ -28,8 +28,8 @@ export class IndifferentConfigService implements ContentMetadataConfig { reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { return Object.keys(propertyGroups) .map((groupName) => { - const propertyGroup = propertyGroups[groupName], - properties = propertyGroup.properties; + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; return Object.assign({}, propertyGroup, { properties: Object.keys(properties).map((propertyName) => properties[propertyName]) diff --git a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.spec.ts b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.spec.ts index 5dc704adc7..8d3aeda85a 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.spec.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.spec.ts @@ -102,12 +102,12 @@ describe('LayoutOrientedConfigService', () => { expectations: OrganisedPropertyGroup[]; } - const property1 = { name: 'property1' }, - property2 = { name: 'property2' }, - property3 = { name: 'property3' }, - property4 = { name: 'property4' }, - property5 = { name: 'property5' }, - property6 = { name: 'property6' }; + const property1 = { name: 'property1' }; + const property2 = { name: 'property2' }; + const property3 = { name: 'property3' }; + const property4 = { name: 'property4' }; + const property5 = { name: 'property5' }; + const property6 = { name: 'property6' }; const propertyGroups: PropertyGroupContainer = { berseria: { title: 'Berseria', description: '', name: 'berseria', properties: { property1, property2 } }, diff --git a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts index 54a5f978b5..63ac0297ea 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts @@ -39,15 +39,17 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { const layoutBlocks = this.config.filter((itemsGroup) => itemsGroup.items); const organisedPropertyGroup = layoutBlocks.map((layoutBlock) => { - const flattenedItems = this.flattenItems(layoutBlock.items), - properties = flattenedItems.reduce((props, explodedItem) => { - const isProperty = typeof explodedItem.property === 'object'; - const propertyName = isProperty ? explodedItem.property.name : explodedItem.property; - let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || []; - if (isProperty) { property = this.setPropertyTitle(property, explodedItem.property); } - property = this.setEditableProperty(property, explodedItem); - return props.concat(property); - }, []); + const flattenedItems = this.flattenItems(layoutBlock.items); + const properties = flattenedItems.reduce((props, explodedItem) => { + const isProperty = typeof explodedItem.property === 'object'; + const propertyName = isProperty ? explodedItem.property.name : explodedItem.property; + let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || []; + if (isProperty) { + property = this.setPropertyTitle(property, explodedItem.property); + } + property = this.setEditableProperty(property, explodedItem); + return props.concat(property); + }, []); return { title: layoutBlock.title, @@ -61,8 +63,8 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { return Object.keys(propertyGroups) .map((groupName) => { - const propertyGroup = propertyGroups[groupName], - properties = propertyGroup.properties; + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; return Object.assign({}, propertyGroup, { properties: Object.keys(properties).map((propertyName) => properties[propertyName]) diff --git a/lib/content-services/src/lib/content-metadata/services/content-metadata.service.ts b/lib/content-services/src/lib/content-metadata/services/content-metadata.service.ts index 7480cd7c1c..0d58da1960 100644 --- a/lib/content-services/src/lib/content-metadata/services/content-metadata.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/content-metadata.service.ts @@ -31,7 +31,7 @@ import { ContentTypePropertiesService } from './content-type-property.service'; }) export class ContentMetadataService { - error = new Subject<{ statusCode: number, message: string }>(); + error = new Subject<{ statusCode: number; message: string }>(); constructor(private basicPropertiesService: BasicPropertiesService, private contentMetadataConfigFactory: ContentMetadataConfigFactory, diff --git a/lib/content-services/src/lib/content-node-selector/content-node-dialog.service.ts b/lib/content-services/src/lib/content-node-selector/content-node-dialog.service.ts index 0ed1e2e86d..cbd261e7ad 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-dialog.service.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-dialog.service.ts @@ -31,7 +31,7 @@ import { switchMap } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class ContentNodeDialogService { static nonDocumentSiteContent = [ 'blog', diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts index 45cfc2ae9b..4f3e09c974 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts @@ -197,7 +197,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { @Input() set showFilesInResult(value: boolean) { if (value !== undefined && value !== null) { - const showFilesQuery = `TYPE:'cm:folder'${value ? " OR TYPE:'cm:content'" : ''}`; + const showFilesQuery = `TYPE:'cm:folder'${value ? ` OR TYPE:'cm:content'` : ''}`; this.queryBuilderService.addFilterQuery(showFilesQuery); } } diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts b/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts index 31381043ef..271fbffd37 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts +++ b/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts @@ -34,7 +34,7 @@ export class NodeSharedDirective implements OnChanges, OnDestroy { isShared: boolean = false; /** Node to share. */ - // tslint:disable-next-line:no-input-rename + // eslint-disable-next-line @angular-eslint/no-input-rename @Input('adf-share') node: NodeEntry; diff --git a/lib/content-services/src/lib/dialogs/folder.dialog.spec.ts b/lib/content-services/src/lib/dialogs/folder.dialog.spec.ts index f7eea48f70..7fb5e0ccd4 100644 --- a/lib/content-services/src/lib/dialogs/folder.dialog.spec.ts +++ b/lib/content-services/src/lib/dialogs/folder.dialog.spec.ts @@ -130,7 +130,9 @@ describe('FolderDialogComponent', () => { spyOn(nodesApi, 'updateNode').and.returnValue(of(folder)); - component.success.subscribe((node) => { expectedNode = node; }); + component.success.subscribe((node) => { + expectedNode = node; + }); component.submit(); fixture.detectChanges(); diff --git a/lib/content-services/src/lib/dialogs/folder.dialog.ts b/lib/content-services/src/lib/dialogs/folder.dialog.ts index cdafb9870d..3efd637fa8 100644 --- a/lib/content-services/src/lib/dialogs/folder.dialog.ts +++ b/lib/content-services/src/lib/dialogs/folder.dialog.ts @@ -142,7 +142,9 @@ export class FolderDialogComponent implements OnInit { submit() { const { form, dialog, editing } = this; - if (!form.valid) { return; } + if (!form.valid) { + return; + } (editing ? this.edit() : this.create()) .subscribe( diff --git a/lib/content-services/src/lib/dialogs/library/library.dialog.html b/lib/content-services/src/lib/dialogs/library/library.dialog.html index 4a30f63e82..b36b213c20 100644 --- a/lib/content-services/src/lib/dialogs/library/library.dialog.html +++ b/lib/content-services/src/lib/dialogs/library/library.dialog.html @@ -7,7 +7,6 @@ placeholder="{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}" required matInput - autofocus formControlName="title" autocomplete="off" /> diff --git a/lib/content-services/src/lib/directives/node-lock.directive.ts b/lib/content-services/src/lib/directives/node-lock.directive.ts index 0934e1d36d..74af59f895 100644 --- a/lib/content-services/src/lib/directives/node-lock.directive.ts +++ b/lib/content-services/src/lib/directives/node-lock.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, Renderer2, HostListener, Input, AfterViewInit } from '@angular/core'; import { Node } from '@alfresco/js-api'; diff --git a/lib/content-services/src/lib/document-list/components/content-action/content-action-list.component.ts b/lib/content-services/src/lib/document-list/components/content-action/content-action-list.component.ts index 30069fb900..2206dd306d 100644 --- a/lib/content-services/src/lib/document-list/components/content-action/content-action-list.component.ts +++ b/lib/content-services/src/lib/document-list/components/content-action/content-action-list.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component } from '@angular/core'; diff --git a/lib/content-services/src/lib/document-list/components/content-action/content-action.component.ts b/lib/content-services/src/lib/document-list/components/content-action/content-action.component.ts index a071d30b75..b913f0a66a 100644 --- a/lib/content-services/src/lib/document-list/components/content-action/content-action.component.ts +++ b/lib/content-services/src/lib/document-list/components/content-action/content-action.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges, OnDestroy } from '@angular/core'; @@ -46,7 +46,7 @@ export class ContentActionComponent implements OnInit, OnChanges, OnDestroy { /** Visibility state (see examples). */ @Input() - visible: boolean | Function = true; + visible: boolean | ((...args) => boolean) = true; /** System actions. Can be "delete", "download", "copy" or "move". */ @Input() @@ -66,7 +66,7 @@ export class ContentActionComponent implements OnInit, OnChanges, OnDestroy { /** Is the menu item disabled? */ @Input() - disabled: boolean | Function = false; + disabled: boolean | ((...args) => boolean) = false; /** Emitted when the user selects the action from the menu. */ @Output() diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.spec.ts b/lib/content-services/src/lib/document-list/components/document-list.component.spec.ts index 092701070a..e628538582 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.spec.ts +++ b/lib/content-services/src/lib/document-list/components/document-list.component.spec.ts @@ -241,7 +241,9 @@ describe('DocumentList', () => { previousValue: undefined, currentValue: mockPreselectedNodes, firstChange: true, - isFirstChange(): boolean { return this.firstChange; } + isFirstChange(): boolean { + return this.firstChange; + } } }; documentList.ngOnChanges(changes); @@ -258,7 +260,9 @@ describe('DocumentList', () => { previousValue: undefined, currentValue: ['mockChangeValue'], firstChange: true, - isFirstChange(): boolean { return this.firstChange; } + isFirstChange(): boolean { + return this.firstChange; + } } }; documentList.ngOnChanges(changes); diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.ts b/lib/content-services/src/lib/document-list/components/document-list.component.ts index f91ff680ca..cc6e3a99c0 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.ts +++ b/lib/content-services/src/lib/document-list/components/document-list.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:rxjs-no-subject-value */ +/* eslint-disable rxjs/no-subject-value */ import { AfterContentInit, Component, ContentChild, ElementRef, EventEmitter, HostListener, Input, NgZone, @@ -208,7 +208,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte * 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() @@ -816,7 +816,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte } } - onNodeSelect(event: { row: ShareDataRow, selection: Array }) { + onNodeSelect(event: { row: ShareDataRow; selection: Array }) { this.selection = event.selection.map((entry) => entry.node); const domEvent = new CustomEvent('node-select', { detail: { @@ -829,7 +829,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte this.elementRef.nativeElement.dispatchEvent(domEvent); } - onNodeUnselect(event: { row: ShareDataRow, selection: Array }) { + onNodeUnselect(event: { row: ShareDataRow; selection: Array }) { this.selection = event.selection.map((entry) => entry.node); const domEvent = new CustomEvent('node-unselect', { detail: { diff --git a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts index 8c348ac647..07400f90d8 100644 --- a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts +++ b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Inject, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter } from '@angular/core'; +import { Component, Inject, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, OnDestroy } from '@angular/core'; import { PaginationModel, DataSorting } from '@alfresco/adf-core'; import { DocumentListComponent } from '../document-list.component'; import { SEARCH_QUERY_SERVICE_TOKEN } from '../../../search/search-query-service.token'; @@ -30,7 +30,7 @@ import { NodePaging, MinimalNode } from '@alfresco/js-api'; templateUrl: './filter-header.component.html', providers: [{ provide: SEARCH_QUERY_SERVICE_TOKEN, useClass: SearchHeaderQueryBuilderService}] }) -export class FilterHeaderComponent implements OnInit, OnChanges { +export class FilterHeaderComponent implements OnInit, OnChanges, OnDestroy { /** (optional) Initial filter value to sort . */ @Input() diff --git a/lib/content-services/src/lib/document-list/models/content-action.model.ts b/lib/content-services/src/lib/document-list/models/content-action.model.ts index 000495829b..5b28b35a65 100644 --- a/lib/content-services/src/lib/document-list/models/content-action.model.ts +++ b/lib/content-services/src/lib/document-list/models/content-action.model.ts @@ -19,12 +19,12 @@ export class ContentActionModel { icon: string; title: string; handler: ContentActionHandler; - execute: Function; + execute: (...args) => void; target: string; permission: string; disableWithNoPermission: boolean = false; - disabled: boolean | Function = false; - visible: boolean | Function = true; + disabled: boolean | ((...args) => boolean) = false; + visible: boolean | ((...args) => boolean) = true; constructor(obj?: any) { if (obj) { diff --git a/lib/content-services/src/lib/document-list/services/document-actions.service.ts b/lib/content-services/src/lib/document-list/services/document-actions.service.ts index 9d7633b4a3..e917ee3fb7 100644 --- a/lib/content-services/src/lib/document-list/services/document-actions.service.ts +++ b/lib/content-services/src/lib/document-list/services/document-actions.service.ts @@ -34,7 +34,7 @@ export class DocumentActionsService { error: Subject = new Subject(); success: Subject = new Subject(); - private handlers: { [id: string]: ContentActionHandler; } = {}; + private handlers: { [id: string]: ContentActionHandler } = {}; constructor(private nodeActionsService: NodeActionsService, private contentNodeDialogService: ContentNodeDialogService, diff --git a/lib/content-services/src/lib/document-list/services/folder-actions.service.ts b/lib/content-services/src/lib/document-list/services/folder-actions.service.ts index 14f16b2595..6bd5c2f59e 100644 --- a/lib/content-services/src/lib/document-list/services/folder-actions.service.ts +++ b/lib/content-services/src/lib/document-list/services/folder-actions.service.ts @@ -33,7 +33,7 @@ export class FolderActionsService { error: Subject = new Subject(); success: Subject = new Subject(); - private handlers: { [id: string]: ContentActionHandler; } = {}; + private handlers: { [id: string]: ContentActionHandler } = {}; constructor(private nodeActionsService: NodeActionsService, private documentListService: DocumentListService, diff --git a/lib/content-services/src/lib/document-list/services/node-actions.service.ts b/lib/content-services/src/lib/document-list/services/node-actions.service.ts index 0ebd7ec3d5..c21c4884d4 100644 --- a/lib/content-services/src/lib/document-list/services/node-actions.service.ts +++ b/lib/content-services/src/lib/document-list/services/node-actions.service.ts @@ -28,7 +28,7 @@ import { NodeAction } from '../models/node-action.enum'; @Injectable({ providedIn: 'root' }) -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class NodeActionsService { @Output() diff --git a/lib/content-services/src/lib/folder-directive/folder-create.directive.ts b/lib/content-services/src/lib/folder-directive/folder-create.directive.ts index 87164aa7dc..48cd1a499a 100644 --- a/lib/content-services/src/lib/folder-directive/folder-create.directive.ts +++ b/lib/content-services/src/lib/folder-directive/folder-create.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, Output, EventEmitter } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; diff --git a/lib/content-services/src/lib/folder-directive/folder-edit.directive.ts b/lib/content-services/src/lib/folder-directive/folder-edit.directive.ts index bf57b98f06..0073d18ffc 100644 --- a/lib/content-services/src/lib/folder-directive/folder-edit.directive.ts +++ b/lib/content-services/src/lib/folder-directive/folder-edit.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, Output, EventEmitter } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; diff --git a/lib/content-services/src/lib/mock/search-filter-mock.ts b/lib/content-services/src/lib/mock/search-filter-mock.ts index d886b5b961..594f09a9d9 100644 --- a/lib/content-services/src/lib/mock/search-filter-mock.ts +++ b/lib/content-services/src/lib/mock/search-filter-mock.ts @@ -42,8 +42,8 @@ export const disabledCategories = [ 'field': null, 'pageSize': 5, 'options': [ - { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, - { 'name': 'Document', 'value': "TYPE:'cm:content'" } + { 'name': 'Folder', 'value': `TYPE:'cm:folder'` }, + { 'name': 'Document', 'value': `TYPE:'cm:content'` } ] } } @@ -62,8 +62,8 @@ export const expandedCategories = [ 'field': null, 'pageSize': 5, 'options': [ - { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, - { 'name': 'Document', 'value': "TYPE:'cm:content'" } + { 'name': 'Folder', 'value': `TYPE:'cm:folder'` }, + { 'name': 'Document', 'value': `TYPE:'cm:content'` } ] } } @@ -94,8 +94,8 @@ export const simpleCategories: SearchCategory[] = [ 'field': 'check-list', 'pageSize': 5, 'options': [ - { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, - { 'name': 'Document', 'value': "TYPE:'cm:content'" } + { 'name': 'Folder', 'value': `TYPE:'cm:folder'` }, + { 'name': 'Document', 'value': `TYPE:'cm:content'` } ] } } @@ -132,7 +132,7 @@ export const searchFilter = { 'resetButton': true, 'filterQueries': [ { - 'query': "TYPE:'cm:folder' OR TYPE:'cm:content'" + 'query': `TYPE:'cm:folder' OR TYPE:'cm:content'` }, { 'query': 'NOT cm:creator:System' @@ -321,7 +321,7 @@ export const searchFilter = { 'component': { 'selector': 'text', 'settings': { - 'pattern': "cm:name:'(.*?)'", + 'pattern': `cm:name:'(.*?)'`, 'field': 'cm:name', 'placeholder': 'Enter the name' } diff --git a/lib/content-services/src/lib/permission-manager/components/add-permission/search-config-permission.service.ts b/lib/content-services/src/lib/permission-manager/components/add-permission/search-config-permission.service.ts index de07f9c4f0..f0646783e1 100644 --- a/lib/content-services/src/lib/permission-manager/components/add-permission/search-config-permission.service.ts +++ b/lib/content-services/src/lib/permission-manager/components/add-permission/search-config-permission.service.ts @@ -44,7 +44,7 @@ export class SearchPermissionConfigurationService implements SearchConfiguration skipCount: skipCount }, filterQueries: [ - /*tslint:disable-next-line */ + /* eslint-disable-next-line */ { query: "TYPE:'cm:authority'" }] }; diff --git a/lib/content-services/src/lib/permission-manager/components/inherited-button.directive.ts b/lib/content-services/src/lib/permission-manager/components/inherited-button.directive.ts index 14dcaed5ea..e0e00cdd12 100644 --- a/lib/content-services/src/lib/permission-manager/components/inherited-button.directive.ts +++ b/lib/content-services/src/lib/permission-manager/components/inherited-button.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { Directive, Input, Output, EventEmitter } from '@angular/core'; import { NodesApiService, ContentService, AllowableOperationsEnum } from '@alfresco/adf-core'; import { Node } from '@alfresco/js-api'; diff --git a/lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.ts b/lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.ts index 7adeca7005..6751dc2d18 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.ts +++ b/lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.ts @@ -48,7 +48,7 @@ export class PermissionContainerComponent implements OnChanges { /** Emitted when the permission is updated. */ @Output() - update = new EventEmitter<{role: string, permission: PermissionDisplayModel}>(); + update = new EventEmitter<{role: string; permission: PermissionDisplayModel}>(); @Output() updateAll = new EventEmitter(); diff --git a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts index 37b5da8d6b..3f505dfedb 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts +++ b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts @@ -17,7 +17,7 @@ import { ObjectDataRow } from '@alfresco/adf-core'; import { PermissionElement } from '@alfresco/js-api'; -import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { PermissionDisplayModel } from '../../models/permission.model'; import { PermissionListService } from './permission-list.service'; @@ -27,7 +27,7 @@ import { PermissionListService } from './permission-list.service'; styleUrls: ['./permission-list.component.scss'], encapsulation: ViewEncapsulation.None }) -export class PermissionListComponent { +export class PermissionListComponent implements OnInit { /** ID of the node whose permissions you want to show. */ @Input() nodeId: string; diff --git a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.spec.ts b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.spec.ts index 36c2db18ae..bfbcd9c6c6 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.spec.ts +++ b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.spec.ts @@ -71,8 +71,9 @@ describe('PermissionListService', () => { describe('toggle permission', () => { - it('should show error if user doesn\'t have permission to update node', () => { - const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)), event = { source: { checked: false } }; + it('should show error if user does not have permission to update node', () => { + const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)); + const event = { source: { checked: false } }; node.allowableOperations = []; spyOn(nodePermissionService, 'getNodeWithRoles').and.returnValue(of({node , roles: []})); spyOn(nodesApiService, 'updateNode').and.stub(); @@ -83,7 +84,8 @@ describe('PermissionListService', () => { }); it('should include the local permission before toggle', (done) => { - const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)), event = { source: { checked: false } }; + const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)); + const event = { source: { checked: false } }; spyOn(nodePermissionService, 'getNodeWithRoles').and.returnValue(of({node , roles: []})); spyOn(nodePermissionService, 'updatePermissions').and.returnValue(of(null)); spyOn(nodesApiService, 'updateNode').and.returnValue(of(JSON.parse(JSON.stringify(fakeNodeLocalSiteManager)))); @@ -104,7 +106,8 @@ describe('PermissionListService', () => { }); it('should not update local permission before toggle', () => { - const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)), event = { source: { checked: false } }; + const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)); + const event = { source: { checked: false } }; const updateNode = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)); node.permissions.locallySet = [{ 'authorityId': 'GROUP_site_testsite_SiteManager', @@ -124,7 +127,8 @@ describe('PermissionListService', () => { }); it('should show message for errored toggle', () => { - const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)), event = { source: { checked: false } }; + const node = JSON.parse(JSON.stringify(fakeNodeInheritedOnly)); + const event = { source: { checked: false } }; node.permissions.isInheritanceEnabled = true; spyOn(nodesApiService, 'updateNode').and.returnValue(throwError('Failed to update')); spyOn(nodePermissionService, 'getNodeWithRoles').and.returnValue(of({node , roles: []})); diff --git a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts index 7667d99704..08cd470b49 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts +++ b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts @@ -36,7 +36,7 @@ export class PermissionListService { loading$: BehaviorSubject = new BehaviorSubject(true); error$: Subject = new Subject(); - nodeWithRoles$: Subject<{ node: Node, roles: RoleModel[] }> = new Subject(); + nodeWithRoles$: Subject<{ node: Node; roles: RoleModel[] }> = new Subject(); data$: Observable = this.nodeWithRoles$.pipe( map(({ node, roles}) => { const nodeLocalPermissions = this.nodePermissionService.getLocalPermissions(node); @@ -220,7 +220,8 @@ export class PermissionListService { getManagerAuthority(node: Node): string { const sitePath = node.path.elements.find((path) => path.nodeType === 'st:site'); - let hasLocalManagerPermission = false, authorityId: string; + let hasLocalManagerPermission = false; + let authorityId: string; if (sitePath) { authorityId = `GROUP_site_${sitePath.name}_${this.SITE_MANAGER_ROLE}`; hasLocalManagerPermission = !!node.permissions.locallySet?.find((permission) => permission.authorityId === authorityId && permission.name === this.SITE_MANAGER_ROLE); diff --git a/lib/content-services/src/lib/permission-manager/components/pop-over.directive.ts b/lib/content-services/src/lib/permission-manager/components/pop-over.directive.ts index 7fc50b7518..d304842f5e 100644 --- a/lib/content-services/src/lib/permission-manager/components/pop-over.directive.ts +++ b/lib/content-services/src/lib/permission-manager/components/pop-over.directive.ts @@ -31,7 +31,7 @@ export class PopOverDirective implements OnInit, OnDestroy, AfterViewInit { return this._open; } - @Input('adf-pop-over') popOver!: TemplateRef; + @Input('adf-pop-over') popOver!: TemplateRef; @Input() target!: HTMLElement; @Input() panelClass = 'adf-permission-pop-over'; diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts b/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts index 7df421f229..6f0b443c5b 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts @@ -189,7 +189,9 @@ describe('NodePermissionService', () => { service.updateLocallySetPermissions(fakeNodeCopy, fakeDuplicateAuthority) .subscribe( - () => { fail('should throw exception'); }, + () => { + fail('should throw exception'); + }, (errorMessage) => { expect(errorMessage).not.toBeNull(); expect(errorMessage).toBeDefined(); diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts index 22d8aa7d73..bb730c9ac7 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts @@ -224,7 +224,7 @@ export class NodePermissionService { 'filterQueries': [ { 'query': - "TYPE:'st:site'" + `TYPE:'st:site'` } ] }; @@ -307,8 +307,9 @@ export class NodePermissionService { ); } - transformNodeToUserPerson(node: Node): { person: EcmUserModel, group: Group } { - let person = null, group = null; + transformNodeToUserPerson(node: Node): { person: EcmUserModel; group: Group } { + let person = null; + let group = null; if (node.nodeType === 'cm:person') { const firstName = node.properties['cm:firstName']; const lastName = node.properties['cm:lastName']; diff --git a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts index 00b3fa51d5..d5381d51bb 100644 --- a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts @@ -42,8 +42,8 @@ describe('SearchCheckListComponent', () => { it('should setup options from settings', () => { const options: any = [ - { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, - { 'name': 'Document', 'value': "TYPE:'cm:content'" } + { 'name': 'Folder', 'value': `TYPE:'cm:folder'` }, + { 'name': 'Document', 'value': `TYPE:'cm:content'` } ]; component.settings = { options: options }; component.ngOnInit(); @@ -53,8 +53,8 @@ describe('SearchCheckListComponent', () => { it('should handle enter key as click on checkboxes', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: false }, - { name: 'Document', value: "TYPE:'cm:content'", checked: false } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: false }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } ]); component.ngOnInit(); @@ -83,8 +83,8 @@ describe('SearchCheckListComponent', () => { it('should update query builder on checkbox change', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: false }, - { name: 'Document', value: "TYPE:'cm:content'", checked: false } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: false }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } ]); component.id = 'checklist'; @@ -116,8 +116,8 @@ describe('SearchCheckListComponent', () => { it('should reset selected boxes', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, - { name: 'Document', value: "TYPE:'cm:content'", checked: true } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: true }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: true } ]); component.reset(); @@ -138,8 +138,8 @@ describe('SearchCheckListComponent', () => { component.ngOnInit(); component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, - { name: 'Document', value: "TYPE:'cm:content'", checked: true } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: true }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: true } ]); component.reset(); diff --git a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts index 672a01f9ca..a41a1fe5a7 100644 --- a/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts +++ b/lib/content-services/src/lib/search/components/search-date-range/search-date-range.component.ts @@ -141,7 +141,7 @@ export class SearchDateRangeComponent implements SearchWidget, OnInit, OnDestroy this.onDestroy$.complete(); } - apply(model: { from: string, to: string }, isValid: boolean) { + apply(model: { from: string; to: string }, isValid: boolean) { if (isValid && this.id && this.context && this.settings && this.settings.field) { this.isActive = true; diff --git a/lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.ts b/lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.ts index 0887c5fa7f..4128eeea8b 100644 --- a/lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.ts +++ b/lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.ts @@ -129,7 +129,7 @@ export class SearchDatetimeRangeComponent implements SearchWidget, OnInit, OnDes this.onDestroy$.complete(); } - apply(model: { from: string, to: string }, isValid: boolean) { + apply(model: { from: string; to: string }, isValid: boolean) { if (isValid && this.id && this.context && this.settings && this.settings.field) { this.isActive = true; diff --git a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts index 9051030862..1b5f680f74 100644 --- a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts @@ -20,7 +20,6 @@ import { TranslateModule } from '@ngx-translate/core'; import { SearchService, setupTestBed } from '@alfresco/adf-core'; import { SearchHeaderQueryBuilderService } from '../../services/search-header-query-builder.service'; import { ContentTestingModule } from '../../../testing/content.testing.module'; -// import { fakeNodePaging } from './../../../mock/document-list.component.mock'; import { SEARCH_QUERY_SERVICE_TOKEN } from '../../search-query-service.token'; import { By } from '@angular/platform-browser'; import { SearchFilterContainerComponent } from './search-filter-container.component'; @@ -36,7 +35,7 @@ const mockCategory: SearchCategory = { 'component': { 'selector': 'text', 'settings': { - 'pattern': "cm:name:'(.*?)'", + 'pattern': `cm:name:'(.*?)'`, 'field': 'cm:name', 'placeholder': 'Enter the name' } diff --git a/lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.ts b/lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.ts index c8a9ef6523..5e3bdc13ee 100644 --- a/lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.ts +++ b/lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.ts @@ -86,7 +86,7 @@ export class SearchNumberRangeComponent implements SearchWidget, OnInit { return parseInt(formGroup.get('from').value, 10) < parseInt(formGroup.get('to').value, 10) ? null : {'mismatch': true}; } - apply(model: { from: string, to: string }, isValid: boolean) { + apply(model: { from: string; to: string }, isValid: boolean) { if (isValid && this.id && this.context && this.field) { this.updateDisplayValue(); this.isActive = true; diff --git a/lib/content-services/src/lib/search/components/search-panel/search-panel.component.spec.ts b/lib/content-services/src/lib/search/components/search-panel/search-panel.component.spec.ts index fd7f015d9b..c75fcb8bc3 100644 --- a/lib/content-services/src/lib/search/components/search-panel/search-panel.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-panel/search-panel.component.spec.ts @@ -42,8 +42,8 @@ describe('SearchCheckListComponent', () => { it('should setup options from settings', () => { const options: any = [ - { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, - { 'name': 'Document', 'value': "TYPE:'cm:content'" } + { 'name': 'Folder', 'value': `TYPE:'cm:folder'` }, + { 'name': 'Document', 'value': `TYPE:'cm:content'` } ]; component.settings = { options: options }; component.ngOnInit(); @@ -53,8 +53,8 @@ describe('SearchCheckListComponent', () => { it('should handle enter key as click on checkboxes', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: false }, - { name: 'Document', value: "TYPE:'cm:content'", checked: false } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: false }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } ]); component.ngOnInit(); @@ -83,8 +83,8 @@ describe('SearchCheckListComponent', () => { it('should update query builder on checkbox change', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: false }, - { name: 'Document', value: "TYPE:'cm:content'", checked: false } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: false }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } ]); component.id = 'checklist'; @@ -116,8 +116,8 @@ describe('SearchCheckListComponent', () => { it('should reset selected boxes', () => { component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, - { name: 'Document', value: "TYPE:'cm:content'", checked: true } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: true }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: true } ]); component.reset(); @@ -138,8 +138,8 @@ describe('SearchCheckListComponent', () => { component.ngOnInit(); component.options = new SearchFilterList([ - { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, - { name: 'Document', value: "TYPE:'cm:content'", checked: true } + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: true }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: true } ]); component.reset(); diff --git a/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts b/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts index 4bc32071ff..832ba8b024 100644 --- a/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts @@ -37,7 +37,7 @@ describe('SearchTextComponent', () => { component = fixture.componentInstance; component.id = 'text'; component.settings = { - 'pattern': "cm:name:'(.*?)'", + 'pattern': `cm:name:'(.*?)'`, 'field': 'cm:name', 'placeholder': 'Enter the name' }; @@ -49,7 +49,7 @@ describe('SearchTextComponent', () => { }); it('should parse value from the context at startup', () => { - component.context.queryFragments[component.id] = "cm:name:'secret.pdf'"; + component.context.queryFragments[component.id] = `cm:name:'secret.pdf'`; fixture.detectChanges(); expect(component.value).toEqual('secret.pdf'); @@ -57,7 +57,7 @@ describe('SearchTextComponent', () => { it('should not parse value when pattern not defined', () => { component.settings.pattern = null; - component.context.queryFragments[component.id] = "cm:name:'secret.pdf'"; + component.context.queryFragments[component.id] = `cm:name:'secret.pdf'`; fixture.detectChanges(); expect(component.value).toEqual(''); @@ -73,7 +73,7 @@ describe('SearchTextComponent', () => { }); expect(component.value).toBe('top-secret.doc'); - expect(component.context.queryFragments[component.id]).toBe("cm:name:'top-secret.doc'"); + expect(component.context.queryFragments[component.id]).toBe(`cm:name:'top-secret.doc'`); expect(component.context.update).toHaveBeenCalled(); }); @@ -85,7 +85,7 @@ describe('SearchTextComponent', () => { }); expect(component.value).toBe('top-secret.doc'); - expect(component.context.queryFragments[component.id]).toBe("cm:name:'top-secret.doc'"); + expect(component.context.queryFragments[component.id]).toBe(`cm:name:'top-secret.doc'`); component.onChangedHandler({ target: { @@ -98,7 +98,7 @@ describe('SearchTextComponent', () => { }); it('should show the custom/default name', async () => { - component.context.queryFragments[component.id] = "cm:name:'secret.pdf'"; + component.context.queryFragments[component.id] = `cm:name:'secret.pdf'`; fixture.detectChanges(); await fixture.whenStable(); expect(component.value).toEqual('secret.pdf'); @@ -107,7 +107,7 @@ describe('SearchTextComponent', () => { }); it('should be able to reset by clicking clear button', async () => { - component.context.queryFragments[component.id] = "cm:name:'secret.pdf'"; + component.context.queryFragments[component.id] = `cm:name:'secret.pdf'`; fixture.detectChanges(); await fixture.whenStable(); const clearElement = fixture.debugElement.nativeElement.querySelector('button'); diff --git a/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts b/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts index baac0c421e..4ffff41a5a 100644 --- a/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts +++ b/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts @@ -107,7 +107,7 @@ export class SearchWidgetContainerComponent implements OnInit, OnDestroy, OnChan this.componentRef.instance.submitValues(); } - setValue(currentValue: string | Object) { + setValue(currentValue: string | any) { this.componentRef.instance.isActive = true; this.componentRef.instance.setValue(currentValue); } diff --git a/lib/content-services/src/lib/search/components/search.component.spec.ts b/lib/content-services/src/lib/search/components/search.component.spec.ts index da525810fd..bc06fde74d 100644 --- a/lib/content-services/src/lib/search/components/search.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search.component.spec.ts @@ -24,7 +24,8 @@ import { TranslateModule } from '@ngx-translate/core'; describe('SearchComponent', () => { - let fixture: ComponentFixture, element: HTMLElement; + let fixture: ComponentFixture; + let element: HTMLElement; let component: SimpleSearchTestComponent; let searchService: SearchService; diff --git a/lib/content-services/src/lib/search/components/search.component.ts b/lib/content-services/src/lib/search/components/search.component.ts index af6486a240..f12325b90a 100644 --- a/lib/content-services/src/lib/search/components/search.component.ts +++ b/lib/content-services/src/lib/search/components/search.component.ts @@ -72,6 +72,7 @@ export class SearchComponent implements SearchComponentInterface, AfterContentIn searchTerm: string = ''; /** CSS class for display. */ + // eslint-disable-next-line @angular-eslint/no-input-rename @Input('class') set classList(classList: string) { if (classList && classList.length) { diff --git a/lib/content-services/src/lib/search/forms/search-term-validator.spec.ts b/lib/content-services/src/lib/search/forms/search-term-validator.spec.ts index 0d9b634fcd..1c850258c8 100644 --- a/lib/content-services/src/lib/search/forms/search-term-validator.spec.ts +++ b/lib/content-services/src/lib/search/forms/search-term-validator.spec.ts @@ -35,7 +35,7 @@ describe('Search term validator', () => { expect(control.valid).toBe(false); }); - /* tslint:disable:max-line-length */ + /* eslint-disable max-len */ it('should fail validation for a value with less than the specified required number of alphanumeric characters but with other non-alphanumeric characters', () => { const control = new FormControl('a ._-?b', SearchTermValidator.minAlphanumericChars(3)); expect(control.valid).toBe(false); diff --git a/lib/content-services/src/lib/search/services/search-filter.service.ts b/lib/content-services/src/lib/search/services/search-filter.service.ts index b45d1dca28..7192d06faf 100644 --- a/lib/content-services/src/lib/search/services/search-filter.service.ts +++ b/lib/content-services/src/lib/search/services/search-filter.service.ts @@ -32,7 +32,7 @@ export class SearchFilterService { /** * Contains string-to-type mappings for registered widgets. */ - widgets: { [id: string]: Type<{}> } = { + widgets: { [id: string]: Type } = { 'text': SearchTextComponent, 'radio': SearchRadioComponent, 'slider': SearchSliderComponent, diff --git a/lib/content-services/src/lib/social/mock/rating.service.mock.ts b/lib/content-services/src/lib/social/mock/rating.service.mock.ts index 023c2cd9b1..b48ff2ae64 100644 --- a/lib/content-services/src/lib/social/mock/rating.service.mock.ts +++ b/lib/content-services/src/lib/social/mock/rating.service.mock.ts @@ -26,7 +26,7 @@ import { RatingServiceInterface } from '../services/rating.service.interface'; }) export class RatingServiceMock implements RatingServiceInterface { - getRating(nodeId: string, _ratingType: any): Observable { + getRating(nodeId: string, _ratingType: any): Observable { if (nodeId === 'fake-like-node-id') { return of(ratingOneMock); } @@ -34,7 +34,7 @@ export class RatingServiceMock implements RatingServiceInterface { return of(ratingThreeMock); } - postRating(nodeId: string, _ratingType: string, _vote: any): Observable { + postRating(nodeId: string, _ratingType: string, _vote: any): Observable { if (nodeId === 'ratingOneMock') { ratingOneMock.entry.aggregate.numberOfRatings = 1; ratingOneMock.entry.aggregate.average = 1.0; diff --git a/lib/content-services/src/lib/social/rating.component.ts b/lib/content-services/src/lib/social/rating.component.ts index 0edaf73b94..cbc75edb11 100644 --- a/lib/content-services/src/lib/social/rating.component.ts +++ b/lib/content-services/src/lib/social/rating.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewEncapsulation } from '@angular/core'; import { RatingService } from './services/rating.service'; import { RatingEntry } from '@alfresco/js-api'; import { takeUntil } from 'rxjs/operators'; @@ -27,7 +27,7 @@ import { Subject } from 'rxjs'; templateUrl: './rating.component.html', encapsulation: ViewEncapsulation.None }) -export class RatingComponent implements OnChanges { +export class RatingComponent implements OnChanges, OnDestroy { /** Identifier of the node to apply the rating to. */ @Input() diff --git a/lib/content-services/src/lib/social/services/rating.service.interface.ts b/lib/content-services/src/lib/social/services/rating.service.interface.ts index 4e63b29389..7ffac7eb38 100644 --- a/lib/content-services/src/lib/social/services/rating.service.interface.ts +++ b/lib/content-services/src/lib/social/services/rating.service.interface.ts @@ -20,7 +20,7 @@ import { Observable } from 'rxjs'; export interface RatingServiceInterface { - getRating(nodeId: string, ratingType: any): Observable; - postRating(nodeId: string, ratingType: string, vote: any): Observable; + getRating(nodeId: string, ratingType: any): Observable; + postRating(nodeId: string, ratingType: string, vote: any): Observable; deleteRating(nodeId: string, ratingType: any): Observable; } diff --git a/lib/content-services/src/lib/social/services/rating.service.ts b/lib/content-services/src/lib/social/services/rating.service.ts index c1f0966615..90b127bc38 100644 --- a/lib/content-services/src/lib/social/services/rating.service.ts +++ b/lib/content-services/src/lib/social/services/rating.service.ts @@ -42,7 +42,7 @@ export class RatingService implements RatingServiceInterface { * @param ratingType Type of rating (can be "likes" or "fiveStar") * @returns The rating value */ - getRating(nodeId: string, ratingType: any): Observable { + getRating(nodeId: string, ratingType: any): Observable { return from(this.ratingsApi.getRating(nodeId, ratingType)) .pipe( catchError(this.handleError) @@ -56,7 +56,7 @@ export class RatingService implements RatingServiceInterface { * @param vote Rating value (boolean for "likes", numeric 0..5 for "fiveStar") * @returns Details about the rating, including the new value */ - postRating(nodeId: string, ratingType: string, vote: any): Observable { + postRating(nodeId: string, ratingType: string, vote: any): Observable { const ratingBody: RatingBody = new RatingBody({ 'id': ratingType, 'myRating': vote diff --git a/lib/content-services/src/lib/tag/services/tag.service.ts b/lib/content-services/src/lib/tag/services/tag.service.ts index 2f7995c70d..71b5134284 100644 --- a/lib/content-services/src/lib/tag/services/tag.service.ts +++ b/lib/content-services/src/lib/tag/services/tag.service.ts @@ -24,7 +24,7 @@ import { TagBody, TagPaging, TagEntry, TagsApi } from '@alfresco/js-api'; @Injectable({ providedIn: 'root' }) -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class TagService { _tagsApi: TagsApi; diff --git a/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts b/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts index c4052ff204..f05ddec9d2 100644 --- a/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts +++ b/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts @@ -22,7 +22,7 @@ import { UploadFilesEvent } from '../upload-files.event'; 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 UploadBase implements OnInit, OnDestroy { /** Sets a limit on the maximum size (in bytes) of a file to be uploaded. diff --git a/lib/content-services/src/lib/upload/components/upload-drag-area.component.ts b/lib/content-services/src/lib/upload/components/upload-drag-area.component.ts index 65371c8150..5748da27dc 100644 --- a/lib/content-services/src/lib/upload/components/upload-drag-area.component.ts +++ b/lib/content-services/src/lib/upload/components/upload-drag-area.component.ts @@ -72,11 +72,10 @@ export class UploadDragAreaComponent extends UploadBase implements NodeAllowable * @param latestFilesAdded - files in the upload queue enriched with status flag and xhr object. */ showUndoNotificationBar(latestFilesAdded: FileModel[]) { - let messageTranslate: any, actionTranslate: any; - messageTranslate = this.translationService.get('FILE_UPLOAD.MESSAGES.PROGRESS'); - actionTranslate = this.translationService.get('FILE_UPLOAD.ACTION.UNDO'); + const messageTranslate = this.translationService.instant('FILE_UPLOAD.MESSAGES.PROGRESS'); + const actionTranslate = this.translationService.instant('FILE_UPLOAD.ACTION.UNDO'); - this.notificationService.openSnackMessageAction(messageTranslate.value, actionTranslate.value, 3000).onAction().subscribe(() => { + this.notificationService.openSnackMessageAction(messageTranslate, actionTranslate, 3000).onAction().subscribe(() => { this.uploadService.cancelUpload(...latestFilesAdded); }); } diff --git a/lib/content-services/src/lib/upload/directives/file-draggable.directive.ts b/lib/content-services/src/lib/upload/directives/file-draggable.directive.ts index ea5e81de74..10b883f0d9 100644 --- a/lib/content-services/src/lib/upload/directives/file-draggable.directive.ts +++ b/lib/content-services/src/lib/upload/directives/file-draggable.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { FileUtils } from '@alfresco/adf-core'; import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core'; diff --git a/lib/extensions/.eslintrc.json b/lib/extensions/.eslintrc.json new file mode 100644 index 0000000000..8ec8743198 --- /dev/null +++ b/lib/extensions/.eslintrc.json @@ -0,0 +1,110 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/extensions/tsconfig.lib.json", + "lib/extensions/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" + } + } + ] +} diff --git a/lib/extensions/src/lib/components/dynamic-component/dynamic.component.spec.ts b/lib/extensions/src/lib/components/dynamic-component/dynamic.component.spec.ts index e1770a22b7..7b47d83d50 100644 --- a/lib/extensions/src/lib/components/dynamic-component/dynamic.component.spec.ts +++ b/lib/extensions/src/lib/components/dynamic-component/dynamic.component.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, diff --git a/lib/extensions/src/lib/config/extension-utils.ts b/lib/extensions/src/lib/config/extension-utils.ts index 78ea128c46..3b1c12429a 100644 --- a/lib/extensions/src/lib/config/extension-utils.ts +++ b/lib/extensions/src/lib/config/extension-utils.ts @@ -102,7 +102,7 @@ export function reduceEmptyMenus( return acc.concat(el); } -export function mergeObjects(...objects: object[]): any { +export function mergeObjects(...objects: any[]): any { const result = {}; objects.forEach((source) => { diff --git a/lib/extensions/src/lib/services/component-register.service.ts b/lib/extensions/src/lib/services/component-register.service.ts index d960b5f5d3..417ce62302 100644 --- a/lib/extensions/src/lib/services/component-register.service.ts +++ b/lib/extensions/src/lib/services/component-register.service.ts @@ -23,16 +23,16 @@ export interface ExtensionComponent { @Injectable({ providedIn: 'root' }) export class ComponentRegisterService { - components: { [key: string]: Type<{}> } = {}; + components: { [key: string]: Type } = {}; - setComponents(values: { [key: string]: Type<{}> }) { + setComponents(values: { [key: string]: Type }) { if (values) { this.components = Object.assign({}, this.components, values); } } getComponentById(id: string): Type { - return > this.components[id]; + return this.components[id]; } hasComponentById(id: string): boolean { diff --git a/lib/extensions/src/lib/services/extension.service.ts b/lib/extensions/src/lib/services/extension.service.ts index 3391cbbe7e..d8f453c8d1 100644 --- a/lib/extensions/src/lib/services/extension.service.ts +++ b/lib/extensions/src/lib/services/extension.service.ts @@ -57,7 +57,7 @@ export class ExtensionService { routes: Array = []; actions: Array = []; features: Array = []; - authGuards: { [key: string]: Type<{}> } = {}; + authGuards: { [key: string]: Type } = {}; protected onSetup$ = new BehaviorSubject(this.config); setup$ = this.onSetup$.asObservable(); @@ -72,6 +72,7 @@ export class ExtensionService { /** * Loads and registers an extension config file and plugins (specified by path properties). + * * @returns The loaded config data */ async load(): Promise { @@ -86,6 +87,7 @@ export class ExtensionService { /** * Registers extensions from a config object. + * * @param config Object with config data */ setup(config: ExtensionConfig) { @@ -112,6 +114,7 @@ export class ExtensionService { /** * Gets features by key. + * * @param key Key string, using dot notation * @returns Features array found by key */ @@ -126,6 +129,7 @@ export class ExtensionService { /** * Adds one or more new rule evaluators to the existing set. + * * @param values The new evaluators to add */ setEvaluators(values: { [key: string]: RuleEvaluator }) { @@ -134,9 +138,10 @@ export class ExtensionService { /** * Adds one or more new auth guards to the existing set. + * * @param values The new auth guards to add */ - setAuthGuards(values: { [key: string]: Type<{}> }) { + setAuthGuards(values: { [key: string]: Type }) { if (values) { this.authGuards = Object.assign({}, this.authGuards, values); } @@ -144,14 +149,16 @@ export class ExtensionService { /** * Adds one or more new components to the existing set. + * * @param values The new components to add */ - setComponents(values: { [key: string]: Type<{}> }) { + setComponents(values: { [key: string]: Type }) { this.componentRegister.setComponents(values); } /** * Retrieves a route using its ID value. + * * @param id The ID value to look for * @returns The route or null if not found */ @@ -161,10 +168,11 @@ export class ExtensionService { /** * Retrieves one or more auth guards using an array of ID values. + * * @param ids Array of ID value to look for * @returns Array of auth guards or empty array if none were found */ - getAuthGuards(ids: string[]): Array> { + getAuthGuards(ids: string[]): Array> { return (ids || []) .map((id) => this.authGuards[id]) .filter((guard) => guard); @@ -172,6 +180,7 @@ export class ExtensionService { /** * Retrieves an action using its ID value. + * * @param id The ID value to look for * @returns Action or null if not found */ @@ -181,6 +190,7 @@ export class ExtensionService { /** * Retrieves a RuleEvaluator function using its key name. + * * @param key Key name to look for * @returns RuleEvaluator or null if not found */ @@ -190,6 +200,7 @@ export class ExtensionService { /** * Evaluates a rule. + * * @param ruleId ID of the rule to evaluate * @param context Custom rule execution context. * @returns True if the rule passed, false otherwise @@ -200,6 +211,7 @@ export class ExtensionService { /** * Retrieves a registered extension component using its ID value. + * * @param id The ID value to look for * @returns The component or null if not found */ @@ -209,6 +221,7 @@ export class ExtensionService { /** * Retrieves a rule using its ID value. + * * @param id The ID value to look for * @returns The rule or null if not found */ @@ -218,11 +231,12 @@ export class ExtensionService { /** * Runs a lightweight expression stored in a string. + * * @param value String containing the expression or literal value * @param context Parameter object for the expression with details of app state * @returns Result of evaluated expression, if found, or the literal value otherwise */ - runExpression(value: string | {} , context?: any) { + runExpression(value: string | any , context?: any) { if (typeof value === 'string' ) { return this.evaluateExpression(value, context); } else { diff --git a/lib/extensions/src/lib/services/startup-extension-factory.ts b/lib/extensions/src/lib/services/startup-extension-factory.ts index e938f78d5f..9b45d458a3 100644 --- a/lib/extensions/src/lib/services/startup-extension-factory.ts +++ b/lib/extensions/src/lib/services/startup-extension-factory.ts @@ -17,6 +17,6 @@ import { AppExtensionService } from './app-extension.service'; -export function setupExtensions(appExtensionService: AppExtensionService): Function { +export function setupExtensions(appExtensionService: AppExtensionService) { return () => appExtensionService.load(); } diff --git a/lib/insights/.eslintrc.json b/lib/insights/.eslintrc.json new file mode 100644 index 0000000000..5db324d7ec --- /dev/null +++ b/lib/insights/.eslintrc.json @@ -0,0 +1,110 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/insights/tsconfig.lib.json", + "lib/insights/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" + } + } + ] +} diff --git a/lib/insights/src/lib/analytics-process/components/analytics-report-parameters.component.html b/lib/insights/src/lib/analytics-process/components/analytics-report-parameters.component.html index 62bb7f3fac..902827bba5 100644 --- a/lib/insights/src/lib/analytics-process/components/analytics-report-parameters.component.html +++ b/lib/insights/src/lib/analytics-process/components/analytics-report-parameters.component.html @@ -11,7 +11,6 @@ type="text" class="adf-edit-report-title" id="reportName" - autofocus data-automation-id="reportName" [value]="reportParameters.name" (input)="reportParameters.name=$any($event).target.value" diff --git a/lib/insights/src/lib/analytics-process/components/widgets/checkbox/checkbox.widget.ts b/lib/insights/src/lib/analytics-process/components/widgets/checkbox/checkbox.widget.ts index 1a451e0a20..c26ea32e23 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/checkbox/checkbox.widget.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/checkbox/checkbox.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-access-missing-member no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ElementRef, Input, ViewEncapsulation } from '@angular/core'; import { FormGroup } from '@angular/forms'; diff --git a/lib/insights/src/lib/analytics-process/components/widgets/date-range/date-range.widget.ts b/lib/insights/src/lib/analytics-process/components/widgets/date-range/date-range.widget.ts index 6eb41771cf..0a8d1610ac 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/date-range/date-range.widget.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/date-range/date-range.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { MOMENT_DATE_FORMATS, MomentDateAdapter, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core'; import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation, OnDestroy } from '@angular/core'; diff --git a/lib/insights/src/lib/analytics-process/components/widgets/dropdown/dropdown.widget.ts b/lib/insights/src/lib/analytics-process/components/widgets/dropdown/dropdown.widget.ts index 4ccc18b77c..b13afa39d7 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/dropdown/dropdown.widget.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/dropdown/dropdown.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-access-missing-member no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; diff --git a/lib/insights/src/lib/analytics-process/components/widgets/duration/duration.widget.ts b/lib/insights/src/lib/analytics-process/components/widgets/duration/duration.widget.ts index e83efd2e59..0ffc681145 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/duration/duration.widget.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/duration/duration.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-access-missing-member no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ElementRef, Input, OnInit, ViewEncapsulation } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; diff --git a/lib/insights/src/lib/analytics-process/components/widgets/number/number.widget.ts b/lib/insights/src/lib/analytics-process/components/widgets/number/number.widget.ts index cd781e3371..aa8526ca98 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/number/number.widget.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/number/number.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector no-access-missing-member no-input-rename */ + /* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */ import { Component, ElementRef, Input, OnInit, ViewEncapsulation } from '@angular/core'; import { FormGroup, Validators } from '@angular/forms'; diff --git a/lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts b/lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts index f97174ac07..09526f77f7 100644 --- a/lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts +++ b/lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts @@ -18,7 +18,7 @@ import { EventEmitter, Input, OnChanges, Output, SimpleChanges, Directive } from '@angular/core'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class WidgetComponent implements OnChanges { /** field. */ diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-box-publish-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-box-publish-task.component.ts index 018f4468fe..7b81b3efe0 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-box-publish-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-box-publish-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-business-rule-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-business-rule-task.component.ts index 72d9aea6b8..f1f3fc7742 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-business-rule-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-business-rule-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-camel-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-camel-task.component.ts index 6be77a89bf..5107e18800 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-camel-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-camel-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-container-service-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-container-service-task.component.ts index 1225e2b8d7..7e0ce67c3f 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-container-service-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-container-service-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-google-drive-publish-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-google-drive-publish-task.component.ts index ef0a7d19ca..bee2988e20 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-google-drive-publish-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-google-drive-publish-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-manual-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-manual-task.component.ts index fbce439ed9..af8ac1d5c0 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-manual-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-manual-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-mule-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-mule-task.component.ts index bcb24342e1..0c19198cc9 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-mule-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-mule-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-receive-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-receive-task.component.ts index a524088b3f..4bc6b85274 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-receive-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-receive-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-rest-call-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-rest-call-task.component.ts index 9a0939b96c..2a91cf18d0 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-rest-call-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-rest-call-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-script-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-script-task.component.ts index 787ca1adea..4d6d9913f4 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-script-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-script-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-send-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-send-task.component.ts index 57a9e909a0..e9368935ad 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-send-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-send-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-service-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-service-task.component.ts index 5510674e28..d528d73e39 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-service-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-service-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-task.component.ts index 4aa7fec601..5f83c08159 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/activities/diagram-user-task.component.ts b/lib/insights/src/lib/diagram/components/activities/diagram-user-task.component.ts index 95dc014809..24a4d15a95 100644 --- a/lib/insights/src/lib/diagram/components/activities/diagram-user-task.component.ts +++ b/lib/insights/src/lib/diagram/components/activities/diagram-user-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/boundary-events/diagram-boundary-event.component.ts b/lib/insights/src/lib/diagram/components/boundary-events/diagram-boundary-event.component.ts index 072e60de93..3ef83d4632 100644 --- a/lib/insights/src/lib/diagram/components/boundary-events/diagram-boundary-event.component.ts +++ b/lib/insights/src/lib/diagram/components/boundary-events/diagram-boundary-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/boundary-events/diagram-throw-event.component.ts b/lib/insights/src/lib/diagram/components/boundary-events/diagram-throw-event.component.ts index 8e9e6e053d..4cfadc24ec 100644 --- a/lib/insights/src/lib/diagram/components/boundary-events/diagram-throw-event.component.ts +++ b/lib/insights/src/lib/diagram/components/boundary-events/diagram-throw-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/events/diagram-end-event.component.ts b/lib/insights/src/lib/diagram/components/events/diagram-end-event.component.ts index f05280a617..7491d8e484 100644 --- a/lib/insights/src/lib/diagram/components/events/diagram-end-event.component.ts +++ b/lib/insights/src/lib/diagram/components/events/diagram-end-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/events/diagram-event.component.ts b/lib/insights/src/lib/diagram/components/events/diagram-event.component.ts index cd539d1ca8..651dc00847 100644 --- a/lib/insights/src/lib/diagram/components/events/diagram-event.component.ts +++ b/lib/insights/src/lib/diagram/components/events/diagram-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/events/diagram-start-event.component.ts b/lib/insights/src/lib/diagram/components/events/diagram-start-event.component.ts index 1800b6515f..ad8be689d3 100644 --- a/lib/insights/src/lib/diagram/components/events/diagram-start-event.component.ts +++ b/lib/insights/src/lib/diagram/components/events/diagram-start-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/gateways/diagram-event-gateway.component.ts b/lib/insights/src/lib/diagram/components/gateways/diagram-event-gateway.component.ts index f3e24f59cd..c71f4148d5 100644 --- a/lib/insights/src/lib/diagram/components/gateways/diagram-event-gateway.component.ts +++ b/lib/insights/src/lib/diagram/components/gateways/diagram-event-gateway.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/gateways/diagram-exclusive-gateway.component.ts b/lib/insights/src/lib/diagram/components/gateways/diagram-exclusive-gateway.component.ts index 8f862a0b14..1904c071ae 100644 --- a/lib/insights/src/lib/diagram/components/gateways/diagram-exclusive-gateway.component.ts +++ b/lib/insights/src/lib/diagram/components/gateways/diagram-exclusive-gateway.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/gateways/diagram-gateway.component.ts b/lib/insights/src/lib/diagram/components/gateways/diagram-gateway.component.ts index 48bd93ea9b..06ab70e92d 100644 --- a/lib/insights/src/lib/diagram/components/gateways/diagram-gateway.component.ts +++ b/lib/insights/src/lib/diagram/components/gateways/diagram-gateway.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/gateways/diagram-inclusive-gateway.component.ts b/lib/insights/src/lib/diagram/components/gateways/diagram-inclusive-gateway.component.ts index 8aa4c07342..aa150f1eb6 100644 --- a/lib/insights/src/lib/diagram/components/gateways/diagram-inclusive-gateway.component.ts +++ b/lib/insights/src/lib/diagram/components/gateways/diagram-inclusive-gateway.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/gateways/diagram-parallel-gateway.component.ts b/lib/insights/src/lib/diagram/components/gateways/diagram-parallel-gateway.component.ts index 86b5629d3a..b078706f4a 100644 --- a/lib/insights/src/lib/diagram/components/gateways/diagram-parallel-gateway.component.ts +++ b/lib/insights/src/lib/diagram/components/gateways/diagram-parallel-gateway.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-container-icon-event.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-container-icon-event.component.ts index 2bae0a53d6..001091b704 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-container-icon-event.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-container-icon-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-alfresco-publish-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-alfresco-publish-task.component.ts index 837529f619..d4b880e43c 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-alfresco-publish-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-alfresco-publish-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-box-publish-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-box-publish-task.component.ts index f95d7a095e..f3a087e972 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-box-publish-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-box-publish-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-business-rule-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-business-rule-task.component.ts index 92b48283e6..e273db5a6a 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-business-rule-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-business-rule-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-camel-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-camel-task.component.ts index 50879f688e..e728936a71 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-camel-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-camel-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-error.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-error.component.ts index d89cdc1e1d..1e3f2ac96b 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-error.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-error.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-google-drive-publish-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-google-drive-publish-task.component.ts index 111720d8e0..c439d868b7 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-google-drive-publish-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-google-drive-publish-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-manual-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-manual-task.component.ts index 1525faaff9..7707b89187 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-manual-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-manual-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-message.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-message.component.ts index 526cac5591..2ae6edf4e2 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-message.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-message.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-mule-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-mule-task.component.ts index 57ac93eae6..e47e5237bd 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-mule-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-mule-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-receive-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-receive-task.component.ts index c49f653013..3f6e3271fc 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-receive-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-receive-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-rest-call-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-rest-call-task.component.ts index 8c5100646c..d659f1a64f 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-rest-call-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-rest-call-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-script-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-script-task.component.ts index 38aae1fd1a..1824fb1035 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-script-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-script-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-send-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-send-task.component.ts index ae1f2262b1..1b742e4693 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-send-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-send-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-service-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-service-task.component.ts index ca09347446..90f5d29508 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-service-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-service-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-signal.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-signal.component.ts index 3632acc512..c97a304221 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-signal.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-signal.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-timer.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-timer.component.ts index 56a14538a4..a9f8beb975 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-timer.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-timer.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/icons/diagram-icon-user-task.component.ts b/lib/insights/src/lib/diagram/components/icons/diagram-icon-user-task.component.ts index 5311070614..d9b4d14716 100644 --- a/lib/insights/src/lib/diagram/components/icons/diagram-icon-user-task.component.ts +++ b/lib/insights/src/lib/diagram/components/icons/diagram-icon-user-task.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/intermediate-catching-events/diagram-intermediate-catching-event.component.ts b/lib/insights/src/lib/diagram/components/intermediate-catching-events/diagram-intermediate-catching-event.component.ts index 0c4cee7545..e1147d428a 100644 --- a/lib/insights/src/lib/diagram/components/intermediate-catching-events/diagram-intermediate-catching-event.component.ts +++ b/lib/insights/src/lib/diagram/components/intermediate-catching-events/diagram-intermediate-catching-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/raphael/polyline.ts b/lib/insights/src/lib/diagram/components/raphael/polyline.ts index fd7bd12e7d..ecc1d36f15 100644 --- a/lib/insights/src/lib/diagram/components/raphael/polyline.ts +++ b/lib/insights/src/lib/diagram/components/raphael/polyline.ts @@ -17,7 +17,7 @@ import { Anchor } from './anchor'; -/* tslint:disable */ +/* eslint-disable */ export class Polyline { id: any = null; diff --git a/lib/insights/src/lib/diagram/components/structural/diagram-event-subprocess.component.ts b/lib/insights/src/lib/diagram/components/structural/diagram-event-subprocess.component.ts index 0bd542ebcd..c8c97d3bb5 100644 --- a/lib/insights/src/lib/diagram/components/structural/diagram-event-subprocess.component.ts +++ b/lib/insights/src/lib/diagram/components/structural/diagram-event-subprocess.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/structural/diagram-subprocess.component.ts b/lib/insights/src/lib/diagram/components/structural/diagram-subprocess.component.ts index 8a739fab72..16e4f9551a 100644 --- a/lib/insights/src/lib/diagram/components/structural/diagram-subprocess.component.ts +++ b/lib/insights/src/lib/diagram/components/structural/diagram-subprocess.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DiagramColorService } from '../../services/diagram-color.service'; diff --git a/lib/insights/src/lib/diagram/components/swimlanes/diagram-lane.component.ts b/lib/insights/src/lib/diagram/components/swimlanes/diagram-lane.component.ts index a9b10dad67..d9c434d84d 100644 --- a/lib/insights/src/lib/diagram/components/swimlanes/diagram-lane.component.ts +++ b/lib/insights/src/lib/diagram/components/swimlanes/diagram-lane.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/swimlanes/diagram-lanes.component.ts b/lib/insights/src/lib/diagram/components/swimlanes/diagram-lanes.component.ts index 6065b67c1b..52947a8fcd 100644 --- a/lib/insights/src/lib/diagram/components/swimlanes/diagram-lanes.component.ts +++ b/lib/insights/src/lib/diagram/components/swimlanes/diagram-lanes.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/swimlanes/diagram-pool.component.ts b/lib/insights/src/lib/diagram/components/swimlanes/diagram-pool.component.ts index 52e6ff7f3c..fd27b2a56d 100644 --- a/lib/insights/src/lib/diagram/components/swimlanes/diagram-pool.component.ts +++ b/lib/insights/src/lib/diagram/components/swimlanes/diagram-pool.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/swimlanes/diagram-pools.component.ts b/lib/insights/src/lib/diagram/components/swimlanes/diagram-pools.component.ts index 1b45fc7fdc..73cbc914f9 100644 --- a/lib/insights/src/lib/diagram/components/swimlanes/diagram-pools.component.ts +++ b/lib/insights/src/lib/diagram/components/swimlanes/diagram-pools.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ + /* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core'; diff --git a/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.spec.ts b/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.spec.ts index 9554192922..47222b2247 100644 --- a/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.spec.ts +++ b/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.spec.ts @@ -95,8 +95,8 @@ describe('DiagramTooltipComponent', () => { ]; fixture.detectChanges(); - const propertyNames = fixture.debugElement.queryAll(By.css('.adf-diagram-general-property > .adf-diagram-propertyName')), - propertyValues = fixture.debugElement.queryAll(By.css('.adf-diagram-general-property > .adf-diagram-propertyValue')); + const propertyNames = fixture.debugElement.queryAll(By.css('.adf-diagram-general-property > .adf-diagram-propertyName')); + const propertyValues = fixture.debugElement.queryAll(By.css('.adf-diagram-general-property > .adf-diagram-propertyValue')); expect(propertyNames.length).toBe(2); expect(propertyValues.length).toBe(2); @@ -112,8 +112,8 @@ describe('DiagramTooltipComponent', () => { fixture.detectChanges(); - const propertyValue = fixture.debugElement.queryAll(By.css('.adf-diagram-heat-value > .adf-diagram-value')), - propertyValueType = fixture.debugElement.queryAll(By.css('.adf-diagram-heat-value > .adf-diagram-valuetype')); + const propertyValue = fixture.debugElement.queryAll(By.css('.adf-diagram-heat-value > .adf-diagram-value')); + const propertyValueType = fixture.debugElement.queryAll(By.css('.adf-diagram-heat-value > .adf-diagram-valuetype')); expect(propertyValue.length).toBe(1); expect(propertyValueType.length).toBe(1); diff --git a/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.ts b/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.ts index f06f5342b7..4069dc220e 100644 --- a/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.ts +++ b/lib/insights/src/lib/diagram/components/tooltip/diagram-tooltip.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core'; const POSITION = { BOTTOM: 'bottom', LEFT: 'left', RIGHT: 'right', TOP: 'top' }; diff --git a/lib/process-services-cloud/.eslintrc.json b/lib/process-services-cloud/.eslintrc.json new file mode 100644 index 0000000000..c6f9609124 --- /dev/null +++ b/lib/process-services-cloud/.eslintrc.json @@ -0,0 +1,101 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/process-services-cloud/tsconfig.lib.json", + "lib/process-services-cloud/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-cloud", + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "adf-cloud", + "style": "camelCase" + } + ], + "@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" + } + } + ] +} diff --git a/lib/process-services-cloud/src/lib/app/models/application-instance.model.ts b/lib/process-services-cloud/src/lib/app/models/application-instance.model.ts index 1ade50f6cb..5de2774af9 100644 --- a/lib/process-services-cloud/src/lib/app/models/application-instance.model.ts +++ b/lib/process-services-cloud/src/lib/app/models/application-instance.model.ts @@ -49,7 +49,7 @@ export interface DescriptorSecurity { export interface DescriptorVariables { [key: string]: any; - connectors?: { [key: string]: any; }; + connectors?: { [key: string]: any }; } export interface DescriptorInfrastructure { diff --git a/lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts b/lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts index a709239e89..42b70509cc 100644 --- a/lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts @@ -36,6 +36,7 @@ export class AppsProcessCloudService { /** * Gets a list of deployed apps for this user by status. + * * @param status Required status value * @param role to filter the apps * @returns The list of deployed apps @@ -63,16 +64,18 @@ export class AppsProcessCloudService { } const api: Oauth2Auth = this.apiService.getInstance().oauth2Auth; const path = this.getApplicationUrl(); - const pathParams = {}, queryParams = { status: status, roles : role, sort: 'name' }, - headerParams = {}, formParams = {}, bodyParam = {}, - contentTypes = ['application/json'], accepts = ['application/json']; + const pathParams = {}; + const queryParams = { status, roles : role, sort: 'name' }; + const headerParams = {}; + const formParams = {}; + const bodyParam = {}; + const contentTypes = ['application/json']; + const accepts = ['application/json']; return from(api.callCustomApi(path, 'GET', pathParams, queryParams, headerParams, formParams, bodyParam, contentTypes, accepts)) .pipe( - map((applications: any) => { - return applications.list.entries.map((application) => application.entry); - }), + map((applications: any) => applications.list.entries.map((application) => application.entry)), catchError((err) => this.handleError(err)) ); } diff --git a/lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.ts b/lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.ts index d413d9702a..df0db94829 100644 --- a/lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.ts +++ b/lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Input, EventEmitter, Output } from '@angular/core'; +import { Component, Input, EventEmitter, Output, OnInit } from '@angular/core'; import { MatSelectChange } from '@angular/material/select'; import { ProcessFilterProperties, ProcessFilterOptions } from '../../process/process-filters/models/process-filter-cloud.model'; import { FormGroup, FormControl } from '@angular/forms'; @@ -27,7 +27,7 @@ import moment from 'moment-es6'; styleUrls: ['./date-range-filter.component.scss'], templateUrl: './date-range-filter.component.html' }) - export class DateRangeFilterComponent { + export class DateRangeFilterComponent implements OnInit { @Input() processFilterProperty: ProcessFilterProperties; diff --git a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts index 7b0c87223e..c1bbaf1371 100644 --- a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts @@ -74,6 +74,7 @@ describe('FormCloudComponent', () => { selector: 'adf-cloud-custom-widget', template: '
' }) + // eslint-disable-next-line @angular-eslint/component-class-suffix class CustomWidget { typeId = 'CustomWidget'; } diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts index dcc350b79c..be1c6b9ef9 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.ts b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.ts index d2956b4665..25f61b779b 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.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 { LocalizedDatePipe, ThumbnailService } from '@alfresco/adf-core'; diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/upload-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/upload-cloud.widget.ts index d8208353c5..d1de313e60 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/upload-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/upload-cloud.widget.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { Node } from '@alfresco/js-api'; diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.ts index 7e60d1f328..24285cd611 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.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/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts index 4bea68f0b3..89206e1e7b 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts @@ -31,7 +31,7 @@ import { FormCloudService } from '../../../services/form-cloud.service'; import { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs'; import { filter, map, takeUntil } from 'rxjs/operators'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'dropdown-cloud-widget', @@ -135,7 +135,11 @@ export class DropdownCloudWidgetComponent extends WidgetComponent implements OnI private parentValueChanged(value: string) { if (value && !this.isDefaultValue(value)) { - this.isValidRestType() ? this.persistFieldOptionsFromRestApi() : this.persistFieldOptionsFromManualList(value); + if (this.isValidRestType()) { + this.persistFieldOptionsFromRestApi(); + } else { + this.persistFieldOptionsFromManualList(value); + } } else if (this.isDefaultValue(value)) { this.resetRestApiErrorMessage(); this.addDefaultOption(); diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.ts index efb5b46c3c..d101bc6c65 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.ts @@ -15,14 +15,14 @@ * limitations under the License. */ -import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { WidgetComponent, IdentityGroupModel, FormService } from '@alfresco/adf-core'; import { FormControl } from '@angular/forms'; import { filter, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { ComponentSelectionMode } from '../../../../types'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'group-cloud-widget', @@ -40,7 +40,7 @@ import { ComponentSelectionMode } from '../../../../types'; }, encapsulation: ViewEncapsulation.None }) -export class GroupCloudWidgetComponent extends WidgetComponent implements OnInit { +export class GroupCloudWidgetComponent extends WidgetComponent implements OnInit, OnDestroy { private onDestroy$ = new Subject(); @@ -62,13 +62,12 @@ export class GroupCloudWidgetComponent extends WidgetComponent implements OnInit this.title = this.field.placeholder; this.preSelectGroup = this.field.value ? this.field.value : []; } + // eslint-disable-next-line @typescript-eslint/no-unused-expressions this.search = new FormControl({value: '', disabled: this.field.readOnly}, []), this.search.statusChanges .pipe( - filter((value: string) => { - return value === 'INVALID'; - }), + filter((value: string) => value === 'INVALID'), takeUntil(this.onDestroy$) ) .subscribe(() => { @@ -78,9 +77,7 @@ export class GroupCloudWidgetComponent extends WidgetComponent implements OnInit this.search.statusChanges .pipe( - filter((value: string) => { - return value === 'VALID'; - }), + filter((value: string) => value === 'VALID'), takeUntil(this.onDestroy$) ) .subscribe(() => { diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.ts index 25e171f70f..af2a0260d2 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.ts @@ -15,14 +15,14 @@ * limitations under the License. */ -import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { WidgetComponent, IdentityUserModel, FormService, IdentityUserService } from '@alfresco/adf-core'; import { FormControl } from '@angular/forms'; import { filter, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { ComponentSelectionMode } from '../../../../types'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'people-cloud-widget', @@ -40,7 +40,7 @@ import { ComponentSelectionMode } from '../../../../types'; }, encapsulation: ViewEncapsulation.None }) -export class PeopleCloudWidgetComponent extends WidgetComponent implements OnInit { +export class PeopleCloudWidgetComponent extends WidgetComponent implements OnInit, OnDestroy { private onDestroy$ = new Subject(); @@ -63,13 +63,12 @@ export class PeopleCloudWidgetComponent extends WidgetComponent implements OnIni this.title = this.field.placeholder; this.preSelectUsers = this.field.value ? this.field.value : []; } - this.search = new FormControl({value: '', disabled: this.field.readOnly}, []), + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + this.search = new FormControl({value: '', disabled: this.field.readOnly}, []), this.search.statusChanges .pipe( - filter((value: string) => { - return value === 'INVALID'; - }), + filter((value: string) => value === 'INVALID'), takeUntil(this.onDestroy$) ) .subscribe(() => { @@ -79,9 +78,7 @@ export class PeopleCloudWidgetComponent extends WidgetComponent implements OnIni this.search.statusChanges .pipe( - filter((value: string) => { - return value === 'VALID'; - }), + filter((value: string) => value === 'VALID'), takeUntil(this.onDestroy$) ) .subscribe(() => { diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.ts b/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.ts index e8c612668a..26ab45d9ea 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.ts @@ -20,7 +20,7 @@ import { NodesApiService } from '@alfresco/adf-core'; import { Node } from '@alfresco/js-api'; import { PresetConfig } from '@alfresco/adf-content-services'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'adf-properties-viewer-wrapper', diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.ts index fd7509a061..c4adef0659 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.ts @@ -19,7 +19,7 @@ import { Component, EventEmitter, Output, ViewEncapsulation } from '@angular/cor import { FormService, WidgetComponent } from '@alfresco/adf-core'; import { Node } from '@alfresco/js-api'; -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ @Component({ selector: 'adf-properties-viewer-widget', diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.ts index 6c5e812651..d49e104e13 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.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 { WidgetComponent, FormService, LogService, FormFieldOption } from '@alfresco/adf-core'; diff --git a/lib/process-services-cloud/src/lib/form/mocks/form-cloud.service.mock.ts b/lib/process-services-cloud/src/lib/form/mocks/form-cloud.service.mock.ts index 4a7251ee70..15d6583177 100644 --- a/lib/process-services-cloud/src/lib/form/mocks/form-cloud.service.mock.ts +++ b/lib/process-services-cloud/src/lib/form/mocks/form-cloud.service.mock.ts @@ -97,7 +97,7 @@ export class FormCloudServiceMock implements FormCloudServiceInterface { throw new Error('Method not implemented.'); } - getRestWidgetData(_formName: string, _widgetId: string, _body: Map): Observable { + getRestWidgetData(_formName: string, _widgetId: string, _body: Map): Observable { throw new Error('Method not implemented.'); } } diff --git a/lib/process-services-cloud/src/lib/form/services/form-cloud.service.interface.ts b/lib/process-services-cloud/src/lib/form/services/form-cloud.service.interface.ts index 2e50df85fc..cedae293ba 100644 --- a/lib/process-services-cloud/src/lib/form/services/form-cloud.service.interface.ts +++ b/lib/process-services-cloud/src/lib/form/services/form-cloud.service.interface.ts @@ -34,5 +34,5 @@ export interface FormCloudServiceInterface { getTaskVariables(appName: string, taskId: string): Observable; getForm(appName: string, formKey: string, version?: number): Observable; parseForm(json: any, data?: TaskVariableCloud[], readOnly?: boolean): FormModel; - getRestWidgetData(formName: string, widgetId: string, body: Map): Observable; + getRestWidgetData(formName: string, widgetId: string, body: Map): Observable; } diff --git a/lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts b/lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts index 8a97465f95..70e46baa3f 100644 --- a/lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts @@ -318,8 +318,8 @@ export class GroupCloudComponent implements OnInit, OnChanges, OnDestroy { filterGroupsByRoles(group: IdentityGroupModel): Observable { return this.identityGroupService.checkGroupHasRole(group.id, this.roles).pipe( map((hasRole: boolean) => ({ hasRole: hasRole, group: group })), - filter((filteredGroup: { hasRole: boolean, group: IdentityGroupModel }) => filteredGroup.hasRole), - map((filteredGroup: { hasRole: boolean, group: IdentityGroupModel }) => filteredGroup.group)); + filter((filteredGroup: { hasRole: boolean; group: IdentityGroupModel }) => filteredGroup.hasRole), + map((filteredGroup: { hasRole: boolean; group: IdentityGroupModel }) => filteredGroup.group)); } onSelect(group: IdentityGroupModel): void { diff --git a/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts b/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts index f3feec5197..7a1ceded8c 100644 --- a/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts @@ -265,8 +265,8 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy { filterUsersByRoles(user: IdentityUserModel): Observable { return this.identityUserService.checkUserHasRole(user.id, this.roles).pipe( map((hasRole: boolean) => ({ hasRole: hasRole, user: user })), - filter((filteredUser: { hasRole: boolean, user: IdentityUserModel }) => filteredUser.hasRole), - map((filteredUser: { hasRole: boolean, user: IdentityUserModel }) => filteredUser.user)); + filter((filteredUser: { hasRole: boolean; user: IdentityUserModel }) => filteredUser.hasRole), + map((filteredUser: { hasRole: boolean; user: IdentityUserModel }) => filteredUser.user)); } private isUserAlreadySelected(searchUser: IdentityUserModel): boolean { diff --git a/lib/process-services-cloud/src/lib/process/directives/cancel-process.directive.ts b/lib/process-services-cloud/src/lib/process/directives/cancel-process.directive.ts index 0f74aaa357..936da510be 100644 --- a/lib/process-services-cloud/src/lib/process/directives/cancel-process.directive.ts +++ b/lib/process-services-cloud/src/lib/process/directives/cancel-process.directive.ts @@ -22,7 +22,7 @@ import { Subject } from 'rxjs'; import { ProcessInstanceCloud } from '../start-process/models/process-instance-cloud.model'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-cloud-cancel-process]' }) export class CancelProcessDirective implements OnInit, OnDestroy { diff --git a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts index 21a7b011ce..145ff1e605 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts @@ -98,10 +98,6 @@ export class ProcessFilterCloudModel { this._completedFrom = completedFrom; } - set completedTo(completedTo: string) { - this._completedTo = completedTo; - } - get completedFrom() { if (this.isDateRangeType(this.completedDateType)) { return this._completedFrom; @@ -109,6 +105,10 @@ export class ProcessFilterCloudModel { return this.getStartDate(this.completedDateType); } + set completedTo(completedTo: string) { + this._completedTo = completedTo; + } + get completedTo() { if (this.isDateRangeType(this.completedDateType)) { return this._completedTo; @@ -120,10 +120,6 @@ export class ProcessFilterCloudModel { this._startFrom = startFrom; } - set startTo(startTo: string) { - this._startTo = startTo; - } - get startFrom() { if (this.isDateRangeType(this.startedDateType)) { return this._startFrom; @@ -131,6 +127,10 @@ export class ProcessFilterCloudModel { return this.getStartDate(this.startedDateType); } + set startTo(startTo: string) { + this._startTo = startTo; + } + get startTo() { if (this.isDateRangeType(this.startedDateType)) { return this._startTo; @@ -142,10 +142,6 @@ export class ProcessFilterCloudModel { this._suspendedFrom = suspendedFrom; } - set suspendedTo(suspendedTo: string) { - this._suspendedTo = suspendedTo; - } - get suspendedFrom(): string { if (this.isDateRangeType(this.suspendedDateType)) { return this._suspendedFrom; @@ -153,6 +149,10 @@ export class ProcessFilterCloudModel { return this.getStartDate(this.suspendedDateType); } + set suspendedTo(suspendedTo: string) { + this._suspendedTo = suspendedTo; + } + get suspendedTo(): string { if (this.isDateRangeType(this.suspendedDateType)) { return this._suspendedTo; @@ -182,7 +182,7 @@ export interface ProcessFilterAction { export interface ProcessFilterOptions { label?: string; - value?: string | object; + value?: string | any; } export interface ProcessFilterProperties { @@ -190,7 +190,7 @@ export interface ProcessFilterProperties { type?: string; value?: any; key?: string; - attributes?: { [key: string]: string; }; + attributes?: { [key: string]: string }; options?: ProcessFilterOptions[]; dateFilterOptions?: DateCloudFilterType[]; selectionMode?: ComponentSelectionMode; @@ -198,6 +198,6 @@ export interface ProcessFilterProperties { export interface ProcessSortFilterProperty { label: string; - value: string | object; + value: string | any; key: string; } diff --git a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts index 3eb06273f1..a49eae27e7 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts @@ -37,7 +37,7 @@ export class ProcessFilterCloudService { this.filters$ = this.filtersSubject.asObservable(); } - readQueryParams(obj: Object): ProcessFilterCloudModel { + readQueryParams(obj: any): ProcessFilterCloudModel { const model = Object.assign({}, obj) as ProcessFilterCloudModel; if (obj.hasOwnProperty('appVersion') && obj['appVersion']) { @@ -57,7 +57,7 @@ export class ProcessFilterCloudService { return model; } - writeQueryParams(value: Object, filterProperties: string[], appName?: string, id?: string): Object { + writeQueryParams(value: any, filterProperties: string[], appName?: string, id?: string): any { value = value || {}; const result = { appName: appName || value['appName'], @@ -255,7 +255,7 @@ export class ProcessFilterCloudService { * @returns Boolean value if the preference has process instance filters */ private hasProcessFilters(preferences: any, key: string): boolean { - const filters = preferences.find((filter: any) => { return filter.entry.key === key; }); + const filters = preferences.find((filter: any) => filter.entry.key === key); return (filters && filters.entry) ? JSON.parse(filters.entry.value).length > 0 : false; } @@ -308,7 +308,7 @@ export class ProcessFilterCloudService { * @param key */ private findFiltersByKeyInPreferences(preferences: any, key: string): ProcessFilterCloudModel[] { - const result = preferences.find((filter: any) => { return filter.entry.key === key; }); + const result = preferences.find((filter: any) => filter.entry.key === key); return result && result.entry ? JSON.parse(result.entry.value) : []; } diff --git a/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts b/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts index 65c4261a1a..5620089d97 100644 --- a/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts @@ -67,7 +67,7 @@ export class ProcessListCloudService extends BaseCloudService { return requestNode[property] !== '' && requestNode[property] !== null && requestNode[property] !== undefined; } - protected buildQueryParams(requestNode: ProcessQueryCloudRequestModel): Object { + protected buildQueryParams(requestNode: ProcessQueryCloudRequestModel): any { const queryParam = {}; for (const property in requestNode) { diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts index 79b9c22d03..0b8212196d 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts @@ -688,7 +688,7 @@ describe('StartProcessCloudComponent', () => { }); it('should call service to start process with the variables setted', async () => { - const inputProcessVariable: Map[] = []; + const inputProcessVariable: Map[] = []; inputProcessVariable['name'] = { value: 'Josh' }; component.variables = inputProcessVariable; diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts index 82551841fd..c948fc99a0 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts @@ -64,7 +64,7 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy /** Variables to attach to the payload. */ @Input() - variables: {}; + variables: any; /** Parameter to pass form field values in the start form if one is associated. */ @Input() diff --git a/lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts b/lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts index 828c696b6a..d62a496d91 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts @@ -19,7 +19,7 @@ export class ProcessPayloadCloud { processDefinitionKey: string; name: string; businessKey: string; - variables: {}; + variables: any; payloadType: string = 'StartProcessPayload'; constructor(obj?: any) { diff --git a/lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts b/lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts index 807a7e7a04..e8fe429182 100644 --- a/lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts +++ b/lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts @@ -45,7 +45,7 @@ export interface FormDefinition { tabs: FormTab[]; fields: Container[] | HeaderRepresentation[]; outcomes: FormOutcome[]; - metadata: {}; + metadata: any; variables: any[]; } @@ -56,7 +56,7 @@ export interface Container { name: string; numberOfColumns: number; fields: { - [key: string]: FormFieldRepresentation[] + [key: string]: FormFieldRepresentation[]; }; } @@ -82,7 +82,7 @@ export interface RestField extends FormField { export interface HeaderRepresentation extends Container { numberOfColumns: number; params: { - [key: string]: any + [key: string]: any; }; visibilityCondition: VisibilityCondition; } @@ -123,7 +123,7 @@ export interface FormField { readOnly?: boolean; colspan: number; params: { - [anyKey: string]: any + [anyKey: string]: any; }; visibilityCondition: null | VisibilityCondition; } @@ -213,6 +213,7 @@ export interface PeopleField extends FormField { export enum FormFieldType { text = 'text', multiline = 'multi-line-text', + // eslint-disable-next-line id-blacklist number = 'integer', checkbox = 'boolean', date = 'date', diff --git a/lib/process-services-cloud/src/lib/task/directives/claim-task-cloud.directive.ts b/lib/process-services-cloud/src/lib/task/directives/claim-task-cloud.directive.ts index 75d5a20941..e85e991568 100644 --- a/lib/process-services-cloud/src/lib/task/directives/claim-task-cloud.directive.ts +++ b/lib/process-services-cloud/src/lib/task/directives/claim-task-cloud.directive.ts @@ -19,7 +19,7 @@ import { IdentityUserService } from '@alfresco/adf-core'; import { TaskCloudService } from '../services/task-cloud.service'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-cloud-claim-task]' }) export class ClaimTaskCloudDirective implements OnInit { diff --git a/lib/process-services-cloud/src/lib/task/directives/complete-task.directive.ts b/lib/process-services-cloud/src/lib/task/directives/complete-task.directive.ts index a80c3b883c..49304a1391 100644 --- a/lib/process-services-cloud/src/lib/task/directives/complete-task.directive.ts +++ b/lib/process-services-cloud/src/lib/task/directives/complete-task.directive.ts @@ -18,7 +18,7 @@ import { Directive, Input, HostListener, Output, EventEmitter, OnInit } from '@a import { TaskCloudService } from '../services/task-cloud.service'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-cloud-complete-task]' }) export class CompleteTaskDirective implements OnInit { diff --git a/lib/process-services-cloud/src/lib/task/directives/unclaim-task-cloud.directive.ts b/lib/process-services-cloud/src/lib/task/directives/unclaim-task-cloud.directive.ts index 0ce82ea6d9..f624c6f641 100644 --- a/lib/process-services-cloud/src/lib/task/directives/unclaim-task-cloud.directive.ts +++ b/lib/process-services-cloud/src/lib/task/directives/unclaim-task-cloud.directive.ts @@ -18,7 +18,7 @@ import { Directive, Input, HostListener, Output, EventEmitter, OnInit } from '@a import { TaskCloudService } from '../services/task-cloud.service'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-cloud-unclaim-task]' }) export class UnClaimTaskCloudDirective implements OnInit { diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts index 82b7628421..94403a5b3e 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts @@ -20,7 +20,7 @@ import { Observable, Subject } from 'rxjs'; import { FilterParamsModel } from '../models/filter-cloud.model'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class BaseTaskFiltersCloudComponent implements OnDestroy { /** Display filters available to the current user for the application with the specified name. */ @Input() diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts index 97f14efe8b..bfec438517 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts @@ -35,7 +35,7 @@ export interface DropdownOption { } @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnChanges, OnDestroy { public static ACTION_SAVE = 'save'; diff --git a/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts b/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts index 932a5e1ec2..12431a843e 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts @@ -106,10 +106,6 @@ export class TaskFilterCloudModel { this._dueDateFrom = dueDateFrom; } - set dueDateTo(dueDateTo: string) { - this._dueDateTo = dueDateTo; - } - get dueDateFrom() { if (this.isDateRangeType(this.dueDateType)) { return this._dueDateFrom; @@ -117,6 +113,10 @@ export class TaskFilterCloudModel { return this.getStartDate(this.dueDateType); } + set dueDateTo(dueDateTo: string) { + this._dueDateTo = dueDateTo; + } + get dueDateTo() { if (this.isDateRangeType(this.dueDateType)) { return this._dueDateTo; @@ -128,10 +128,6 @@ export class TaskFilterCloudModel { this._completedFrom = completedFrom; } - set completedTo(completedTo: string) { - this._completedTo = completedTo; - } - get completedFrom(): string { if (this.isDateRangeType(this.completedDateType)) { return this._completedFrom; @@ -139,6 +135,10 @@ export class TaskFilterCloudModel { return this.getStartDate(this.completedDateType); } + set completedTo(completedTo: string) { + this._completedTo = completedTo; + } + get completedTo(): string { if (this.isDateRangeType(this.completedDateType)) { return this._completedTo; @@ -150,10 +150,6 @@ export class TaskFilterCloudModel { this._createdFrom = createdFrom; } - set createdTo(createdTo: string) { - this._createdTo = createdTo; - } - get createdFrom() { if (this.isDateRangeType(this.createdDateType)) { return this._createdFrom; @@ -161,6 +157,10 @@ export class TaskFilterCloudModel { return this.getStartDate(this.createdDateType); } + set createdTo(createdTo: string) { + this._createdTo = createdTo; + } + get createdTo() { if (this.isDateRangeType(this.createdDateType)) { return this._createdTo; @@ -237,7 +237,7 @@ export interface TaskFilterProperties { type?: string; value?: any; key?: string; - attributes?: { [key: string]: string; }; + attributes?: { [key: string]: string }; options?: FilterOptions[]; dateFilterOptions?: DateCloudFilterType[]; selectionMode?: ComponentSelectionMode; diff --git a/lib/process-services-cloud/src/lib/task/task-filters/services/service-task-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-filters/services/service-task-filter-cloud.service.ts index 2b8ba7f968..a2dbca818e 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/services/service-task-filter-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/services/service-task-filter-cloud.service.ts @@ -77,7 +77,7 @@ export class ServiceTaskFilterCloudService { * @returns Boolean value if the preference has task filters */ private hasTaskFilters(preferences: any, key: string): boolean { - const filters = preferences.find((filter: any) => { return filter.entry.key === key; }); + const filters = preferences.find((filter: any) => filter.entry.key === key); return (filters && filters.entry) ? JSON.parse(filters.entry.value).length > 0 : false; } @@ -245,7 +245,7 @@ export class ServiceTaskFilterCloudService { * @returns Array of TaskFilterCloudModel */ private findFiltersByKeyInPreferences(preferences: any, key: string): ServiceTaskFilterCloudModel[] { - const result = preferences.find((filter: any) => { return filter.entry.key === key; }); + const result = preferences.find((filter: any) => filter.entry.key === key); return result && result.entry ? JSON.parse(result.entry.value) : []; } diff --git a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts index da3530d171..f96ccc0836 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts @@ -100,7 +100,7 @@ export class TaskFilterCloudService extends BaseCloudService { * @returns Boolean value if the preference has task filters */ private hasTaskFilters(preferences: any, key: string): boolean { - const filters = preferences.find((filter: any) => { return filter.entry.key === key; }); + const filters = preferences.find((filter: any) => filter.entry.key === key); return (filters && filters.entry) ? JSON.parse(filters.entry.value).length > 0 : false; } @@ -290,7 +290,7 @@ export class TaskFilterCloudService extends BaseCloudService { * @returns Array of TaskFilterCloudModel */ private findFiltersByKeyInPreferences(preferences: any, key: string): TaskFilterCloudModel[] { - const result = preferences.find((filter: any) => { return filter.entry.key === key; }); + const result = preferences.find((filter: any) => filter.entry.key === key); return result && result.entry ? JSON.parse(result.entry.value) : []; } diff --git a/lib/process-services-cloud/src/lib/task/task-list/components/base-task-list-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-list/components/base-task-list-cloud.component.ts index f3ebd83db2..db1d8b08a0 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/components/base-task-list-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/components/base-task-list-cloud.component.ts @@ -30,7 +30,7 @@ import { takeUntil } from 'rxjs/operators'; import { TaskCloudService } from '../../services/task-cloud.service'; @Directive() -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class BaseTaskListCloudComponent extends DataTableSchema implements OnChanges, AfterContentInit, PaginatedComponent, OnDestroy, OnInit { @ContentChild(CustomEmptyContentTemplateDirective) diff --git a/lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.spec.ts index c181c2bc57..696710d0d8 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.spec.ts @@ -469,7 +469,7 @@ describe('TaskListCloudComponent', () => { }); // TODO still not working because of the Loading Spinner - // tslint:disable-next-line: ban + // eslint-disable-next-line xit('should render the custom template', (done) => { fixtureEmpty.detectChanges(); fixtureEmpty.whenStable().then(() => { @@ -534,7 +534,7 @@ describe('TaskListCloudComponent', () => { }); // TODO: highly unstable test - // tslint:disable-next-line:ban + // eslint-disable-next-line xit('should show tooltip if config copyContent flag is true', fakeAsync(() => { taskSpy.and.returnValue(of(fakeGlobalTask)); const appName = new SimpleChange(null, 'FAKE-APP-NAME', true); @@ -556,7 +556,7 @@ describe('TaskListCloudComponent', () => { })); // TODO: highly unstable test - // tslint:disable-next-line:ban + // eslint-disable-next-line xit('should replace priority values', (done) => { taskSpy.and.returnValue(of(fakeGlobalTask)); component.presetColumn = 'fakeCustomSchema'; diff --git a/lib/process-services-cloud/src/lib/task/task-list/services/service-task-list-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-list/services/service-task-list-cloud.service.ts index ee5161a705..a6d1698956 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/services/service-task-list-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/services/service-task-list-cloud.service.ts @@ -34,6 +34,7 @@ export class ServiceTaskListCloudService extends BaseCloudService { /** * Finds a task using an object with optional query properties. + * * @param requestNode Query object * @returns Task information */ @@ -54,6 +55,7 @@ export class ServiceTaskListCloudService extends BaseCloudService { /** * Finds a service task integration context using an object with optional query properties. + * * @param appName string * @param serviceTaskId string * @returns Service Task Integration Context information @@ -70,8 +72,8 @@ export class ServiceTaskListCloudService extends BaseCloudService { } } - protected buildQueryParams(requestNode: ServiceTaskQueryCloudRequestModel): Object { - const queryParam: Object = {}; + protected buildQueryParams(requestNode: ServiceTaskQueryCloudRequestModel): any { + const queryParam: any = {}; for (const property in requestNode) { if (requestNode.hasOwnProperty(property) && !this.isExcludedField(property) && diff --git a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts index 6b92e3940f..9da54ac758 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts @@ -35,6 +35,7 @@ export class TaskListCloudService extends BaseCloudService { /** * Finds a task using an object with optional query properties. + * * @param requestNode Query object * @param queryUrl Query url * @returns Task information @@ -62,8 +63,8 @@ export class TaskListCloudService extends BaseCloudService { } } - protected buildQueryParams(requestNode: TaskQueryCloudRequestModel): Object { - const queryParam: Object = {}; + protected buildQueryParams(requestNode: TaskQueryCloudRequestModel): any { + const queryParam: any = {}; for (const property in requestNode) { if (requestNode.hasOwnProperty(property) && !this.isExcludedField(property) && diff --git a/lib/process-services-cloud/tslint.json b/lib/process-services-cloud/tslint.json deleted file mode 100644 index ba3c56d2fb..0000000000 --- a/lib/process-services-cloud/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "adf-cloud", - "camelCase" - ], - "component-selector": [ - true, - "element", - "adf-cloud", - "kebab-case" - ] - } -} diff --git a/lib/process-services/.eslintrc.json b/lib/process-services/.eslintrc.json new file mode 100644 index 0000000000..45aa374333 --- /dev/null +++ b/lib/process-services/.eslintrc.json @@ -0,0 +1,101 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/process-services/tsconfig.lib.json", + "lib/process-services/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", + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "adf", + "style": "camelCase" + } + ], + "@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" + } + } + ] +} diff --git a/lib/process-services/src/lib/content-widget/attach-file-widget-dialog-component.interface.ts b/lib/process-services/src/lib/content-widget/attach-file-widget-dialog-component.interface.ts index beeda4bb04..110ff61449 100644 --- a/lib/process-services/src/lib/content-widget/attach-file-widget-dialog-component.interface.ts +++ b/lib/process-services/src/lib/content-widget/attach-file-widget-dialog-component.interface.ts @@ -29,5 +29,5 @@ export interface AttachFileWidgetDialogComponentData { showFilesInResult?: boolean; loginOnly?: boolean; accountIdentifier?: string; - registerExternalHost?: Function; + registerExternalHost?: (...args) => void; } diff --git a/lib/process-services/src/lib/content-widget/attach-file-widget-dialog.service.ts b/lib/process-services/src/lib/content-widget/attach-file-widget-dialog.service.ts index ddeb0f871a..813609003c 100644 --- a/lib/process-services/src/lib/content-widget/attach-file-widget-dialog.service.ts +++ b/lib/process-services/src/lib/content-widget/attach-file-widget-dialog.service.ts @@ -27,7 +27,7 @@ import { switchMap } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) -// tslint:disable-next-line: directive-class-suffix +// eslint-disable-next-line @angular-eslint/directive-class-suffix export class AttachFileWidgetDialogService { private externalApis: { [key: string]: AlfrescoApiService } = {}; diff --git a/lib/process-services/src/lib/content-widget/attach-file-widget.component.ts b/lib/process-services/src/lib/content-widget/attach-file-widget.component.ts index 2c95add7d0..7c0054ffdc 100644 --- a/lib/process-services/src/lib/content-widget/attach-file-widget.component.ts +++ b/lib/process-services/src/lib/content-widget/attach-file-widget.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector */ +/* eslint-disable @angular-eslint/component-selector */ import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { diff --git a/lib/process-services/src/lib/content-widget/attach-folder-widget.component.ts b/lib/process-services/src/lib/content-widget/attach-folder-widget.component.ts index 54f4030d1f..8951450171 100644 --- a/lib/process-services/src/lib/content-widget/attach-folder-widget.component.ts +++ b/lib/process-services/src/lib/content-widget/attach-folder-widget.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:component-selector*/ +/* eslint-disable @angular-eslint/component-selector */ import { Component, ViewEncapsulation, OnInit } from '@angular/core'; import { diff --git a/lib/process-services/src/lib/form/form.component.spec.ts b/lib/process-services/src/lib/form/form.component.spec.ts index 65d66d077f..a9994a783a 100644 --- a/lib/process-services/src/lib/form/form.component.spec.ts +++ b/lib/process-services/src/lib/form/form.component.spec.ts @@ -42,6 +42,7 @@ describe('FormComponent', () => { selector: 'adf-custom-widget', template: '
' }) + // eslint-disable-next-line @angular-eslint/component-class-suffix class CustomWidget { typeId = 'CustomWidget'; } diff --git a/lib/process-services/src/lib/form/start-form.component.spec.ts b/lib/process-services/src/lib/form/start-form.component.spec.ts index b2b035b432..0ce71e7e70 100644 --- a/lib/process-services/src/lib/form/start-form.component.spec.ts +++ b/lib/process-services/src/lib/form/start-form.component.spec.ts @@ -60,8 +60,12 @@ describe('StartFormComponent', () => { processDefinitionName: 'my:process' })); - spyOn(translate, 'instant').and.callFake((key) => { return key; }); - spyOn(translate, 'get').and.callFake((key) => { return of(key); }); + spyOn(translate, 'instant').and.callFake((key) => { + return key; + }); + spyOn(translate, 'get').and.callFake((key) => { + return of(key); + }); }); afterEach(() => { diff --git a/lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts b/lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts index 1053884b64..2b654f05eb 100644 --- a/lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts +++ b/lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts @@ -59,7 +59,7 @@ export class PeopleSelectorComponent { this.defaultPlaceholder = this.translationService.instant(DEFAULT_ASSIGNEE_PLACEHOLDER); } - searchUser(searchWord: string): Observable<{} | UserProcessModel[]> { + searchUser(searchWord: string): Observable { return this.peopleProcessService.getWorkflowUsers(undefined, searchWord) .pipe( catchError(this.onSearchUserError.bind(this)) diff --git a/lib/process-services/src/lib/people/directives/people-search-action-label.directive.ts b/lib/process-services/src/lib/people/directives/people-search-action-label.directive.ts index ca56bab36f..fa52efb1cc 100644 --- a/lib/process-services/src/lib/people/directives/people-search-action-label.directive.ts +++ b/lib/process-services/src/lib/people/directives/people-search-action-label.directive.ts @@ -20,6 +20,6 @@ import { Directive } from '@angular/core'; /** * Directive selectors without adf- prefix will be deprecated on 3.0.0 */ -// tslint:disable-next-line: directive-selector +// eslint-disable-next-line @angular-eslint/directive-selector @Directive({ selector: 'adf-people-search-action-label, people-search-action-label' }) export class PeopleSearchActionLabelDirective { } diff --git a/lib/process-services/src/lib/people/directives/people-search-title.directive.ts b/lib/process-services/src/lib/people/directives/people-search-title.directive.ts index 0427d8a10e..41d8c51f8c 100644 --- a/lib/process-services/src/lib/people/directives/people-search-title.directive.ts +++ b/lib/process-services/src/lib/people/directives/people-search-title.directive.ts @@ -20,6 +20,6 @@ import { Directive } from '@angular/core'; /** * Directive selectors without adf- prefix will be deprecated on 3.0.0 */ -// tslint:disable-next-line: directive-selector +// eslint-disable-next-line @angular-eslint/directive-selector @Directive({ selector: '[adf-people-search-title]' }) export class PeopleSearchTitleDirective { } diff --git a/lib/process-services/src/lib/process-list/components/process-audit.directive.ts b/lib/process-services/src/lib/process-list/components/process-audit.directive.ts index b24be736f5..dce67b4108 100644 --- a/lib/process-services/src/lib/process-list/components/process-audit.directive.ts +++ b/lib/process-services/src/lib/process-list/components/process-audit.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { DownloadService } from '@alfresco/adf-core'; import { Directive, EventEmitter, Input, OnChanges, Output } from '@angular/core'; @@ -25,7 +25,7 @@ const JSON_FORMAT: string = 'json'; const PDF_FORMAT: string = 'pdf'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: 'button[adf-process-audit]', host: { 'role': 'button', diff --git a/lib/process-services/src/lib/process-list/services/process.service.spec.ts b/lib/process-services/src/lib/process-list/services/process.service.spec.ts index c4e9d2aac7..6e4513ebda 100644 --- a/lib/process-services/src/lib/process-list/services/process.service.spec.ts +++ b/lib/process-services/src/lib/process-list/services/process.service.spec.ts @@ -94,8 +94,8 @@ describe('ProcessService', () => { }); describe('start process instance', () => { - - const processDefId = '1234', processName = 'My process instance'; + const processDefId = '1234'; + const processName = 'My process instance'; let startNewProcessInstance: jasmine.Spy; beforeEach(() => { diff --git a/lib/process-services/src/lib/task-list/components/no-task-detail-template.directive.ts b/lib/process-services/src/lib/task-list/components/no-task-detail-template.directive.ts index ab4ad02478..c113224617 100644 --- a/lib/process-services/src/lib/task-list/components/no-task-detail-template.directive.ts +++ b/lib/process-services/src/lib/task-list/components/no-task-detail-template.directive.ts @@ -27,7 +27,7 @@ import { TaskDetailsComponent } from './task-details.component'; * 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: 'adf-no-task-details-template, no-task-details-template' }) export class NoTaskDetailsTemplateDirective implements AfterContentInit { diff --git a/lib/process-services/src/lib/task-list/components/task-audit.directive.ts b/lib/process-services/src/lib/task-list/components/task-audit.directive.ts index 927c8c4467..4e5bdbe9db 100644 --- a/lib/process-services/src/lib/task-list/components/task-audit.directive.ts +++ b/lib/process-services/src/lib/task-list/components/task-audit.directive.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -/* tslint:disable:no-input-rename */ +/* eslint-disable @angular-eslint/no-input-rename */ import { ContentService } from '@alfresco/adf-core'; import { Directive, EventEmitter, Input, OnChanges, Output } from '@angular/core'; @@ -25,7 +25,7 @@ const JSON_FORMAT: string = 'json'; const PDF_FORMAT: string = 'pdf'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: 'button[adf-task-audit]', host: { 'role': 'button', diff --git a/lib/process-services/src/lib/task-list/components/task-filters.component.ts b/lib/process-services/src/lib/task-list/components/task-filters.component.ts index 5cd59538b5..60e9dfdf83 100644 --- a/lib/process-services/src/lib/task-list/components/task-filters.component.ts +++ b/lib/process-services/src/lib/task-list/components/task-filters.component.ts @@ -39,19 +39,19 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** Emitted when a filter is being clicked from the UI. */ @Output() - filterClicked: EventEmitter = new EventEmitter(); + filterClicked = new EventEmitter(); /** Emitted when a filter is being selected based on the filterParam input. */ @Output() - filterSelected: EventEmitter = new EventEmitter(); + filterSelected = new EventEmitter(); /** Emitted when the list is loaded. */ @Output() - success: EventEmitter = new EventEmitter(); + success = new EventEmitter(); /** Emitted when an error occurs during loading. */ @Output() - error: EventEmitter = new EventEmitter(); + error = new EventEmitter(); /** Display filters available to the current user for the application with the specified ID. */ @Input() @@ -97,15 +97,21 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Return the task list filtered by appId or by appName + * * @param appId * @param appName */ getFilters(appId?: number, appName?: string) { - appName ? this.getFiltersByAppName(appName) : this.getFiltersByAppId(appId); + if (appName) { + this.getFiltersByAppName(appName); + } else { + this.getFiltersByAppId(appId); + } } /** * Return the filter list filtered by appId + * * @param appId - optional */ getFiltersByAppId(appId?: number) { @@ -128,6 +134,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Return the filter list filtered by appName + * * @param appName */ getFiltersByAppName(appName: string) { @@ -142,6 +149,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Create default filters by appId + * * @param appId */ createFiltersByAppId(appId?: number) { @@ -160,6 +168,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Pass the selected filter as next + * * @param newFilter */ public selectFilter(newFilter: FilterParamsModel) { @@ -188,6 +197,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Select filter with task + * * @param taskId */ public selectFilterWithTask(taskId: string) { @@ -209,7 +219,6 @@ export class TaskFiltersComponent implements OnInit, OnChanges { /** * Select as default task filter the first in the list - * @param filteredFilterList */ public selectDefaultTaskFilter() { if (!this.isFilterListEmpty()) { diff --git a/lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts b/lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts index ff77ebd466..caa00ccdf4 100644 --- a/lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts +++ b/lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts @@ -20,27 +20,28 @@ import { Input, Output, EventEmitter, - HostListener + HostListener, + OnInit } from '@angular/core'; import { TaskListService } from '../../services/tasklist.service'; import { LogService } from '@alfresco/adf-core'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-claim-task]' }) -export class ClaimTaskDirective { +export class ClaimTaskDirective implements OnInit { /** (Required) The id of the task. */ @Input() taskId: string; /** Emitted when the task is claimed. */ @Output() - success: EventEmitter = new EventEmitter(); + success = new EventEmitter(); /** Emitted when the task cannot be claimed. */ @Output() - error: EventEmitter = new EventEmitter(); + error = new EventEmitter(); invalidParams: string[] = []; @@ -69,16 +70,16 @@ export class ClaimTaskDirective { } @HostListener('click') - async onClick() { + onClick() { try { - await this.claimTask(); + this.claimTask(); } catch (error) { this.error.emit(error); } } - private async claimTask() { - await this.taskListService.claimTask(this.taskId).subscribe( + private claimTask() { + this.taskListService.claimTask(this.taskId).subscribe( () => { this.logService.info('Task claimed'); this.success.emit(this.taskId); diff --git a/lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts b/lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts index 757ebc9c89..bda776422c 100644 --- a/lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts +++ b/lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, OnInit, Input, Output, EventEmitter, SimpleChanges, ViewEncapsulation } from '@angular/core'; +import { Component, OnInit, Input, Output, EventEmitter, SimpleChanges, ViewEncapsulation, OnChanges } from '@angular/core'; import { FormModel, ContentLinkModel, @@ -36,7 +36,7 @@ import { Observable } from 'rxjs'; styleUrls: ['./task-form.component.scss'], encapsulation: ViewEncapsulation.None }) -export class TaskFormComponent implements OnInit { +export class TaskFormComponent implements OnInit, OnChanges { /** (**required**) The id of the task whose details we are asking for. */ @Input() diff --git a/lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts b/lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts index 4fe5089c5d..40ccdde91b 100644 --- a/lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts +++ b/lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts @@ -20,16 +20,17 @@ import { HostListener, Input, Output, - EventEmitter + EventEmitter, + OnInit } from '@angular/core'; import { TaskListService } from '../../services/tasklist.service'; import { LogService } from '@alfresco/adf-core'; @Directive({ - // tslint:disable-next-line: directive-selector + // eslint-disable-next-line @angular-eslint/directive-selector selector: '[adf-unclaim-task]' }) -export class UnclaimTaskDirective { +export class UnclaimTaskDirective implements OnInit { /** (Required) The id of the task. */ @Input() taskId: string; @@ -68,16 +69,16 @@ export class UnclaimTaskDirective { } @HostListener('click') - async onClick() { + onClick() { try { - await this.unclaimTask(); + this.unclaimTask(); } catch (error) { this.error.emit(error); } } - private async unclaimTask() { - await this.taskListService.unclaimTask(this.taskId).subscribe( + private unclaimTask() { + this.taskListService.unclaimTask(this.taskId).subscribe( () => { this.logService.info('Task unclaimed'); this.success.emit(this.taskId); diff --git a/lib/process-services/tslint.json b/lib/process-services/tslint.json deleted file mode 100644 index cf71c45318..0000000000 --- a/lib/process-services/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "adf", - "camelCase" - ], - "component-selector": [ - true, - "element", - "adf", - "kebab-case" - ] - } -} diff --git a/lib/testing/.eslintrc.json b/lib/testing/.eslintrc.json new file mode 100644 index 0000000000..6ceef055a1 --- /dev/null +++ b/lib/testing/.eslintrc.json @@ -0,0 +1,101 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "lib/testing/tsconfig.lib.json", + "lib/testing/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": "lib", + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "lib", + "style": "camelCase" + } + ], + "@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": "error", + "@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" + } + } + ] +} diff --git a/lib/testing/src/lib/protractor/core/actions/identity/group-identity.service.ts b/lib/testing/src/lib/protractor/core/actions/identity/group-identity.service.ts index 02cdf97bca..79e4d6219b 100644 --- a/lib/testing/src/lib/protractor/core/actions/identity/group-identity.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/identity/group-identity.service.ts @@ -62,15 +62,14 @@ export class GroupIdentityService { async getGroupInfoByGroupName(groupName: string): Promise { Logger.log(`Get GroupInfoByGroupName ${groupName}`); - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = `/groups`; const method = 'GET'; - const queryParams = { search: groupName }, postBody = {}; + const queryParams = { search: groupName }; + const postBody = {}; const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); @@ -99,6 +98,7 @@ export class GroupIdentityService { /** * Add client roles. + * * @param groupId ID of the target group * @param clientId ID of the client * @param roleId ID of the clientRole @@ -122,6 +122,7 @@ export class GroupIdentityService { /** * Gets the client ID using the app name. + * * @param applicationName Name of the app * @returns client ID string */ diff --git a/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts b/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts index 59cf79455a..68c4f96e19 100644 --- a/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts @@ -59,7 +59,8 @@ export class IdentityService { const path = '/users'; const method = 'POST'; - const queryParams = {}, postBody = { + const queryParams = {}; + const postBody = { username: user.username, firstName: user.firstName, lastName: user.lastName, @@ -76,7 +77,8 @@ export class IdentityService { async deleteUser(userId: string): Promise { const path = `/users/${userId}`; const method = 'DELETE'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performIdentityOperation(path, method, queryParams, postBody); } @@ -93,8 +95,8 @@ export class IdentityService { async resetPassword(id: string, password: string): Promise { const path = `/users/${id}/reset-password`; const method = 'PUT'; - const queryParams = {}, - postBody = { type: 'password', value: password, temporary: false }; + const queryParams = {}; + const postBody = { type: 'password', value: password, temporary: false }; return this.api.performIdentityOperation(path, method, queryParams, postBody); } @@ -106,7 +108,7 @@ export class IdentityService { const path = `/users/${userId}/groups/${groupId}`; const method = 'PUT'; const queryParams = {}; - const postBody = { realm: 'alfresco', userId: userId, groupId: groupId }; + const postBody = { realm: 'alfresco', userId, groupId }; return this.api.performIdentityOperation(path, method, queryParams, postBody); } catch (error) { @@ -125,8 +127,9 @@ export class IdentityService { async deleteClientRole(userId: string, clientId: string, roleId: string, roleName: string): Promise { const path = `/users/${userId}/role-mappings/clients/${clientId}`; - const method = 'DELETE', queryParams = {}, - postBody = [{ + const method = 'DELETE'; + const queryParams = {}; + const postBody = [{ id: roleId, name: roleName, composite: false, @@ -135,5 +138,4 @@ export class IdentityService { }]; return this.api.performIdentityOperation(path, method, queryParams, postBody); } - } diff --git a/lib/testing/src/lib/protractor/core/actions/identity/query.service.ts b/lib/testing/src/lib/protractor/core/actions/identity/query.service.ts index f0c7ba28eb..6e7c7d232e 100644 --- a/lib/testing/src/lib/protractor/core/actions/identity/query.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/identity/query.service.ts @@ -30,16 +30,15 @@ export class QueryService { } async getProcessInstanceTasks(processInstanceId, appName): Promise { - const predicate = (result: any) => { - return result.list && result.list.entries.length > 0; - }; + const predicate = (result: any) => result.list && result.list.entries.length > 0; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId + '/tasks'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { @@ -51,16 +50,15 @@ export class QueryService { } async getProcessInstance(processInstanceId, appName): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { @@ -72,16 +70,15 @@ export class QueryService { } async getProcessInstanceSubProcesses(processInstanceId, appName): Promise { - const predicate = (result: any) => { - return result.list && result.list.entries.length > 0; - }; + const predicate = (result: any) => result.list && result.list.entries.length > 0; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId + '/subprocesses'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { @@ -93,16 +90,15 @@ export class QueryService { } async getProcessInstanceTaskByStatus(processInstanceId, appName, taskName, status: TaskStatus): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId + '/tasks'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody); return data.list && data.list.entries.length && data.list.entries.find(task => task.entry.name === taskName && task.entry.status === status); @@ -115,16 +111,15 @@ export class QueryService { } async getTaskByStatus(taskName, appName, status: TaskStatus, standalone = false): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = `/${appName}/query/v1/tasks?standalone=${standalone}&status=${status}&maxItems=1000&skipCount=0&sort=createdDate`; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody); for (let i = 0; i < data.list.entries.length; i++) { @@ -142,16 +137,15 @@ export class QueryService { } async getTaskByName(taskName, processInstanceId, appName): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId + '/tasks'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody); for (let i = 0; i < data.list.entries.length; i++) { @@ -169,11 +163,11 @@ export class QueryService { } async getTask(taskName: string, processInstanceId: string, appName: string, status: string, retryCount = 15): Promise { - const path = '/' + appName + '/query/v1/process-instances/' + processInstanceId + '/tasks'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody); for (let i = 0; i < data.list.entries.length; i++) { @@ -192,9 +186,7 @@ export class QueryService { } async getTaskByNameAndStatus(taskName, processInstanceId, appName, status: TaskStatus): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { @@ -208,15 +200,14 @@ export class QueryService { } async getProcessInstanceId(processName: string, appName: string): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { const path = '/' + appName + '/query/v1/process-instances'; const method = 'GET'; - const queryParams = { name: processName }, postBody = {}; + const queryParams = { name: processName }; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody); return data.list.entries && data.list.entries.length > 0 ? data.list.entries[0].entry.id : null; } catch (error) { @@ -228,9 +219,7 @@ export class QueryService { } async getProcessInstances(processName: string, appName: string, status?: TaskStatus): Promise { - const predicate = (result: any) => { - return !!result; - }; + const predicate = (result: any) => !!result; const apiCall = async () => { try { @@ -238,7 +227,7 @@ export class QueryService { const method = 'GET'; let queryParams; if (status) { - queryParams = { name: processName, status: status }; + queryParams = { name: processName, status }; } else { queryParams = { name: processName }; } diff --git a/lib/testing/src/lib/protractor/core/actions/identity/roles.service.ts b/lib/testing/src/lib/protractor/core/actions/identity/roles.service.ts index 8920cd2459..0aea15d6ab 100644 --- a/lib/testing/src/lib/protractor/core/actions/identity/roles.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/identity/roles.service.ts @@ -39,7 +39,8 @@ export class RolesService { async deleteRole(roleId: string): Promise { const path = `/roles-by-id/${roleId}`; const method = 'DELETE'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performIdentityOperation(path, method, queryParams, postBody); } @@ -47,7 +48,8 @@ export class RolesService { async getRoleIdByRoleName(roleName: string): Promise { const path = `/roles`; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); for (const key in data) { diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/container-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/container-widget.page.ts index 12ed2bb4fa..2b104543ff 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/container-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/container-widget.page.ts @@ -22,7 +22,7 @@ export class ContainerWidgetPage { formFields = new FormFields(); - fileLocator: Locator = by.css("div [class*='upload-widget__content-text']"); + fileLocator: Locator = by.css(`div [class*='upload-widget__content-text']`); getFieldText(fieldId: string): Promise { return this.formFields.getFieldText(fieldId, this.fileLocator); diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/display-value-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/display-value-widget.page.ts index 1395f53a5e..3d05e99983 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/display-value-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/display-value-widget.page.ts @@ -23,7 +23,7 @@ import { EditJsonDialog } from '../../../dialog/public-api'; export class DisplayValueWidgetPage { formFields: FormFields = new FormFields(); - labelLocator: Locator = by.css("label[class*='adf-label']"); + labelLocator: Locator = by.css(`label[class*='adf-label']`); inputLocator: Locator = by.css('input'); editJsonDialog = new EditJsonDialog(); @@ -61,7 +61,7 @@ export class DisplayValueWidgetPage { } async getDisplayJsonValueDialogContent(): Promise { - return JSON.parse(await ( this.editJsonDialog.getDialogContent())); + return JSON.parse(await this.editJsonDialog.getDialogContent()); } async closeDisplayJsonValuedDialog() { diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/document-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/document-widget.page.ts index a862190138..376f2deb72 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/document-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/document-widget.page.ts @@ -21,7 +21,7 @@ import { by, Locator } from 'protractor'; export class DocumentWidgetPage { formFields: FormFields = new FormFields(); - fileLocator: Locator = by.css("div [class*='upload-widget__content-text']"); + fileLocator: Locator = by.css(`div [class*='upload-widget__content-text']`); getFieldText(fieldId): Promise { return this.formFields.getFieldText(fieldId, this.fileLocator); diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/multiline-text-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/multiline-text-widget.page.ts index 02b591cec9..88f78f664b 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/multiline-text-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/multiline-text-widget.page.ts @@ -23,7 +23,7 @@ export class MultilineTextWidgetPage { formFields: FormFields = new FormFields(); valueLocator: Locator = by.css('textarea'); - labelLocator: Locator = by.css("label[class*='adf-label']"); + labelLocator: Locator = by.css(`label[class*='adf-label']`); getFieldValue(fieldId): Promise { return this.formFields.getFieldValue(fieldId, this.valueLocator); diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/text-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/text-widget.page.ts index 3881939e2a..1f228b1ebb 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/text-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/text-widget.page.ts @@ -22,7 +22,7 @@ export class TextWidgetPage { formFields: FormFields = new FormFields(); - labelLocator: Locator = by.css("label[class*='adf-label']"); + labelLocator: Locator = by.css(`label[class*='adf-label']`); getFieldLabel(fieldId): Promise { return this.formFields.getFieldLabel(fieldId, this.labelLocator); diff --git a/lib/testing/src/lib/protractor/core/pages/material/tabs.page.ts b/lib/testing/src/lib/protractor/core/pages/material/tabs.page.ts index 2b304bb54f..2367dbc55c 100644 --- a/lib/testing/src/lib/protractor/core/pages/material/tabs.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/material/tabs.page.ts @@ -21,15 +21,15 @@ import { BrowserVisibility } from '../../utils/browser-visibility'; export class TabsPage { - tabs = $$("div[id*='mat-tab-label']"); + tabs = $$(`div[id*='mat-tab-label']`); async clickTabByTitle(tabTitle): Promise { - const tab = element(by.cssContainingText("div[id*='mat-tab-label']", tabTitle)); + const tab = element(by.cssContainingText(`div[id*='mat-tab-label']`, tabTitle)); await BrowserActions.click(tab); } async checkTabIsSelectedByTitle(tabTitle): Promise { - const tab = element(by.cssContainingText("div[id*='mat-tab-label']", tabTitle)); + const tab = element(by.cssContainingText(`div[id*='mat-tab-label']`, tabTitle)); const result = await BrowserActions.getAttribute(tab, 'aria-selected'); await expect(result).toBe('true'); } diff --git a/lib/testing/src/lib/protractor/core/utils/date-util.ts b/lib/testing/src/lib/protractor/core/utils/date-util.ts index 602e8c7906..d8e82f61ea 100644 --- a/lib/testing/src/lib/protractor/core/utils/date-util.ts +++ b/lib/testing/src/lib/protractor/core/utils/date-util.ts @@ -19,7 +19,7 @@ import moment from 'moment-es6'; export class DateUtil { - static formatDate(dateFormat: string, date: Date = new Date, days: number | string = 0): string { + static formatDate(dateFormat: string, date: Date = new Date(), days: number | string = 0): string { return moment(date).add(days, 'days').format(dateFormat); } diff --git a/lib/testing/src/lib/protractor/core/utils/logger.ts b/lib/testing/src/lib/protractor/core/utils/logger.ts index b24f7d5ad7..9180781868 100644 --- a/lib/testing/src/lib/protractor/core/utils/logger.ts +++ b/lib/testing/src/lib/protractor/core/utils/logger.ts @@ -20,5 +20,5 @@ import { browser } from 'protractor'; // This was previously a static class, that is why we need this constant starting with uppercase // Otherwise, feel free to update everywhere in the codebase, where we were using it :) -/* tslint:disable:variable-name */ +/* eslint-disable @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match */ export const Logger = new GenericLogger(browser?.params?.testConfig?.appConfig?.log); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/actions/form-cloud.service.ts b/lib/testing/src/lib/protractor/process-services-cloud/actions/form-cloud.service.ts index ee2142eac7..66039f6ca2 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/actions/form-cloud.service.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/actions/form-cloud.service.ts @@ -31,10 +31,11 @@ export class FormCloudService { const path = '/' + appName + '/form/v1/forms/' + formId + '/submit'; const method = 'POST'; - const queryParams = {}, postBody = { - 'values': values, - 'taskId': taskId, - 'processInstanceId': processInstanceId + const queryParams = {}; + const postBody = { + values, + taskId, + processInstanceId }; return this.api.performBpmOperation(path, method, queryParams, postBody); @@ -50,7 +51,8 @@ export class FormCloudService { const path = '/' + appName + '/form/v1/forms'; const method = 'GET'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); @@ -62,12 +64,8 @@ export class FormCloudService { } async getIdByFormName(appName: string, formName: string): Promise { - const forms = await this.getForms(appName); - - const formEntry = forms.find((currentForm) => { - return currentForm.formRepresentation.name === formName; - }); + const formEntry = forms.find((currentForm) => currentForm.formRepresentation.name === formName); if (formEntry.formRepresentation) { return formEntry.formRepresentation.id; diff --git a/lib/testing/src/lib/protractor/process-services-cloud/actions/message-events.service.ts b/lib/testing/src/lib/protractor/process-services-cloud/actions/message-events.service.ts index 32f632b708..82ed0571c0 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/actions/message-events.service.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/actions/message-events.service.ts @@ -26,7 +26,7 @@ export class MessageEventsService { this.api = api; } - async startMessageEvent(startMessage: string, appName: string, options?: Object): Promise { + async startMessageEvent(startMessage: string, appName: string, options?: any): Promise { try { const path = '/' + appName + '/rb/v1/process-instances/message'; const method = 'POST'; @@ -47,7 +47,7 @@ export class MessageEventsService { } - async receiveMessageEvent(receiveMessage: string, appName: string, options?: Object): Promise { + async receiveMessageEvent(receiveMessage: string, appName: string, options?: any): Promise { try { const path = '/' + appName + '/rb/v1/process-instances/message'; const method = 'PUT'; diff --git a/lib/testing/src/lib/protractor/process-services-cloud/actions/process-instances.service.ts b/lib/testing/src/lib/protractor/process-services-cloud/actions/process-instances.service.ts index 0353eb64a1..84ca6a1b04 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/actions/process-instances.service.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/actions/process-instances.service.ts @@ -31,7 +31,8 @@ export class ProcessInstancesService { const path = '/' + appName + '/rb/v1/process-instances'; const method = 'POST'; - const queryParams = {}, postBody = { + const queryParams = {}; + const postBody = { processDefinitionKey: processDefKey, payloadType: 'StartProcessPayload', ...options @@ -40,7 +41,7 @@ export class ProcessInstancesService { return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console Logger.error('create process-instances Service not working', error.message); } @@ -51,12 +52,13 @@ export class ProcessInstancesService { const path = '/' + appName + '/rb/v1/process-instances/' + processInstanceId + '/suspend'; const method = 'POST'; - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console Logger.error('suspend process-instances Service not working', error.message); } } @@ -65,13 +67,13 @@ export class ProcessInstancesService { try { const path = '/' + appName + '/rb/v1/process-instances/' + processInstanceId; const method = 'DELETE'; - - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console Logger.error('delete process-instances Service not working', error.message); } } @@ -79,15 +81,14 @@ export class ProcessInstancesService { async completeProcessInstance(processInstanceId, appName) { try { const path = '/' + appName + '/rb/v1/process-instances/' + processInstanceId + '/complete'; - const method = 'POST'; - - const queryParams = {}, postBody = {}; + const queryParams = {}; + const postBody = {}; return this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console Logger.error('complete process-instances Service not working', error.message); } } diff --git a/lib/testing/src/lib/protractor/process-services-cloud/actions/project.ts b/lib/testing/src/lib/protractor/process-services-cloud/actions/project.ts index 3779c4db02..17e47abd43 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/actions/project.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/actions/project.ts @@ -122,12 +122,9 @@ export class Project { }); } - private async retrySearchProject(modelId: string): Promise<{}> { + private async retrySearchProject(modelId: string): Promise { const predicate = (result: ResultSetPaging) => { - const foundModel = result.list.entries.find(model => { - return model.entry.id === modelId; - }); - + const foundModel = result.list.entries.find(model => model.entry.id === modelId); return !!foundModel; }; const apiCall = () => this.searchProjects(); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/actions/tasks.service.ts b/lib/testing/src/lib/protractor/process-services-cloud/actions/tasks.service.ts index 3f3f1fd3d5..6ef96de8ca 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/actions/tasks.service.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/actions/tasks.service.ts @@ -26,11 +26,12 @@ export class TasksService { this.api = api; } - async createStandaloneTask(taskName: string, appName: string, options?: Object): Promise { + async createStandaloneTask(taskName: string, appName: string, options?: any): Promise { const path = '/' + appName + '/rb/v1/tasks'; const method = 'POST'; - const queryParams = {}, postBody = { + const queryParams = {}; + const postBody = { name: taskName, payloadType: 'CreateTaskPayload', ...options @@ -42,7 +43,7 @@ export class TasksService { }); } - async createStandaloneTaskWithForm(taskName: string, appName: string, formKey: string, options?: Object): Promise { + async createStandaloneTaskWithForm(taskName: string, appName: string, formKey: string, options?: any): Promise { const path = '/' + appName + '/rb/v1/tasks'; const method = 'POST'; @@ -50,7 +51,7 @@ export class TasksService { const postBody = { name: taskName, payloadType: 'CreateTaskPayload', - formKey: formKey, + formKey, ...options }; @@ -64,7 +65,8 @@ export class TasksService { const path = '/' + appName + '/rb/v1/tasks/' + taskId + '/complete'; const method = 'POST'; - const queryParams = {}, postBody = { payloadType: 'CompleteTaskPayload' }; + const queryParams = {}; + const postBody = { payloadType: 'CompleteTaskPayload' }; return this.api.performBpmOperation(path, method, queryParams, postBody) .catch((error) => { @@ -122,7 +124,8 @@ export class TasksService { const path = '/' + appName + '/query/v1/tasks'; const method = 'GET'; - const queryParams = { name: taskName }, postBody = {}; + const queryParams = { name: taskName }; + const postBody = {}; const data = await this.api.performBpmOperation(path, method, queryParams, postBody) .catch((error) => { @@ -135,8 +138,8 @@ export class TasksService { const path = '/' + appName + '/rb/v1/tasks'; const method = 'POST'; - const queryParams = {}, - postBody = { name: name, parentTaskId: parentTaskId, payloadType: 'CreateTaskPayload' }; + const queryParams = {}; + const postBody = { name, parentTaskId, payloadType: 'CreateTaskPayload' }; return this.api.performBpmOperation(path, method, queryParams, postBody) .catch((error) => { diff --git a/lib/testing/src/lib/protractor/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts b/lib/testing/src/lib/protractor/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts index fc1ed82532..7b4cc93c41 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts @@ -108,7 +108,7 @@ export class EditProcessFilterCloudComponentPage { } getStateFilterDropDownValue(): Promise { - return BrowserActions.getText($("mat-form-field[data-automation-id='status'] span")); + return BrowserActions.getText($(`mat-form-field[data-automation-id='status'] span`)); } async setSortFilterDropDown(option) { @@ -117,7 +117,7 @@ export class EditProcessFilterCloudComponentPage { } async getSortFilterDropDownValue(): Promise { - const sortLocator = $$("mat-form-field[data-automation-id='sort'] span").first(); + const sortLocator = $$(`mat-form-field[data-automation-id='sort'] span`).first(); return BrowserActions.getText(sortLocator); } @@ -127,7 +127,7 @@ export class EditProcessFilterCloudComponentPage { } getOrderFilterDropDownValue(): Promise { - return BrowserActions.getText($("mat-form-field[data-automation-id='order'] span")); + return BrowserActions.getText($(`mat-form-field[data-automation-id='order'] span`)); } async setAppNameDropDown(option: string) { @@ -265,13 +265,27 @@ export class EditProcessFilterCloudComponentPage { async setFilter(props: FilterProps) { await this.openFilter(); - if (props.name) { await this.setProcessName(props.name); } - if (props.status) { await this.setStatusFilterDropDown(props.status); } - if (props.sort) { await this.setSortFilterDropDown(props.sort); } - if (props.order) { await this.setOrderFilterDropDown(props.order); } - if (props.initiator) { await this.setInitiator(props.initiator); } - if (props.processName) { await this.setProcessName(props.processName); } - if (props.suspendedDateRange) { await this.setSuspendedDateRangeDropDown(props.suspendedDateRange); } + if (props.name) { + await this.setProcessName(props.name); + } + if (props.status) { + await this.setStatusFilterDropDown(props.status); + } + if (props.sort) { + await this.setSortFilterDropDown(props.sort); + } + if (props.order) { + await this.setOrderFilterDropDown(props.order); + } + if (props.initiator) { + await this.setInitiator(props.initiator); + } + if (props.processName) { + await this.setProcessName(props.processName); + } + if (props.suspendedDateRange) { + await this.setSuspendedDateRangeDropDown(props.suspendedDateRange); + } await this.closeFilter(); } diff --git a/lib/testing/src/lib/protractor/process-services-cloud/pages/form/widget/attach-file-widget-cloud.page.ts b/lib/testing/src/lib/protractor/process-services-cloud/pages/form/widget/attach-file-widget-cloud.page.ts index a464698b3f..0f453cbef9 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/pages/form/widget/attach-file-widget-cloud.page.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/pages/form/widget/attach-file-widget-cloud.page.ts @@ -29,10 +29,10 @@ export class AttachFileWidgetCloudPage { this.assignWidget(fieldId); } - getFileAttachedLocatorByContainingText = async(text: string): Promise => { + getFileAttachedLocatorByContainingText = async (text: string): Promise => { const filesListLocator = 'div[class="adf-file-properties-table"]'; return this.widget.$(filesListLocator).element(by.cssContainingText('table tbody tr td span ', text)); - } + }; assignWidget(fieldId: string): void { this.widget = $(`adf-form-field div[id='field-${fieldId}-container']`); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/pages/people-cloud-component.page.ts b/lib/testing/src/lib/protractor/process-services-cloud/pages/people-cloud-component.page.ts index 9e1ec89e9c..b0a7fe57bf 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/pages/people-cloud-component.page.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/pages/people-cloud-component.page.ts @@ -27,7 +27,7 @@ export class PeopleCloudComponentPage { assigneeField = $('input[data-automation-id="adf-people-cloud-search-input"]'); selectionReady = $('div[data-automation-id="adf-people-cloud-row"]'); formFields = new FormFields(); - labelLocator: Locator = by.css("label[class*='adf-label']"); + labelLocator: Locator = by.css(`label[class*='adf-label']`); inputLocator: Locator = by.css('input'); assigneeChipList = $('mat-chip-list[data-automation-id="adf-cloud-people-chip-list"]'); noOfUsersDisplayed = $$('mat-option span.adf-people-label-name'); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/pages/process-filters-cloud-component.page.ts b/lib/testing/src/lib/protractor/process-services-cloud/pages/process-filters-cloud-component.page.ts index 25635cf442..0662bcbc0d 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/pages/process-filters-cloud-component.page.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/pages/process-filters-cloud-component.page.ts @@ -27,7 +27,7 @@ const FILTERS = { export class ProcessFiltersCloudComponentPage { - processFilters = $("mat-expansion-panel[data-automation-id='Process Filters']"); + processFilters = $(`mat-expansion-panel[data-automation-id='Process Filters']`); activeFilter = $('.adf-active [data-automation-id="adf-filter-label"]'); processFiltersList = $('adf-cloud-process-filters'); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts b/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts index e846adc10f..735f3f452f 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts @@ -271,6 +271,7 @@ export const ACTIVITI_CLOUD_APPS = { poolForm: { name: 'pool-usertaskform', widgets: { + // eslint-disable-next-line id-blacklist string: 'Text0rfn8p' } }, diff --git a/lib/testing/src/lib/protractor/process-services/actions/integration.service.ts b/lib/testing/src/lib/protractor/process-services/actions/integration.service.ts index 1a668a2a5f..671addf091 100644 --- a/lib/testing/src/lib/protractor/process-services/actions/integration.service.ts +++ b/lib/testing/src/lib/protractor/process-services/actions/integration.service.ts @@ -46,7 +46,7 @@ export class IntegrationService { } } - async authenticateRepository(id: number, body: { username: string, password: string }): Promise { + async authenticateRepository(id: number, body: { username: string; password: string }): Promise { await this.requestApiHelper.post(`activiti-app/app/rest/integration/alfresco/${id}/account`, { bodyParam: body }); } } diff --git a/lib/testing/src/lib/shared/api/api.service.ts b/lib/testing/src/lib/shared/api/api.service.ts index 38341b1a68..1f748c7b46 100644 --- a/lib/testing/src/lib/shared/api/api.service.ts +++ b/lib/testing/src/lib/shared/api/api.service.ts @@ -68,7 +68,8 @@ export class ApiService { async performBpmOperation(path: string, method: string, queryParams: any, postBody: any): Promise { return new Promise((resolve, reject) => { const uri = this.config.appConfig.hostBpm + path; - const pathParams = {}, formParams = {}; + const pathParams = {}; + const formParams = {}; const contentTypes = ['application/json']; const accepts = ['application/json']; @@ -86,9 +87,9 @@ export class ApiService { /** @deprecated */ async performIdentityOperation(path: string, method: string, queryParams: any, postBody: any): Promise { return new Promise((resolve, reject) => { - const uri = this.config.appConfig.oauth2.host.replace('/realms', '/admin/realms') + path; - const pathParams = {}, formParams = {}; + const pathParams = {}; + const formParams = {}; const contentTypes = ['application/json']; const accepts = ['application/json']; @@ -107,7 +108,8 @@ export class ApiService { async performECMOperation(path: string, method: string, queryParams: any, postBody: any): Promise { return new Promise((resolve, reject) => { const uri = this.config.appConfig.hostEcm + path; - const pathParams = {}, formParams = {}; + const pathParams = {}; + const formParams = {}; const contentTypes = ['application/json']; const accepts = ['application/json']; diff --git a/lib/testing/src/lib/shared/utils/logger.ts b/lib/testing/src/lib/shared/utils/logger.ts index 45fb3b7e70..992f61d916 100644 --- a/lib/testing/src/lib/shared/utils/logger.ts +++ b/lib/testing/src/lib/shared/utils/logger.ts @@ -31,7 +31,7 @@ export class LogLevelsEnum extends Number { static SILENT: number = 0; } -export let logLevels: { level: LogLevelsEnum, name: LOG_LEVEL }[] = [ +export let logLevels: { level: LogLevelsEnum; name: LOG_LEVEL }[] = [ { level: LogLevelsEnum.TRACE, name: 'TRACE' }, { level: LogLevelsEnum.DEBUG, name: 'DEBUG' }, { level: LogLevelsEnum.INFO, name: 'INFO' }, @@ -47,7 +47,7 @@ export interface LoggerLike { error(...messages: string[]): void; } -/* tslint:disable:no-console */ +/* eslint-disable no-console */ export class GenericLogger implements LoggerLike { private level: LogLevelsEnum; diff --git a/lib/testing/tslint.json b/lib/testing/tslint.json deleted file mode 100644 index efd3c2f25e..0000000000 --- a/lib/testing/tslint.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../tslint.json", - "rules": { - "no-floating-promises": true, - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -}