diff --git a/angular.json b/angular.json index 37fafef6a..e0b14dd72 100644 --- a/angular.json +++ b/angular.json @@ -627,6 +627,18 @@ "projects/aca-content/src/lib/ui/application.scss" ] } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/aca-content/**/*.ts", + "projects/aca-content/**/*.html" + ], + "cache": true, + "cacheLocation": ".eslintcache", + "ignorePath": ".eslintignore" + } } } } diff --git a/package.json b/package.json index 22ced0370..6376c014a 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "build.release": "npm run build -- --configuration=production,release", "test": "ng test", "test:ci": "ng test adf-office-services-ext && ng test content-ce --code-coverage", - "lint": "ng lint && npm run spellcheck && npm run e2e.typecheck", + "lint": "NODE_OPTIONS=--max_old_space_size=4096 ng lint && npm run spellcheck && npm run e2e.typecheck", "update-webdriver": "./scripts/update-webdriver.sh", "e2e.typecheck": "tsc -p ./e2e/tsconfig.e2e.typecheck.json", "e2e": "npm run update-webdriver && protractor $SUITE", diff --git a/projects/aca-content/.eslintrc.json b/projects/aca-content/.eslintrc.json new file mode 100644 index 000000000..11ed2744d --- /dev/null +++ b/projects/aca-content/.eslintrc.json @@ -0,0 +1,121 @@ +{ + "extends": "../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "projects/aca-content/tsconfig.lib.json", + "projects/aca-content/tsconfig.spec.json" + ], + "createDefaultProgram": true + }, + "plugins": [ + "eslint-plugin-rxjs", + "eslint-plugin-unicorn" + ], + "rules": { + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "lib", + "aca", + "app", + "adf" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": [ + "lib", + "aca", + "app", + "adf" + ], + "style": "camelCase" + } + ], + "@angular-eslint/no-host-metadata-property": "off", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-member-accessibility": [ + "off", + { + "accessibility": "explicit" + } + ], + "@typescript-eslint/member-delimiter-style": [ + "off", + { + "multiline": { + "delimiter": "none", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + } + } + ], + "@typescript-eslint/semi": [ + "off", + null + ], + "@typescript-eslint/type-annotation-spacing": "off", + "arrow-parens": [ + "off", + "always" + ], + "brace-style": [ + "off", + "off" + ], + "eol-last": "off", + "id-blacklist": "off", + "id-match": "off", + "linebreak-style": "off", + "max-len": "off", + "new-parens": "off", + "newline-per-chained-call": "off", + "no-duplicate-imports": "error", + "no-extra-semi": "off", + "no-irregular-whitespace": "off", + "no-return-await": "error", + "no-underscore-dangle": "off", + "quote-props": "off", + "rxjs/no-create": "error", + "rxjs/no-subject-unsubscribe": "error", + "rxjs/no-subject-value": "error", + "rxjs/no-unsafe-takeuntil": "error", + "space-before-function-paren": "off", + "space-in-parens": [ + "off", + "never" + ], + "unicorn/filename-case": "error" + } + }, + { + "files": [ + "*.html" + ], + "rules": { + "@angular-eslint/template/no-autofocus": "error", + "@angular-eslint/template/no-negated-async": "off", + "@angular-eslint/template/no-positive-tabindex": "error", + "@angular-eslint/template/eqeqeq": "error" + } + } + ] +}