127 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const prettierConfig = require('./.prettierrc.js');
 | |
| 
 | |
| module.exports = {
 | |
|   root: true,
 | |
|   parserOptions: { ecmaVersion: 2021 },
 | |
|   overrides: [
 | |
|     {
 | |
|       files: ['*.ts'],
 | |
|       parser: '@typescript-eslint/parser',
 | |
|       parserOptions: {
 | |
|         tsconfigRootDir: __dirname,
 | |
|         project: ['tsconfig.json'],
 | |
|         createDefaultProgram: true
 | |
|       },
 | |
|       plugins: ['@typescript-eslint', 'jsdoc', 'import'],
 | |
|       extends: [
 | |
|         'plugin:@angular-eslint/recommended',
 | |
|         'plugin:@angular-eslint/template/process-inline-templates',
 | |
|         'plugin:prettier/recommended'
 | |
|       ],
 | |
|       rules: {
 | |
|         'prettier/prettier': ['error', prettierConfig],
 | |
|         'jsdoc/newline-after-description': 1,
 | |
|         '@angular-eslint/component-class-suffix': [
 | |
|           'error',
 | |
|           {
 | |
|             suffixes: ['Directive', 'Component', 'Base', 'Widget']
 | |
|           }
 | |
|         ],
 | |
|         '@angular-eslint/directive-class-suffix': [
 | |
|           'error',
 | |
|           {
 | |
|             suffixes: ['Directive', 'Component', 'Base', 'Widget']
 | |
|           }
 | |
|         ],
 | |
|         '@angular-eslint/component-selector': [
 | |
|           'off',
 | |
|           {
 | |
|             type: ['element', 'attribute'],
 | |
|             prefix: ['app', 'test'],
 | |
|             style: 'kebab-case'
 | |
|           }
 | |
|         ],
 | |
|         '@angular-eslint/directive-selector': [
 | |
|           'off',
 | |
|           {
 | |
|             type: 'attribute',
 | |
|             prefix: ['app']
 | |
|           }
 | |
|         ],
 | |
|         '@angular-eslint/no-attribute-decorator': 'error',
 | |
|         '@angular-eslint/no-conflicting-lifecycle': 'off',
 | |
|         '@angular-eslint/no-forward-ref': 'off',
 | |
|         '@angular-eslint/no-host-metadata-property': 'off',
 | |
|         '@angular-eslint/no-lifecycle-call': 'off',
 | |
|         '@angular-eslint/no-pipe-impure': 'error',
 | |
|         '@angular-eslint/prefer-output-readonly': 'error',
 | |
|         '@angular-eslint/use-component-selector': 'off',
 | |
|         '@angular-eslint/use-component-view-encapsulation': 'off',
 | |
|         '@angular-eslint/no-input-rename': 'off',
 | |
|         '@angular-eslint/no-output-native': 'off',
 | |
|         '@typescript-eslint/array-type': [
 | |
|           'error',
 | |
|           {
 | |
|             default: 'array-simple'
 | |
|           }
 | |
|         ],
 | |
|         '@typescript-eslint/ban-types': [
 | |
|           'off',
 | |
|           {
 | |
|             types: {
 | |
|               String: {
 | |
|                 message: 'Use string instead.'
 | |
|               },
 | |
|               Number: {
 | |
|                 message: 'Use number instead.'
 | |
|               },
 | |
|               Boolean: {
 | |
|                 message: 'Use boolean instead.'
 | |
|               },
 | |
|               Function: {
 | |
|                 message: 'Use specific callable interface instead.'
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         ],
 | |
|         'import/no-duplicates': 'error',
 | |
|         'import/no-unused-modules': 'error',
 | |
|         'import/no-unassigned-import': 'error',
 | |
|         'import/order': [
 | |
|           'error',
 | |
|           {
 | |
|             alphabetize: { order: 'asc', caseInsensitive: false },
 | |
|             'newlines-between': 'always',
 | |
|             groups: ['external', 'internal', ['parent', 'sibling', 'index']],
 | |
|             pathGroups: [],
 | |
|             pathGroupsExcludedImportTypes: []
 | |
|           }
 | |
|         ],
 | |
|         '@typescript-eslint/no-this-alias': 'error',
 | |
|         '@typescript-eslint/member-ordering': 'off',
 | |
|         'no-irregular-whitespace': 'error',
 | |
|         'no-multiple-empty-lines': 'error',
 | |
|         'no-sparse-arrays': 'error',
 | |
|         'prefer-object-spread': 'error',
 | |
|         'prefer-template': 'error',
 | |
|         'prefer-const': 'off',
 | |
|         'max-len': 'off'
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       files: ['*.html'],
 | |
|       extends: ['plugin:@angular-eslint/template/recommended'],
 | |
|       rules: {}
 | |
|     },
 | |
|     {
 | |
|       files: ['*.html'],
 | |
|       excludedFiles: ['*inline-template-*.component.html'],
 | |
|       extends: ['plugin:prettier/recommended'],
 | |
|       rules: {
 | |
|         'prettier/prettier': ['error', { parser: 'angular' }],
 | |
|         '@angular-eslint/template/eqeqeq': 'off'
 | |
|       }
 | |
|     }
 | |
|   ]
 | |
| };
 |