diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index d4d6dc69db..7e86cbc222 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -213,15 +213,15 @@ jobs: matrix: unit-tests: - name: content-services - exclude: "insights,core,extensions,process-services,process-services-cloud,eslint-plugin-eslint-angular" + exclude: "insights,core,extensions,process-services,process-services-cloud" - name: core - exclude: "insights,content-services,process-services,process-services-cloud,eslint-plugin-eslint-angular" + exclude: "insights,content-services,process-services,process-services-cloud" - name: insights - exclude: "core,extensions,content-services,process-services-cloud,process-services,eslint-plugin-eslint-angular" + exclude: "core,extensions,content-services,process-services-cloud,process-services" - name: process-services - exclude: "core,extensions,content-services,process-services-cloud,insights,eslint-plugin-eslint-angular" + exclude: "core,extensions,content-services,process-services-cloud,insights" - name: process-cloud - exclude: "insights,core,extensions,content-services,process-services,eslint-plugin-eslint-angular" + exclude: "insights,core,extensions,content-services,process-services" steps: - name: Checkout repository uses: actions/checkout@v3 diff --git a/angular.json b/angular.json index c56e15302d..1a9862e5c0 100644 --- a/angular.json +++ b/angular.json @@ -1020,67 +1020,6 @@ } } }, - "eslint-angular": { - "root": "lib/eslint-angular", - "sourceRoot": "lib/eslint-angular/src", - "projectType": "library", - "prefix": "adf", - "architect": { - "build": { - "builder": "@nrwl/node:webpack", - "options": { - "projectRoot": "lib/eslint-angular", - "outputPath": "dist/libs/eslint-plugin-eslint-angular", - "main": "lib/eslint-angular/index.ts", - "generatePackageJson" : true, - "tsConfig": "lib/eslint-angular/tsconfig.lib.prod.json" - }, - "configurations": { - "production": { - "projectRoot": "lib/eslint-angular", - "outputPath": "dist/libs/eslint-plugin-eslint-angular", - "main": "lib/eslint-angular/index.ts", - "generatePackageJson" : true, - "tsConfig": "lib/eslint-angular/tsconfig.lib.prod.json" - } - }, - "defaultConfiguration": "production" - }, - "lint": { - "builder": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": [ - "lib/eslint-angular/**/*.ts" - ] - } - }, - "bundle": { - "executor": "nx:run-commands", - "options": { - "commands": [ - { - "command": "echo testing bundle created" - } - ] - } - }, - "npm-publish": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "options": { - "cwd": "dist/libs/eslint-plugin-eslint-angular", - "commands": [ - { - "command": "npm publish --tag {args.tag}", - "forwardAllArgs": true - } - ] - } - } - } - }, "cli": { "root": "lib/cli", "sourceRoot": "lib/cli", diff --git a/docs/README.md b/docs/README.md index 3c4834bae2..3010776c6a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -51,7 +51,6 @@ A few other pages of information are also available: - [Process Services Cloud API](#process-services-cloud-api) - [Extensions API](#extensions-api) - [Insights API](#insights-api) -- [ESLint Angular API](#eslint-angular-api) ## User guide @@ -599,19 +598,3 @@ for more information about installing and using the source code. [(Back to Contents)](#contents) - -## ESLint Angular API - -Contains all custom rules used by ESLint. - - - -### Rules - -| Name | Description | Source link | -|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| [Use none component view encapsulation](eslint-angular/rules/use-none-component-view-encapsulation.md) | Enforces using ViewEncapsulation.None for components. | [Source](../lib/eslint-angular/src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation.ts) | - - - -[(Back to Contents)](#contents) diff --git a/docs/eslint-angular/rules/use-none-component-view-encapsulation.md b/docs/eslint-angular/rules/use-none-component-view-encapsulation.md deleted file mode 100644 index 734d274743..0000000000 --- a/docs/eslint-angular/rules/use-none-component-view-encapsulation.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -Title: Use none component view encapsulation -Added: v6.1.0 -Status: Active -Last reviewed: 2023-05-23 ---- - -# [Use none component view encapsulation](../../../lib/eslint-angular/src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation.ts "Defined in use-none-component-view-encapsulation.ts") - -Custom ESLint rule which check if component uses ViewEncapsulation.None. It has been implemented because None encapsulation makes themes styling easier. -It also allows to autofix. - -## Basic Usage -Put this rule in eslintrc.json in rules. - -```json -{ - "rules": { - "@alfresco/eslint-angular/use-none-component-view-encapsulation": "error" - } -} -``` diff --git a/docs/versionIndex.md b/docs/versionIndex.md index 438c1dd121..9594af8a27 100644 --- a/docs/versionIndex.md +++ b/docs/versionIndex.md @@ -46,7 +46,6 @@ backend services have been tested with each released version of ADF. -- [Use none component view encapsulation](eslint-angular/rules/use-none-component-view-encapsulation.md) - [Search Chip Input component](content-services/components/search-chip-input.component.md) - [Search Logical Filter component](content-services/components/search-logical-filter.component.md) diff --git a/lib/eslint-angular/index.ts b/lib/eslint-angular/index.ts deleted file mode 100644 index d5f855bf1a..0000000000 --- a/lib/eslint-angular/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import useNoneEncapsulationRule, { - RULE_NAME as useNoneEncapsulationRuleName -} from './src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation'; - -export = { - rules: { - [useNoneEncapsulationRuleName]: useNoneEncapsulationRule - } -}; diff --git a/lib/eslint-angular/ng-package.json b/lib/eslint-angular/ng-package.json deleted file mode 100644 index 07d539d12a..0000000000 --- a/lib/eslint-angular/ng-package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/libs/eslint-angular", - "lib": { - "entryFile": "src/public-api.ts", - "flatModuleFile": "eslint-plugin-eslint-angular" - } -} diff --git a/lib/eslint-angular/package.json b/lib/eslint-angular/package.json deleted file mode 100644 index a2cf8b21a2..0000000000 --- a/lib/eslint-angular/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@alfresco/eslint-plugin-eslint-angular", - "version": "6.1.0", - "description": "Alfresco ADF eslint angular custom rules", - "main": "main.js", - "author": "Hyland Software, Inc. and its affiliates", - "repository": { - "type": "git", - "url": "https://github.com/Alfresco/alfresco-ng2-components.git" - }, - "bugs": { - "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" - }, - "keywords": [ - "eslint", - "eslint-custom-rules" - ], - "license": "Apache-2.0" -} diff --git a/lib/eslint-angular/src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation.ts b/lib/eslint-angular/src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation.ts deleted file mode 100644 index c6fccc041f..0000000000 --- a/lib/eslint-angular/src/rules/use-none-component-view-encapsulation/use-none-component-view-encapsulation.ts +++ /dev/null @@ -1,123 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ASTUtils, isNotNullOrUndefined, RuleFixes, Selectors } from '@angular-eslint/utils'; -import type { TSESTree } from '@typescript-eslint/utils'; -import { createESLintRule } from '../../utils/create-eslint-rule/create-eslint-rule'; - -export const RULE_NAME = 'use-none-component-view-encapsulation'; - -type MessageIds = 'useNoneComponentViewEncapsulation'| 'suggestAddViewEncapsulationNone'; -type DecoratorForClass = TSESTree.Decorator & { - parent: TSESTree.ClassDeclaration; -}; -type PropertyInClassDecorator = TSESTree.Property & { - parent: TSESTree.CallExpression & { - parent: TSESTree.ObjectExpression & { - parent: TSESTree.Decorator & { - parent: TSESTree.ClassDeclaration; - }; - }; - }; -}; - -const metadataPropertyName = 'encapsulation'; -const viewEncapsulationNone = 'ViewEncapsulation.None'; -const nodeToReport = (node: TSESTree.Node) => { - if (!ASTUtils.isProperty(node)) { - return node; - } - return ASTUtils.isMemberExpression(node.value) ? node.value.property : node.value; -}; - -/** - * Custom ESLint rule which check if component uses ViewEncapsulation.None. It has been implemented because None encapsulation makes themes styling easier. - * It also allows to autofix. - */ -export default createESLintRule({ - name: RULE_NAME, - meta: { - type: 'suggestion', - docs: { - description: `Disallows using other encapsulation than \`${viewEncapsulationNone}\``, - recommended: false - }, - hasSuggestions: true, - schema: [], - messages: { - useNoneComponentViewEncapsulation: `Using encapsulation other than '${viewEncapsulationNone}' makes themes styling harder.`, - suggestAddViewEncapsulationNone: `Add '${viewEncapsulationNone}'` - } - }, - defaultOptions: [], - create(context) { - const encapsulationProperty = Selectors.metadataProperty( - metadataPropertyName - ); - const withoutEncapsulationProperty = - `${Selectors.COMPONENT_CLASS_DECORATOR}:matches([expression.arguments.length=0], [expression.arguments.0.type='ObjectExpression']:not(:has(${encapsulationProperty})))` as const; - const nonNoneViewEncapsulationNoneProperty = - `${Selectors.COMPONENT_CLASS_DECORATOR} > CallExpression > ObjectExpression > ` + - `${encapsulationProperty}:matches([value.type='Identifier'][value.name='undefined'], [value.object.name='ViewEncapsulation'][value.property.name!='None'])`; - const selectors = [ - withoutEncapsulationProperty, - nonNoneViewEncapsulationNoneProperty - ].join(','); - return { - [selectors](node: DecoratorForClass | PropertyInClassDecorator) { - context.report({ - node: nodeToReport(node), - messageId: 'useNoneComponentViewEncapsulation', - suggest: [ - { - messageId: 'suggestAddViewEncapsulationNone', - fix: (fixer) => { - if (ASTUtils.isProperty(node)) { - return [ - RuleFixes.getImportAddFix({ - fixer, - importName: 'ViewEncapsulation', - moduleName: '@angular/core', - node: node.parent.parent.parent.parent - }), - ASTUtils.isMemberExpression(node.value) - ? fixer.replaceText(node.value.property, 'None') - : fixer.replaceText(node.value, viewEncapsulationNone) - ].filter(isNotNullOrUndefined); - } - - return [ - RuleFixes.getImportAddFix({ - fixer, - importName: 'ViewEncapsulation', - moduleName: '@angular/core', - node: node.parent - }), - RuleFixes.getDecoratorPropertyAddFix( - node, - fixer, - `${metadataPropertyName}: ${viewEncapsulationNone}` - ) - ].filter(isNotNullOrUndefined); - } - } - ] - }); - } - }; - } -}); diff --git a/lib/eslint-angular/src/utils/create-eslint-rule/create-eslint-rule.ts b/lib/eslint-angular/src/utils/create-eslint-rule/create-eslint-rule.ts deleted file mode 100644 index dcca68dcde..0000000000 --- a/lib/eslint-angular/src/utils/create-eslint-rule/create-eslint-rule.ts +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ESLintUtils } from '@typescript-eslint/utils'; - -export const createESLintRule = ESLintUtils.RuleCreator((ruleName) => ruleName); diff --git a/lib/eslint-angular/tsconfig.json b/lib/eslint-angular/tsconfig.json deleted file mode 100644 index e92b7325f4..0000000000 --- a/lib/eslint-angular/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2019", - "module": "commonjs", - "sourceMap": false, - "outDir": "dist", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noUnusedLocals": true, - "skipLibCheck": true, - "baseUrl": "src", - "types": [ - "node" - ] - }, - "include": [ - "**/*" - ], - "exclude": [ - "node_modules", - "tests" - ] -} diff --git a/lib/eslint-angular/tsconfig.lib.json b/lib/eslint-angular/tsconfig.lib.json deleted file mode 100644 index 48bbd83c1e..0000000000 --- a/lib/eslint-angular/tsconfig.lib.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declarationMap": true - }, - "exclude": ["src/test.ts", "**/*.spec.ts", "**/*.test.ts"], - "include": ["**/*.ts"] -} diff --git a/lib/eslint-angular/tsconfig.lib.prod.json b/lib/eslint-angular/tsconfig.lib.prod.json deleted file mode 100644 index 2a2faa884c..0000000000 --- a/lib/eslint-angular/tsconfig.lib.prod.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.lib.json", - "compilerOptions": { - "declarationMap": false - }, - "angularCompilerOptions": { - "compilationMode": "partial" - } -} diff --git a/lib/eslint-angular/tsconfig.spec.json b/lib/eslint-angular/tsconfig.spec.json deleted file mode 100644 index 8e8cc9494b..0000000000 --- a/lib/eslint-angular/tsconfig.spec.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc" - }, - "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] -} diff --git a/scripts/github/build/npm-check-bundles.sh b/scripts/github/build/npm-check-bundles.sh index 496de59bfe..b1fc85af46 100755 --- a/scripts/github/build/npm-check-bundles.sh +++ b/scripts/github/build/npm-check-bundles.sh @@ -10,8 +10,7 @@ eval projects=( "adf-core" "adf-extensions" "adf-testing" "adf-process-services" - "adf-process-services-cloud", - "eslint-plugin-eslint-angular" ) + "adf-process-services-cloud" ) show_help() { echo "Usage: npm-check-bundles.sh" diff --git a/scripts/update-version.sh b/scripts/update-version.sh index cea2163328..997b252cbc 100755 --- a/scripts/update-version.sh +++ b/scripts/update-version.sh @@ -17,8 +17,7 @@ eval projects=( "cli" "process-services-cloud" "insights" "testing" - "extensions" - "eslint-angular" ) + "extensions" ) cd `dirname $0`