// @ts-check const eslint = require('@eslint/js'); const { defineConfig } = require('eslint/config'); const tseslint = require('typescript-eslint'); const angular = require('angular-eslint'); module.exports = defineConfig([ { files: ['**/*.ts'], extends: [ eslint.configs.recommended, tseslint.configs.recommended, tseslint.configs.stylistic, angular.configs.tsRecommended, ], processor: angular.processInlineTemplates, languageOptions: { parserOptions: { project: [ './tsconfig.json', './tsconfig.app.json', './tsconfig.spec.json', './tsconfig.e2e.json', ], tsconfigRootDir: __dirname, }, }, rules: { 'no-restricted-globals': [ 'error', { name: 'localStorage', message: 'Use getBrowserStorage() for storage that works outside a browser.', }, ], 'no-restricted-properties': [ 'error', { object: 'window', property: 'localStorage', message: 'Use getBrowserStorage() for storage that works outside a browser.', }, { object: 'globalThis', property: 'localStorage', message: 'Use getBrowserStorage() for storage that works outside a browser.', }, ], '@typescript-eslint/no-deprecated': 'error', '@angular-eslint/directive-selector': [ 'error', { type: 'attribute', prefix: 'app', style: 'camelCase', }, ], '@angular-eslint/component-selector': [ 'error', { type: 'element', prefix: 'app', style: 'kebab-case', }, ], }, }, { files: ['**/services/browser-storage.ts'], rules: { 'no-restricted-properties': 'off', }, }, { files: ['**/*.html'], extends: [angular.configs.templateRecommended, angular.configs.templateAccessibility], rules: {}, }, { files: ['**/*.spec.ts'], rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-empty-function': 'off', }, }, ]);