lint-suite 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/eslint.cjs +623 -45
  2. package/eslint.cjs.map +4 -4
  3. package/eslint.js +636 -42
  4. package/eslint.js.map +4 -4
  5. package/lib/angular-template.d.ts +1 -2
  6. package/lib/angular-template.d.ts.map +1 -1
  7. package/lib/angular.d.ts +1 -2
  8. package/lib/angular.d.ts.map +1 -1
  9. package/lib/base.d.ts +1 -1
  10. package/lib/base.d.ts.map +1 -1
  11. package/lib/boundaries.d.ts +1 -1
  12. package/lib/boundaries.d.ts.map +1 -1
  13. package/lib/javascript.d.ts +1 -2
  14. package/lib/javascript.d.ts.map +1 -1
  15. package/lib/json.d.ts +1 -1
  16. package/lib/json.d.ts.map +1 -1
  17. package/lib/playwright.d.ts +1 -1
  18. package/lib/playwright.d.ts.map +1 -1
  19. package/lib/prettier.d.ts +1 -1
  20. package/lib/prettier.d.ts.map +1 -1
  21. package/lib/rules/no-unused-angular-instance-fields/angular-class-fields.d.ts +8 -0
  22. package/lib/rules/no-unused-angular-instance-fields/angular-class-fields.d.ts.map +1 -0
  23. package/lib/rules/no-unused-angular-instance-fields/angular-metadata-reads.d.ts +3 -0
  24. package/lib/rules/no-unused-angular-instance-fields/angular-metadata-reads.d.ts.map +1 -0
  25. package/lib/rules/no-unused-angular-instance-fields/common/no-unused-angular-instance-fields.type.d.ts +10 -0
  26. package/lib/rules/no-unused-angular-instance-fields/common/no-unused-angular-instance-fields.type.d.ts.map +1 -0
  27. package/lib/rules/no-unused-angular-instance-fields/no-unused-angular-instance-fields.d.ts +7 -0
  28. package/lib/rules/no-unused-angular-instance-fields/no-unused-angular-instance-fields.d.ts.map +1 -0
  29. package/lib/rules/no-unused-angular-instance-fields/no-unused-instance-fields.spec.d.ts +2 -0
  30. package/lib/rules/no-unused-angular-instance-fields/no-unused-instance-fields.spec.d.ts.map +1 -0
  31. package/lib/rules/no-unused-angular-instance-fields/utils/angular-expression-reads.util.d.ts +6 -0
  32. package/lib/rules/no-unused-angular-instance-fields/utils/angular-expression-reads.util.d.ts.map +1 -0
  33. package/lib/rules/no-unused-angular-instance-fields/utils/typescript-field-reads.util.d.ts +7 -0
  34. package/lib/rules/no-unused-angular-instance-fields/utils/typescript-field-reads.util.d.ts.map +1 -0
  35. package/lib/rxjs.d.ts +1 -1
  36. package/lib/rxjs.d.ts.map +1 -1
  37. package/lib/storybook.d.ts +1 -1
  38. package/lib/storybook.d.ts.map +1 -1
  39. package/lib/typescript.d.ts +1 -2
  40. package/lib/typescript.d.ts.map +1 -1
  41. package/lib/vitest.d.ts +1 -1
  42. package/lib/vitest.d.ts.map +1 -1
  43. package/package.json +23 -22
  44. package/stylelint.cjs +3 -0
  45. package/stylelint.cjs.map +2 -2
  46. package/stylelint.d.ts.map +1 -1
  47. package/stylelint.js +3 -0
  48. package/stylelint.js.map +2 -2
package/eslint.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../packages/lint-suite/src/eslint.ts", "../../../../packages/lint-suite/src/lib/angular-template.ts", "../../../../packages/lint-suite/src/lib/angular.ts", "../../../../packages/lint-suite/src/lib/base.ts", "../../../../packages/lint-suite/src/lib/javascript.ts", "../../../../packages/lint-suite/src/lib/json.ts", "../../../../packages/lint-suite/src/lib/prettier.ts", "../../../../packages/lint-suite/src/lib/rxjs.ts", "../../../../packages/lint-suite/src/lib/storybook.ts", "../../../../packages/lint-suite/src/lib/typescript.ts", "../../../../packages/lint-suite/src/lib/rules/explicit-accessibility.ts", "../../../../packages/lint-suite/src/lib/vitest.ts", "../../../../packages/lint-suite/src/lib/playwright.ts", "../../../../packages/lint-suite/src/lib/boundaries.ts"],
4
- "sourcesContent": ["import { ConfigArray } from 'typescript-eslint';\nimport { angularTemplate } from './lib/angular-template.js';\nimport { angular } from './lib/angular.js';\nimport { base } from './lib/base.js';\nimport { javascript } from './lib/javascript.js';\nimport { json } from './lib/json.js';\nimport { prettier } from './lib/prettier.js';\nimport { rxjs } from './lib/rxjs.js';\nimport { storybook } from './lib/storybook.js';\nimport { typescript } from './lib/typescript.js';\nimport { vitest } from './lib/vitest.js';\nimport { playwright } from './lib/playwright.js';\nimport { boundaries } from './lib/boundaries.js';\n\nexport const recommended: ConfigArray = [\n ...base,\n ...javascript,\n ...typescript,\n ...json,\n ...boundaries,\n ...prettier // Must be last to disable formatting rules that conflict with Prettier\n];\n\nexport {\n base,\n javascript,\n typescript,\n angular,\n angularTemplate,\n rxjs,\n json,\n boundaries,\n storybook,\n vitest,\n playwright,\n prettier\n};\n", "import { configs } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const angularTemplate = defineConfig([\n {\n files: ['**/*.html'],\n extends: [\n ...(configs.templateAccessibility as Config[]),\n ...(configs.templateRecommended as Config[])\n ],\n rules: {\n '@angular-eslint/template/prefer-template-literal': 'error',\n '@angular-eslint/template/no-any': 'error',\n '@angular-eslint/template/no-duplicate-attributes': 'error',\n '@angular-eslint/template/button-has-type': 'error',\n '@angular-eslint/template/no-positive-tabindex': 'error',\n '@angular-eslint/template/valid-aria': 'error',\n '@angular-eslint/template/alt-text': 'error',\n '@angular-eslint/template/elements-content': 'error',\n '@angular-eslint/template/click-events-have-key-events': 'error',\n '@angular-eslint/template/mouse-events-have-key-events': 'error',\n '@angular-eslint/template/table-scope': 'error',\n '@angular-eslint/template/no-autofocus': 'error',\n '@angular-eslint/template/no-distracting-elements': 'error',\n '@angular-eslint/template/prefer-control-flow': 'error',\n '@angular-eslint/template/prefer-self-closing-tags': 'error',\n '@angular-eslint/template/prefer-ngsrc': 'error',\n '@angular-eslint/template/prefer-built-in-pipes': 'error',\n '@angular-eslint/template/no-interpolation-in-attributes': 'error',\n '@angular-eslint/template/no-nested-tags': 'error',\n '@angular-eslint/template/use-track-by-function': 'error',\n '@angular-eslint/template/label-has-associated-control': 'error',\n '@angular-eslint/template/prefer-at-else': 'error', // v21: @if/@else syntax\n '@angular-eslint/template/prefer-at-empty': 'error', // v21: @for/@empty syntax\n '@angular-eslint/template/prefer-contextual-for-variables': 'error', // v21: Use $index, $first, etc.\n '@angular-eslint/template/no-empty-control-flow': 'error', // v21: Catch incomplete refactoring\n '@angular-eslint/template/prefer-class-binding': 'error', // v21.2.0: Prefer [class] over ngClass\n '@angular-eslint/template/prefer-static-string-properties': 'error', // Reduce change detection\n '@angular-eslint/template/no-non-null-assertion': 'error', // Forbid `!` assertions in templates\n '@angular-eslint/template/no-inline-styles': 'error', // Forbid inline style=\"...\" attributes\n '@angular-eslint/template/conditional-complexity': [\n 'warn',\n { maxComplexity: 5 }\n ], // Template readability\n '@angular-eslint/template/attributes-order': [\n 'error',\n {\n alphabetical: true,\n order: [\n 'STRUCTURAL_DIRECTIVE', // e.g. `*ngIf=\"true\"`, `*ngFor=\"let item of items\"`\n 'TEMPLATE_REFERENCE', // e.g. `<input #inputRef>`\n 'INPUT_BINDING', // e.g. `[id]=\"3\"`, `[attr.colspan]=\"colspan\"`, [style.width.%]=\"100\", [@triggerName]=\"expression\", `bind-id=\"handleChange()\"`\n 'TWO_WAY_BINDING', // e.g. `[(id)]=\"id\"`, `bindon-id=\"id\"\n 'ATTRIBUTE_BINDING', // e.g. `<input required>`, `id=\"3\"`\n 'OUTPUT_BINDING' // e.g. `(idChange)=\"handleChange()\"`, `on-id=\"handleChange()\"`\n ]\n }\n ]\n }\n }\n]);\n", "import globals from 'globals';\nimport { configs, processInlineTemplates } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const angular = defineConfig([\n {\n files: ['**/*.ts'],\n extends: [...(configs.tsRecommended as Config[])],\n languageOptions: {\n globals: {\n ...globals.browser,\n ...globals.es2025,\n ...globals.node\n }\n },\n processor: processInlineTemplates,\n rules: {\n '@angular-eslint/prefer-on-push-component-change-detection': 'error',\n '@angular-eslint/prefer-signals': 'error',\n '@angular-eslint/use-injectable-provided-in': 'error',\n '@angular-eslint/prefer-signal-model': 'error',\n '@angular-eslint/no-uncalled-signals': 'error',\n '@angular-eslint/prefer-host-metadata-property': 'error',\n '@angular-eslint/no-implicit-take-until-destroyed': 'error', // v21.2.0: Enforce explicit DestroyRef\n '@angular-eslint/no-async-lifecycle-method': 'error', // Prevent async lifecycle hooks\n '@angular-eslint/prefer-output-readonly': 'warn', // Prevent accidental reassignment\n '@angular-eslint/prefer-output-emitter-ref': 'warn', // Modern output() function over @Output()\n '@angular-eslint/sort-lifecycle-methods': 'warn', // Consistent lifecycle method ordering\n '@angular-eslint/computed-must-return': 'error', // Catch silent computed() bugs missing a return\n '@angular-eslint/no-conflicting-lifecycle': 'error', // Block incompatible hook combinations (OnChanges + DoCheck)\n '@angular-eslint/no-duplicates-in-metadata-arrays': 'error', // Catch duplicate imports/providers in @Component/@NgModule\n '@angular-eslint/no-lifecycle-call': 'error', // Forbid manual this.ngOnInit() calls\n '@angular-eslint/require-lifecycle-on-prototype': 'error', // Lifecycle hooks must be methods, not arrow-fn fields\n '@angular-eslint/relative-url-prefix': 'error', // Require ./ in templateUrl/styleUrl for portability\n '@angular-eslint/use-component-selector': 'error', // All components must declare a selector\n '@angular-eslint/no-developer-preview': 'warn', // Flag APIs marked @developerPreview (no breaking-change policy)\n '@angular-eslint/no-experimental': 'warn' // Flag APIs marked @experimental\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport stylistic from '@stylistic/eslint-plugin';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\n\nexport const base = defineConfig([\n { extends: [...configs['flat/base']] },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [importPluginX.flatConfigs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [stylistic.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'no-param-reassign': 'error',\n 'no-alert': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-debugger': 'error',\n eqeqeq: ['error', 'always', { null: 'ignore' }],\n curly: ['error', 'multi'],\n 'prefer-const': ['error', { destructuring: 'all' }],\n 'no-var': 'error',\n 'object-shorthand': 'error',\n 'prefer-arrow-callback': 'error',\n 'no-useless-concat': 'error',\n 'prefer-template': 'error',\n 'no-nested-ternary': 'error',\n 'no-useless-assignment': 'error', // NEW: Catch unused assignments (ESLint v9)\n 'no-object-constructor': 'error', // Disallow new Object() without arguments\n 'no-else-return': ['error', { allowElseIf: false }], // Prefer early returns\n 'no-multi-assign': 'error', // Disallow chaining assignments\n radix: 'error', // Require radix parameter for parseInt()\n yoda: 'error', // Disallow yoda conditions (`if (\"red\" === color)`)\n complexity: ['warn', 10], // Warn if function complexity is high\n 'max-depth': ['warn', 4], // Warn on deeply nested blocks\n 'max-lines-per-function': [\n 'warn',\n { max: 50, skipBlankLines: true, skipComments: true }\n ], // Warn on long functions\n 'max-params': ['warn', 4], // Warn on functions with many parameters\n 'no-lonely-if': 'error', // Disallow if statements as the only statement in an else block\n 'grouped-accessor-pairs': ['error', 'getBeforeSet'], // Enforce consistency for getters/setters\n 'class-methods-use-this': 'error',\n 'no-underscore-dangle': 'error',\n 'max-len': [\n 'error',\n {\n code: 135,\n ignoreComments: true\n }\n ],\n 'spaced-comment': [\n 2,\n 'always',\n {\n block: {\n exceptions: ['*']\n }\n }\n ],\n '@stylistic/padding-line-between-statements': [\n 'error',\n {\n blankLine: 'always',\n prev: 'export',\n next: ['export', 'const']\n },\n {\n blankLine: 'always',\n prev: ['const', 'let', 'var'],\n next: '*'\n },\n {\n blankLine: 'any',\n prev: ['const', 'let', 'var'],\n next: ['const', 'let', 'var']\n },\n {\n blankLine: 'always',\n prev: '*',\n next: [\n 'for',\n 'if',\n 'return',\n 'throw',\n 'switch',\n 'try',\n 'class',\n 'function'\n ]\n }\n ],\n '@stylistic/comma-dangle': ['error', 'never'],\n '@stylistic/indent': [\n 'error',\n 2,\n {\n offsetTernaryExpressions: true,\n SwitchCase: 1,\n ignoredNodes: [\n 'TSTypeParameterInstantiation',\n 'FunctionExpression > .params > :matches(Decorator, :not(:first-child))'\n ]\n }\n ],\n 'sort-imports': [\n 'error',\n {\n ignoreCase: false,\n ignoreDeclarationSort: true,\n ignoreMemberSort: false,\n memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],\n allowSeparatedGroups: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts',\n '**/*.html'\n ],\n rules: {\n 'max-lines': [\n 'error',\n {\n max: 150,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n 'max-lines-per-function': 'off',\n complexity: ['warn', { max: 3 }],\n 'max-lines': [\n 'error',\n {\n max: 300,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n 'max-classes-per-file': 'off'\n }\n },\n {\n files: ['**/*.state.ts'],\n rules: {\n 'class-methods-use-this': 'off'\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const javascript = defineConfig({\n files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],\n extends: [...(configs['flat/javascript'] as Config[])]\n});\n", "import jsonPlugin from '@eslint/json';\nimport { defineConfig } from 'eslint/config';\n\nexport const json = defineConfig([\n {\n plugins: { json: jsonPlugin }\n },\n {\n files: ['**/*.json'],\n language: 'json/json',\n extends: [jsonPlugin.configs.recommended]\n }\n]);\n", "import eslintConfigPrettier from 'eslint-config-prettier';\nimport { defineConfig } from 'eslint/config';\n\nexport const prettier = defineConfig([eslintConfigPrettier]);\n", "import rxjsEslint from '@smarttools/eslint-plugin-rxjs';\nimport { defineConfig } from 'eslint/config';\n\nexport const rxjs = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n extends: [rxjsEslint.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n rxjs: rxjsEslint\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'rxjs/prefer-observer': 'error',\n 'rxjs/finnish': 'warn',\n 'rxjs/no-ignored-subscription': 'warn',\n 'rxjs/no-ignored-error': 'warn',\n 'rxjs/no-unsafe-switchmap': 'error',\n 'rxjs/no-unsafe-takeuntil': 'error',\n 'rxjs/no-unsafe-catch': 'error',\n 'rxjs/no-unsafe-first': 'error',\n 'rxjs/no-topromise': 'error',\n 'rxjs/throw-error': 'error',\n 'rxjs/no-async-subscribe': 'off',\n 'rxjs/no-exposed-subjects': 'error', // Enforce subject encapsulation\n 'rxjs/no-cyclic-action': 'error', // Prevent infinite loops in NgRx effects\n 'rxjs/no-subscribe-handlers': 'warn' // Prefer observer objects (complements prefer-observer)\n }\n },\n {\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\n rules: {\n 'rxjs/no-ignored-subscription': 'off',\n 'rxjs/no-subscribe-handlers': 'off'\n }\n }\n]);\n", "import storybookEslint from 'eslint-plugin-storybook';\nimport { defineConfig } from 'eslint/config';\n\nexport const storybook = defineConfig([\n {\n ignores: ['!.storybook'],\n files: ['**/*.stories.ts'],\n extends: [storybookEslint.configs['flat/recommended']],\n rules: {\n 'storybook/csf-component': 'warn', // Ensure component property is set\n 'storybook/no-stories-of': 'error' // Prevent deprecated storiesOf API\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nimport explicitAccessibilityRule from './rules/explicit-accessibility.js';\n\nconst localTypescriptRules: Record<string, unknown> = {\n rules: {\n 'explicit-accessibility': explicitAccessibilityRule\n }\n};\n\nexport const typescript = defineConfig([\n // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n extends: [\n importPluginX.flatConfigs.typescript,\n ...(configs['flat/typescript'] as Config[])\n ]\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n plugins: { local: localTypescriptRules },\n rules: {\n 'local/explicit-accessibility': 'error',\n '@typescript-eslint/explicit-member-accessibility': 'error',\n '@typescript-eslint/explicit-function-return-type': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-unused-vars': 'error',\n '@typescript-eslint/no-use-before-define': 'error',\n\n // A. Eliminating `any` (already covered by strict-type-checked, but explicit for clarity)\n '@typescript-eslint/no-explicit-any': 'error',\n '@typescript-eslint/no-unsafe-assignment': 'error',\n '@typescript-eslint/no-unsafe-call': 'error',\n '@typescript-eslint/no-unsafe-member-access': 'error',\n '@typescript-eslint/no-unsafe-return': 'error',\n '@typescript-eslint/no-unsafe-argument': 'error',\n\n // New v8 type-safety rules (replacements for deprecated ban-types)\n '@typescript-eslint/no-empty-object-type': 'error', // Bans confusing {} type\n '@typescript-eslint/no-unsafe-function-type': 'error', // Bans Function type\n '@typescript-eslint/no-wrapper-object-types': 'error', // Bans Number, String, Boolean wrappers\n\n // B. Explicit Annotations (partially covered, explicit module boundaries is key)\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n // Consider enabling if maximum explicitness is desired, even if verbose:\n\n // C. Null/Undefined Safety (Requires strictNullChecks)\n '@typescript-eslint/no-non-null-assertion': 'error',\n '@typescript-eslint/prefer-nullish-coalescing': 'error',\n '@typescript-eslint/prefer-optional-chain': 'error',\n\n // D. Promise Handling (Supplementing plugin:promise/recommended)\n '@typescript-eslint/no-floating-promises': [\n 'error',\n { ignoreVoid: true }\n ],\n '@typescript-eslint/no-misused-promises': 'warn', // Already in recommended-type-checked\n '@typescript-eslint/promise-function-async': 'error',\n '@typescript-eslint/await-thenable': 'error', // Already in recommended-type-checked\n\n // E. Best Practices & Potential Errors (Some covered by presets, fine-tuning here)\n '@typescript-eslint/no-inferrable-types': 'warn', // Keep as warn or disable if inference is preferred\n '@typescript-eslint/no-require-imports': 'error', // Use ES modules (replaces deprecated no-var-requires)\n '@typescript-eslint/only-throw-error': 'error', // Replaces deprecated no-throw-literal\n '@typescript-eslint/no-array-delete': 'error', // Prevents delete arr[0]\n '@typescript-eslint/return-await': ['error', 'in-try-catch'], // Better stack traces in try/catch\n '@typescript-eslint/require-await': 'error',\n '@typescript-eslint/restrict-template-expressions': [\n 'error',\n { allowNumber: true, allowBoolean: true }\n ], // Allow numbers/booleans in templates\n '@typescript-eslint/restrict-plus-operands': 'error', // Enforce consistent types for '+'\n '@typescript-eslint/prefer-as-const': 'error',\n '@typescript-eslint/no-shadow': 'error',\n '@typescript-eslint/switch-exhaustiveness-check': 'error', // Ensure switch on unions is exhaustive\n '@typescript-eslint/no-unused-expressions': [\n 'error',\n { allowShortCircuit: true, allowTernary: true }\n ],\n '@typescript-eslint/no-useless-constructor': 'error',\n '@typescript-eslint/dot-notation': ['error', { allowKeywords: true }], // Prefer dot notation where possible\n\n // Strict type-checked rules\n '@typescript-eslint/no-unnecessary-condition': 'error', // Catches always-true/false conditions\n '@typescript-eslint/no-confusing-void-expression': [\n 'error',\n { ignoreArrowShorthand: true, ignoreVoidOperator: true }\n ], // Prevent confusing void usage\n '@typescript-eslint/no-dynamic-delete': 'error', // Use Map instead of delete obj[key]\n '@typescript-eslint/no-extraneous-class': [\n 'error',\n { allowWithDecorator: true }\n ], // Allow Angular classes\n '@typescript-eslint/no-invalid-void-type': 'error', // Restrict void to return types\n '@typescript-eslint/unified-signatures': 'error', // Merge overloads where possible\n '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error', // Forbids foo! ?? bar\n\n // Stylistic type-checked rules\n '@typescript-eslint/prefer-find': 'error', // Use find() instead of filter()[0]\n '@typescript-eslint/prefer-for-of': 'error', // Modern iteration\n '@typescript-eslint/prefer-includes': 'error', // indexOf() \u2192 includes()\n '@typescript-eslint/prefer-string-starts-ends-with': 'error', // Modern string methods\n '@typescript-eslint/prefer-regexp-exec': 'error', // Better regex performance\n\n // F. Consistency & Style (Some covered by stylistic-type-checked)\n '@typescript-eslint/consistent-type-assertions': [\n 'error',\n { assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }\n ],\n '@typescript-eslint/consistent-type-definitions': ['error', 'type'],\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n { prefer: 'type-imports', fixStyle: 'separate-type-imports' }\n ],\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'objectLiteralProperty',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'objectLiteralProperty',\n format: ['camelCase', 'snake_case', 'PascalCase']\n },\n {\n selector: 'parameter',\n format: ['camelCase'],\n leadingUnderscore: 'allow'\n },\n { selector: 'default', format: ['camelCase'] },\n { selector: 'variable', format: ['camelCase', 'UPPER_CASE'] },\n { selector: 'function', format: ['camelCase'] },\n { selector: 'typeLike', format: ['PascalCase'] },\n {\n selector: 'property',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'property',\n format: ['camelCase', 'PascalCase', 'snake_case']\n }\n ],\n 'import-x/order': [\n 'error',\n {\n groups: [\n 'builtin',\n 'external',\n 'internal',\n ['parent', 'sibling'],\n 'index',\n 'unknown'\n ],\n pathGroups: [\n {\n pattern: '@angular/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@nestjs/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@backend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@frontend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/frontend/**',\n group: 'internal',\n position: 'after'\n },\n {\n pattern: '@*/backend/**',\n group: 'internal',\n position: 'after'\n }\n ],\n pathGroupsExcludedImportTypes: ['builtin'],\n 'newlines-between': 'always',\n alphabetize: { order: 'asc', caseInsensitive: true }\n }\n ],\n 'import-x/no-unresolved': 'error',\n 'import-x/no-duplicates': 'error',\n 'import-x/prefer-default-export': 'off',\n 'import-x/no-useless-path-segments': ['error', { noUselessIndex: true }],\n 'import-x/newline-after-import': 'error',\n 'import-x/first': 'error',\n 'import-x/no-mutable-exports': 'error',\n 'import-x/no-self-import': 'error', // Prevents modules importing themselves\n 'import-x/no-cycle': ['error', { maxDepth: 2, ignoreExternal: true }], // Prevents circular dependencies\n 'import-x/consistent-type-specifier-style': ['error', 'prefer-top-level'], // Consistent type imports\n 'import-x/no-anonymous-default-export': 'error' // Improve code searchability\n },\n settings: {\n 'import-x/resolver-next': [\n createTypeScriptImportResolver({\n alwaysTryTypes: true\n })\n ]\n }\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n rules: {\n '@typescript-eslint/prefer-readonly': 'error'\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-extraneous-class': 'off'\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unbound-method': 'off',\n '@typescript-eslint/consistent-type-assertions': 'off'\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n '@typescript-eslint/consistent-type-assertions': 'off',\n '@typescript-eslint/naming-convention': 'off'\n }\n }\n]);\n", "import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';\n\nconst createRule = ESLintUtils.RuleCreator(\n () => 'https://eslint.org/docs/latest/rules/no-unused-private-class-members'\n);\n\ntype AccessibilityLevel = 'public' | 'private' | 'protected';\n\ntype Options = [\n {\n defaultAccessibility?: AccessibilityLevel;\n }\n];\n\nconst defaultOptions: Options[0] = {\n defaultAccessibility: 'private'\n};\n\nconst getNodeName = (\n node: TSESTree.Node | TSESTree.Token | null | undefined\n): string => {\n if (!node) {\n return '<unknown>';\n }\n\n /*\n * MethodDefinition or PropertyDefinition (check 'key' first)\n * Note: Check 'key' before 'kind' because MethodDefinition has both\n */\n if ('key' in node && node.key) {\n if (node.key.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return node.key.name;\n }\n // Handle computed property names, private identifiers (#name), etc. if needed\n if (node.key.type === TSESTree.AST_NODE_TYPES.PrivateIdentifier) {\n return `#${node.key.name}`;\n }\n return '<computed/complex key>';\n }\n\n // Constructor specific check (if key check didn't catch it - unlikely for MethodDefinition)\n if ('kind' in node && node.kind === 'constructor') {\n return 'constructor';\n }\n\n // TSParameterProperty - handle its 'parameter' property\n if (node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty) {\n const param = node.parameter; // Assign to variable for clarity & potentially better inference\n\n // Handle different parameter kinds:\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.name;\n }\n if (param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern) {\n // Check the left side of the assignment\n if (param.left.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.left.name; // Name is on the identifier being assigned to\n }\n /*\n * Parameter is an assignment pattern with destructuring (ArrayPattern/ObjectPattern)\n * You might want more sophisticated logic here to extract a name\n */\n return '<destructured parameter>';\n }\n return '<complex parameter>';\n }\n\n return '<unknown>';\n};\n\nexport default createRule<Options, 'missingAccessibility'>({\n name: 'explicit-accessibility',\n meta: {\n type: 'suggestion',\n docs: {\n description: 'Require explicit accessibility modifiers on class members'\n },\n fixable: 'code',\n schema: [\n {\n type: 'object',\n properties: {\n defaultAccessibility: {\n type: 'string',\n enum: ['public', 'private', 'protected'],\n description: 'The accessibility modifier to add if one is missing.'\n }\n },\n additionalProperties: false\n }\n ],\n messages: {\n missingAccessibility:\n \"Class member '{{ name }}' is missing an explicit accessibility modifier (public/private/protected).\"\n }\n },\n defaultOptions: [defaultOptions],\n\n create(context, [options]) {\n const { defaultAccessibility } = { ...defaultOptions, ...options };\n const sourceCode = context.sourceCode;\n\n function checkNode(\n node:\n | TSESTree.MethodDefinition\n | TSESTree.PropertyDefinition\n | TSESTree.TSParameterProperty\n ): void {\n if (node.accessibility) {\n return; // Already has modifier\n }\n\n let reportNode: TSESTree.Node | TSESTree.Token = node;\n const name = getNodeName(node);\n // Adjust report node for better highlighting\n if (\n node.type === TSESTree.AST_NODE_TYPES.MethodDefinition ||\n node.type === TSESTree.AST_NODE_TYPES.PropertyDefinition\n ) {\n reportNode = node.key;\n } else {\n const param = node.parameter;\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n reportNode = param;\n } else if (\n param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern &&\n param.left.type === TSESTree.AST_NODE_TYPES.Identifier\n ) {\n reportNode = param.left;\n }\n // Keep reportNode as the TSParameterProperty node itself if param isn't simple identifier\n }\n\n context.report({\n node: reportNode ?? node,\n messageId: 'missingAccessibility',\n data: { name },\n fix(fixer) {\n let insertText = `${defaultAccessibility} `;\n\n let tokenToInsertBefore: TSESTree.Token | null;\n if (node.decorators.length > 0) {\n const lastDecorator = node.decorators[node.decorators.length - 1];\n tokenToInsertBefore = sourceCode.getTokenAfter(lastDecorator);\n } else {\n tokenToInsertBefore = sourceCode.getFirstToken(node);\n }\n\n // Parameter properties need special handling if they also have 'readonly'\n if (\n node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty &&\n node.readonly\n ) {\n // If readonly exists without accessibility, insert accessibility *before* readonly\n const firstToken = sourceCode.getFirstToken(node);\n if (firstToken?.value === 'readonly') {\n // double check it's the readonly token\n tokenToInsertBefore = firstToken;\n }\n // If insertion point wasn't decorators, use first token (which should be readonly)\n }\n\n if (!tokenToInsertBefore) return null;\n\n /*\n * If the token immediately after the insertion point isn't whitespace, add a space.\n * (Handles case where tokenToInsertBefore is the last decorator token)\n */\n const tokenAfterInsertion = sourceCode.getTokenAfter(\n tokenToInsertBefore,\n { includeComments: false }\n );\n const textBetween = sourceCode.text.slice(\n tokenToInsertBefore.range[1],\n tokenAfterInsertion?.range[0]\n );\n if (!/^\\s/.test(textBetween)) {\n insertText = ` ${insertText}`; // Add leading space if needed after decorator\n }\n\n return fixer.insertTextBefore(tokenToInsertBefore, insertText);\n }\n });\n }\n\n return {\n MethodDefinition(node: TSESTree.MethodDefinition): void {\n checkNode(node);\n },\n\n PropertyDefinition(node: TSESTree.PropertyDefinition): void {\n checkNode(node);\n },\n\n TSParameterProperty(node: TSESTree.TSParameterProperty): void {\n checkNode(node);\n }\n };\n }\n});\n", "import vitestEslint from '@vitest/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\n\nconst vitestPlugin: Record<string, object> = {\n vitest: vitestEslint\n};\n\nexport const vitest = defineConfig([\n {\n files: ['**/*.spec.ts', '**/*.spec.js', '**/*.test.ts', '**/*.test.js'],\n plugins: vitestPlugin,\n rules: {\n ...vitestEslint.configs.recommended.rules,\n 'vitest/max-nested-describe': ['error', { max: 3 }],\n // Matcher improvements\n 'vitest/prefer-to-be': 'error',\n 'vitest/prefer-to-contain': 'error',\n 'vitest/prefer-to-have-length': 'error',\n 'vitest/prefer-comparison-matcher': 'error',\n 'vitest/prefer-strict-equal': 'warn',\n // Test quality\n 'vitest/prefer-spy-on': 'error',\n 'vitest/prefer-hooks-on-top': 'error',\n 'vitest/prefer-each': 'warn',\n 'vitest/no-test-return-statement': 'error',\n 'vitest/prefer-mock-promise-shorthand': 'error'\n }\n }\n]);\n", "import playwrightEslint from 'eslint-plugin-playwright';\nimport { defineConfig } from 'eslint/config';\n\nexport const playwright = defineConfig([\n {\n ...playwrightEslint.configs['flat/recommended'],\n files: ['**/*.e2e.ts', '**/*.e2e.js'],\n rules: {\n ...playwrightEslint.configs['flat/recommended'].rules,\n // Locator best practices\n 'playwright/prefer-locator': 'error',\n 'playwright/prefer-native-locators': 'error',\n 'playwright/no-nth-methods': 'warn',\n // Matcher improvements\n 'playwright/prefer-to-be': 'error',\n 'playwright/prefer-to-have-count': 'error',\n 'playwright/prefer-to-have-length': 'error',\n 'playwright/prefer-comparison-matcher': 'error',\n // Test structure\n 'playwright/prefer-hooks-on-top': 'error',\n 'playwright/require-top-level-describe': 'warn'\n }\n }\n]);\n", "import boundariesPlugin from 'eslint-plugin-boundaries';\nimport { defineConfig } from 'eslint/config';\n\nexport const boundaries = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n boundaries: boundariesPlugin\n },\n settings: {\n 'boundaries/elements': [\n {\n type: 'feature',\n pattern: '**/feature/**'\n },\n {\n type: 'data-access',\n pattern: '**/data-access/**'\n },\n {\n type: 'domain-logic',\n pattern: '**/domain-logic/**'\n },\n {\n type: 'ui',\n pattern: '**/ui/**'\n },\n {\n type: 'common',\n pattern: '**/common/**'\n },\n {\n type: 'utils',\n pattern: '**/utils/**'\n }\n ],\n 'import/resolver': {\n typescript: {\n alwaysTryTypes: true\n }\n }\n },\n rules: {\n ...boundariesPlugin.configs.recommended.rules,\n 'boundaries/dependencies': [\n 'error',\n {\n default: 'disallow',\n message:\n '${dependency.type} is not allowed to be imported in ${file.type}',\n rules: [\n {\n from: { type: 'feature' },\n allow: [\n { to: { type: 'feature' } },\n { to: { type: 'ui' } },\n { to: { type: 'domain-logic' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'domain-logic' },\n allow: [\n { to: { type: 'domain-logic' } },\n { to: { type: 'data-access' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'data-access' },\n allow: [\n { to: { type: 'data-access' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'ui' },\n allow: [\n { to: { type: 'ui' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'utils' },\n allow: [\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'common' },\n allow: [{ to: { type: 'common' } }]\n }\n ]\n }\n ]\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n 'boundaries/dependencies': 'off'\n }\n }\n]);\n"],
5
- "mappings": "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",
6
- "names": ["import_angular_eslint", "import_config", "globals", "import_eslint_plugin", "import_config", "importPluginX", "stylistic", "import_eslint_plugin", "import_config", "import_config", "jsonPlugin", "import_config", "eslintConfigPrettier", "import_config", "rxjsEslint", "import_config", "storybookEslint", "import_eslint_plugin", "import_eslint_plugin_import_x", "import_config", "importPluginX", "import_eslint_plugin", "import_config", "vitestEslint", "import_config", "playwrightEslint", "import_config", "boundariesPlugin"]
3
+ "sources": ["../../../../packages/lint-suite/src/eslint.ts", "../../../../packages/lint-suite/src/lib/angular-template.ts", "../../../../packages/lint-suite/src/lib/angular.ts", "../../../../packages/lint-suite/src/lib/rules/no-unused-angular-instance-fields/no-unused-angular-instance-fields.ts", "../../../../packages/lint-suite/src/lib/rules/no-unused-angular-instance-fields/angular-class-fields.ts", "../../../../packages/lint-suite/src/lib/rules/no-unused-angular-instance-fields/angular-metadata-reads.ts", "../../../../packages/lint-suite/src/lib/rules/no-unused-angular-instance-fields/utils/angular-expression-reads.util.ts", "../../../../packages/lint-suite/src/lib/rules/no-unused-angular-instance-fields/utils/typescript-field-reads.util.ts", "../../../../packages/lint-suite/src/lib/base.ts", "../../../../packages/lint-suite/src/lib/javascript.ts", "../../../../packages/lint-suite/src/lib/json.ts", "../../../../packages/lint-suite/src/lib/prettier.ts", "../../../../packages/lint-suite/src/lib/rxjs.ts", "../../../../packages/lint-suite/src/lib/storybook.ts", "../../../../packages/lint-suite/src/lib/typescript.ts", "../../../../packages/lint-suite/src/lib/rules/explicit-accessibility.ts", "../../../../packages/lint-suite/src/lib/vitest.ts", "../../../../packages/lint-suite/src/lib/playwright.ts", "../../../../packages/lint-suite/src/lib/boundaries.ts"],
4
+ "sourcesContent": ["import { ConfigArray } from 'typescript-eslint';\nimport { angularTemplate } from './lib/angular-template.js';\nimport { angular } from './lib/angular.js';\nimport { base } from './lib/base.js';\nimport { javascript } from './lib/javascript.js';\nimport { json } from './lib/json.js';\nimport { prettier } from './lib/prettier.js';\nimport { rxjs } from './lib/rxjs.js';\nimport { storybook } from './lib/storybook.js';\nimport { typescript } from './lib/typescript.js';\nimport { vitest } from './lib/vitest.js';\nimport { playwright } from './lib/playwright.js';\nimport { boundaries } from './lib/boundaries.js';\n\nexport const recommended: ConfigArray = [\n ...base,\n ...javascript,\n ...typescript,\n ...json,\n ...boundaries,\n ...prettier // Must be last to disable formatting rules that conflict with Prettier\n];\n\nexport {\n base,\n javascript,\n typescript,\n angular,\n angularTemplate,\n rxjs,\n json,\n boundaries,\n storybook,\n vitest,\n playwright,\n prettier\n};\n", "import { configs } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const angularTemplate = defineConfig([\n {\n files: ['**/*.html'],\n extends: [\n ...(configs.templateAccessibility as Config[]),\n ...(configs.templateRecommended as Config[])\n ],\n rules: {\n '@angular-eslint/template/prefer-template-literal': 'error',\n '@angular-eslint/template/no-any': 'error',\n '@angular-eslint/template/no-duplicate-attributes': 'error',\n '@angular-eslint/template/button-has-type': 'error',\n '@angular-eslint/template/no-positive-tabindex': 'error',\n '@angular-eslint/template/valid-aria': 'error',\n '@angular-eslint/template/alt-text': 'error',\n '@angular-eslint/template/elements-content': 'error',\n '@angular-eslint/template/click-events-have-key-events': 'error',\n '@angular-eslint/template/mouse-events-have-key-events': 'error',\n '@angular-eslint/template/table-scope': 'error',\n '@angular-eslint/template/no-autofocus': 'error',\n '@angular-eslint/template/no-distracting-elements': 'error',\n '@angular-eslint/template/prefer-control-flow': 'error',\n '@angular-eslint/template/prefer-self-closing-tags': 'error',\n '@angular-eslint/template/prefer-ngsrc': 'error',\n '@angular-eslint/template/prefer-built-in-pipes': 'error',\n '@angular-eslint/template/no-interpolation-in-attributes': 'error',\n '@angular-eslint/template/no-nested-tags': 'error',\n '@angular-eslint/template/use-track-by-function': 'error',\n '@angular-eslint/template/label-has-associated-control': 'error',\n '@angular-eslint/template/prefer-at-else': 'error', // v21: @if/@else syntax\n '@angular-eslint/template/prefer-at-empty': 'error', // v21: @for/@empty syntax\n '@angular-eslint/template/prefer-contextual-for-variables': 'error', // v21: Use $index, $first, etc.\n '@angular-eslint/template/no-empty-control-flow': 'error', // v21: Catch incomplete refactoring\n '@angular-eslint/template/prefer-class-binding': 'error', // v21.2.0: Prefer [class] over ngClass\n '@angular-eslint/template/prefer-static-string-properties': 'error', // Reduce change detection\n '@angular-eslint/template/no-non-null-assertion': 'error', // Forbid `!` assertions in templates\n '@angular-eslint/template/no-inline-styles': 'error', // Forbid inline style=\"...\" attributes\n '@angular-eslint/template/conditional-complexity': [\n 'warn',\n { maxComplexity: 5 }\n ], // Template readability\n '@angular-eslint/template/attributes-order': [\n 'error',\n {\n alphabetical: true,\n order: [\n 'STRUCTURAL_DIRECTIVE', // e.g. `*ngIf=\"true\"`, `*ngFor=\"let item of items\"`\n 'TEMPLATE_REFERENCE', // e.g. `<input #inputRef>`\n 'INPUT_BINDING', // e.g. `[id]=\"3\"`, `[attr.colspan]=\"colspan\"`, [style.width.%]=\"100\", [@triggerName]=\"expression\", `bind-id=\"handleChange()\"`\n 'TWO_WAY_BINDING', // e.g. `[(id)]=\"id\"`, `bindon-id=\"id\"\n 'ATTRIBUTE_BINDING', // e.g. `<input required>`, `id=\"3\"`\n 'OUTPUT_BINDING' // e.g. `(idChange)=\"handleChange()\"`, `on-id=\"handleChange()\"`\n ]\n }\n ]\n }\n }\n]);\n", "import globals from 'globals';\nimport { configs, processInlineTemplates } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nimport noUnusedInstanceFieldsRule from './rules/no-unused-angular-instance-fields/no-unused-angular-instance-fields.js';\n\nconst lintSuiteAngularPlugin: Record<string, unknown> = {\n rules: {\n 'no-unused-instance-fields': noUnusedInstanceFieldsRule\n }\n};\n\nexport const angular = defineConfig([\n {\n files: ['**/*.ts'],\n extends: [...(configs.tsRecommended as Config[])],\n plugins: {\n 'lint-suite-angular': lintSuiteAngularPlugin\n },\n languageOptions: {\n globals: {\n ...globals.browser,\n ...globals.es2025,\n ...globals.node\n }\n },\n processor: processInlineTemplates,\n rules: {\n 'lint-suite-angular/no-unused-instance-fields': 'error',\n '@angular-eslint/prefer-on-push-component-change-detection': 'error', // v22: flags only explicit opt-out of OnPush (omission now means OnPush)\n '@angular-eslint/prefer-signals': 'error',\n '@angular-eslint/use-injectable-provided-in': 'error',\n '@angular-eslint/prefer-signal-model': 'error',\n '@angular-eslint/no-uncalled-signals': 'error',\n '@angular-eslint/prefer-host-metadata-property': 'error',\n '@angular-eslint/no-implicit-take-until-destroyed': 'error', // v21.2.0: Enforce explicit DestroyRef\n '@angular-eslint/no-async-lifecycle-method': 'error', // Prevent async lifecycle hooks\n '@angular-eslint/prefer-output-readonly': 'warn', // Prevent accidental reassignment\n '@angular-eslint/prefer-output-emitter-ref': 'warn', // Modern output() function over @Output()\n '@angular-eslint/sort-lifecycle-methods': 'warn', // Consistent lifecycle method ordering\n '@angular-eslint/computed-must-return': 'error', // Catch silent computed() bugs missing a return\n '@angular-eslint/no-duplicates-in-metadata-arrays': 'error', // Catch duplicate imports/providers in @Component/@NgModule\n '@angular-eslint/no-lifecycle-call': 'error', // Forbid manual this.ngOnInit() calls\n '@angular-eslint/require-lifecycle-on-prototype': 'error', // Lifecycle hooks must be methods, not arrow-fn fields\n '@angular-eslint/relative-url-prefix': 'error', // Require ./ in templateUrl/styleUrl for portability\n '@angular-eslint/use-component-selector': 'error', // All components must declare a selector\n '@angular-eslint/no-developer-preview': 'warn', // Flag APIs marked @developerPreview (no breaking-change policy)\n '@angular-eslint/no-experimental': 'warn' // Flag APIs marked @experimental\n }\n }\n]);\n", "import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nimport {\n addAngularImport,\n reportUnusedMembers\n} from './angular-class-fields.js';\nimport type {\n AngularClassNode,\n AngularImports,\n ClassEntry,\n DynamicClasses\n} from './common/no-unused-angular-instance-fields.type.js';\nimport {\n destructuredThisReads,\n isThisExpression,\n isWriteOnly\n} from './utils/typescript-field-reads.util.js';\n\ntype Options = [];\ntype MessageIds = 'unusedField' | 'unusedMethod';\ntype FunctionNode =\n | TSESTree.ArrowFunctionExpression\n | TSESTree.FunctionDeclaration\n | TSESTree.FunctionExpression;\ntype DestructuringNode =\n | TSESTree.AssignmentExpression\n | TSESTree.VariableDeclarator;\ntype RuleContext = Readonly<TSESLint.RuleContext<MessageIds, Options>>;\n\nconst createRule = ESLintUtils.RuleCreator(\n () => 'https://eslint.org/docs/latest/rules/no-unused-private-class-members'\n);\n\nconst enterClass = (\n node: AngularClassNode,\n classes: ClassEntry[],\n stack: ClassEntry[],\n thisStack: boolean[]\n): void => {\n const entry: ClassEntry = {\n node,\n reads: new Set<string>()\n };\n\n classes.push(entry);\n stack.push(entry);\n thisStack.push(true);\n};\n\nconst componentThis = (\n node: FunctionNode,\n thisStack: boolean[]\n): boolean =>\n node.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression\n ? (thisStack.at(-1) ?? false)\n : node.parent.type === TSESTree.AST_NODE_TYPES.MethodDefinition &&\n !node.parent.static;\n\nconst trackMemberRead = (\n node: TSESTree.MemberExpression,\n stack: ClassEntry[],\n thisStack: boolean[],\n dynamicClasses: DynamicClasses\n): void => {\n const current = stack.at(-1);\n\n if (!current || !thisStack.at(-1)) {\n return;\n }\n\n const receiverIsThis = isThisExpression(node.object);\n\n if (node.computed && receiverIsThis) {\n dynamicClasses.add(current);\n }\n\n if (\n receiverIsThis &&\n !node.computed &&\n node.property.type === TSESTree.AST_NODE_TYPES.Identifier &&\n !isWriteOnly(node)\n ) {\n current.reads.add(node.property.name);\n }\n};\n\nconst trackDestructuringRead = (\n node: DestructuringNode,\n stack: ClassEntry[],\n thisStack: boolean[],\n dynamicClasses: DynamicClasses\n): void => {\n const current = stack.at(-1);\n\n if (!current || !thisStack.at(-1)) {\n return;\n }\n\n const reads = destructuredThisReads(node);\n\n if (reads === undefined) {\n return;\n }\n\n if (reads === null) {\n dynamicClasses.add(current);\n return;\n }\n\n for (const name of reads) {\n current.reads.add(name);\n }\n};\n\nconst lexicalThisVisitor = (thisStack: boolean[]): TSESLint.RuleListener => ({\n FunctionDeclaration(node: TSESTree.FunctionDeclaration): void {\n thisStack.push(componentThis(node, thisStack));\n },\n FunctionExpression(node: TSESTree.FunctionExpression): void {\n thisStack.push(componentThis(node, thisStack));\n },\n ArrowFunctionExpression(node: TSESTree.ArrowFunctionExpression): void {\n thisStack.push(componentThis(node, thisStack));\n },\n 'FunctionDeclaration:exit'(): void {\n thisStack.pop();\n },\n 'FunctionExpression:exit'(): void {\n thisStack.pop();\n },\n 'ArrowFunctionExpression:exit'(): void {\n thisStack.pop();\n },\n StaticBlock(): void {\n thisStack.push(false);\n },\n 'StaticBlock:exit'(): void {\n thisStack.pop();\n },\n PropertyDefinition(node: TSESTree.PropertyDefinition): void {\n if (node.static) {\n thisStack.push(false);\n }\n },\n 'PropertyDefinition:exit'(node: TSESTree.PropertyDefinition): void {\n if (node.static) {\n thisStack.pop();\n }\n }\n});\n\nconst visitor = (\n context: RuleContext,\n imports: AngularImports,\n classes: ClassEntry[],\n stack: ClassEntry[],\n dynamicClasses: DynamicClasses\n): TSESLint.RuleListener => {\n const thisStack: boolean[] = [];\n\n return {\n ClassDeclaration(node: TSESTree.ClassDeclaration): void {\n enterClass(node, classes, stack, thisStack);\n },\n ClassExpression(node: TSESTree.ClassExpression): void {\n enterClass(node, classes, stack, thisStack);\n },\n 'ClassDeclaration:exit'(): void {\n stack.pop();\n thisStack.pop();\n },\n 'ClassExpression:exit'(): void {\n stack.pop();\n thisStack.pop();\n },\n ...lexicalThisVisitor(thisStack),\n AssignmentExpression(node: TSESTree.AssignmentExpression): void {\n trackDestructuringRead(node, stack, thisStack, dynamicClasses);\n },\n MemberExpression(node: TSESTree.MemberExpression): void {\n trackMemberRead(node, stack, thisStack, dynamicClasses);\n },\n VariableDeclarator(node: TSESTree.VariableDeclarator): void {\n trackDestructuringRead(node, stack, thisStack, dynamicClasses);\n },\n 'Program:exit'(): void {\n reportUnusedMembers(context, imports, classes, dynamicClasses);\n }\n };\n};\n\nexport default createRule<Options, MessageIds>({\n name: 'no-unused-instance-fields',\n meta: {\n type: 'problem',\n docs: {\n description:\n 'Disallow unread instance fields and methods in Angular components and directives'\n },\n messages: {\n unusedField: \"Angular instance field '{{name}}' is never read.\",\n unusedMethod: \"Angular instance method '{{name}}' is never read.\"\n },\n schema: []\n },\n defaultOptions: [],\n create(context): TSESLint.RuleListener {\n const imports: AngularImports = new Map();\n for (const node of context.sourceCode.ast.body) {\n if (node.type === TSESTree.AST_NODE_TYPES.ImportDeclaration) {\n addAngularImport(node, imports);\n }\n }\n\n if (imports.size === 0) {\n return {};\n }\n const classes: ClassEntry[] = [];\n const stack: ClassEntry[] = [];\n const dynamicClasses: DynamicClasses = new Set();\n\n return visitor(context, imports, classes, stack, dynamicClasses);\n }\n});\n", "import { TSESTree } from '@typescript-eslint/utils';\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nimport { metadataReads } from './angular-metadata-reads.js';\nimport type {\n AngularClassNode,\n AngularImport,\n AngularImports,\n ClassEntry,\n DynamicClasses\n} from './common/no-unused-angular-instance-fields.type.js';\n\nconst managedApis: Readonly<Record<string, true>> = {\n input: true,\n model: true,\n output: true\n};\n\ntype InstanceField = TSESTree.PropertyDefinition & {\n readonly key: TSESTree.Identifier;\n};\ntype InstanceMethod = TSESTree.MethodDefinition & {\n readonly key: TSESTree.Identifier;\n};\ntype RuleContext = Readonly<\n TSESLint.RuleContext<'unusedField' | 'unusedMethod', []>\n>;\n\ntype AngularClass = {\n readonly component: boolean;\n readonly metadata: TSESTree.ObjectExpression;\n};\n\ntype MemberCandidate = {\n readonly messageId: 'unusedField' | 'unusedMethod';\n readonly name: string;\n readonly node: InstanceField | InstanceMethod;\n};\n\nconst angularName = (\n node: TSESTree.Expression,\n imports: AngularImports\n): AngularImport | undefined => {\n if (node.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return imports.get(node.name);\n }\n\n if (\n node.type !== TSESTree.AST_NODE_TYPES.MemberExpression ||\n node.computed ||\n node.property.type !== TSESTree.AST_NODE_TYPES.Identifier\n ) {\n return null;\n }\n\n if (\n node.object.type === TSESTree.AST_NODE_TYPES.Identifier &&\n imports.get(node.object.name) === null\n ) {\n return node.property.name;\n }\n\n return angularName(node.object, imports);\n};\n\nconst angularClass = (\n node: AngularClassNode,\n imports: AngularImports\n): AngularClass | null => {\n for (const decorator of node.decorators) {\n if (decorator.expression.type !== TSESTree.AST_NODE_TYPES.CallExpression) {\n continue;\n }\n\n const kind = angularName(decorator.expression.callee, imports);\n const metadata = decorator.expression.arguments[0];\n\n if (\n (kind === 'Component' || kind === 'Directive') &&\n metadata?.type === TSESTree.AST_NODE_TYPES.ObjectExpression\n ) {\n return {\n component: kind === 'Component',\n metadata\n };\n }\n }\n\n return null;\n};\n\nconst isInstanceField = (node: TSESTree.ClassElement): node is InstanceField =>\n node.type === TSESTree.AST_NODE_TYPES.PropertyDefinition &&\n node.key.type === TSESTree.AST_NODE_TYPES.Identifier;\n\nconst lifecycleHooks: Readonly<Record<string, true>> = {\n ngOnChanges: true,\n ngOnInit: true,\n ngDoCheck: true,\n ngAfterContentInit: true,\n ngAfterContentChecked: true,\n ngAfterViewInit: true,\n ngAfterViewChecked: true,\n ngOnDestroy: true\n};\n\nconst isInstanceMethod = (\n node: TSESTree.ClassElement\n): node is InstanceMethod =>\n node.type === TSESTree.AST_NODE_TYPES.MethodDefinition &&\n node.key.type === TSESTree.AST_NODE_TYPES.Identifier;\n\nconst isExcludedField = (node: InstanceField, component: boolean): boolean =>\n node.static ||\n node.declare ||\n node.override ||\n node.decorators.length > 0 ||\n (!component && node.accessibility !== 'private');\n\nconst isManagedField = (\n node: InstanceField,\n imports: AngularImports\n): boolean => {\n if (node.value?.type !== TSESTree.AST_NODE_TYPES.CallExpression) {\n return false;\n }\n\n const name = angularName(node.value.callee, imports);\n\n return typeof name === 'string' && managedApis[name] === true;\n};\n\nconst field = (\n node: TSESTree.ClassElement,\n imports: AngularImports,\n component: boolean\n): MemberCandidate | null => {\n if (\n isInstanceField(node) &&\n !isExcludedField(node, component) &&\n !isManagedField(node, imports)\n ) {\n return { messageId: 'unusedField', name: node.key.name, node };\n }\n\n return null;\n};\n\nconst isExcludedMethod = (\n node: InstanceMethod,\n component: boolean\n): boolean =>\n node.static ||\n node.override ||\n node.decorators.length > 0 ||\n node.computed ||\n node.kind !== 'method' ||\n node.value.body === null ||\n lifecycleHooks[node.key.name] === true ||\n (!component && node.accessibility !== 'private');\n\nconst method = (\n node: TSESTree.ClassElement,\n component: boolean\n): MemberCandidate | null => {\n if (isInstanceMethod(node) && !isExcludedMethod(node, component)) {\n return { messageId: 'unusedMethod', name: node.key.name, node };\n }\n\n return null;\n};\n\nexport const addAngularImport = (\n node: TSESTree.ImportDeclaration,\n imports: AngularImports\n): void => {\n if (node.source.value !== '@angular/core' || node.importKind === 'type') {\n return;\n }\n\n for (const specifier of node.specifiers) {\n if (specifier.type === TSESTree.AST_NODE_TYPES.ImportNamespaceSpecifier) {\n imports.set(specifier.local.name, null);\n } else if (\n specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier &&\n specifier.importKind !== 'type'\n ) {\n const importedName =\n specifier.imported.type === TSESTree.AST_NODE_TYPES.Identifier\n ? specifier.imported.name\n : specifier.imported.value;\n\n imports.set(specifier.local.name, importedName);\n }\n }\n};\n\nexport const reportUnusedMembers = (\n context: RuleContext,\n imports: AngularImports,\n classes: ClassEntry[],\n dynamicClasses: DynamicClasses\n): void => {\n for (const entry of classes) {\n const ngClass = angularClass(entry.node, imports);\n\n if (!ngClass || dynamicClasses.has(entry)) {\n continue;\n }\n\n const members: MemberCandidate[] = [];\n\n for (const node of entry.node.body.body) {\n const candidate =\n field(node, imports, ngClass.component) ?? method(node, ngClass.component);\n\n if (candidate) {\n members.push(candidate);\n }\n }\n\n if (members.length === 0) {\n continue;\n }\n\n const unreadMembers = members.filter(\n (candidate) => !entry.reads.has(candidate.name)\n );\n\n if (unreadMembers.length === 0) {\n continue;\n }\n\n const reads = metadataReads(\n ngClass.metadata,\n ngClass.component,\n context.filename,\n unreadMembers.map((candidate) => candidate.name)\n );\n\n if (!reads) {\n continue;\n }\n\n for (const candidate of unreadMembers) {\n if (!reads.has(candidate.name)) {\n context.report({\n data: { name: candidate.name },\n messageId: candidate.messageId,\n node: candidate.node.key\n });\n }\n }\n }\n};\n", "import { readFileSync, statSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nimport {\n Lexer,\n ParseLocation,\n ParseSourceFile,\n ParseSourceSpan,\n Parser,\n R3TargetBinder,\n parseTemplate\n} from '@angular/compiler';\nimport type { DirectiveMeta } from '@angular/compiler';\nimport { TSESTree } from '@typescript-eslint/utils';\nimport { collectAngularExpressionReads } from './utils/angular-expression-reads.util.js';\n\ntype ExternalTemplateCache = {\n readonly reads: Set<string> | null;\n readonly version: string;\n};\n\nconst externalTemplates = new Map<string, ExternalTemplateCache>();\nconst parser = new Parser(new Lexer());\nconst templateBinder = new R3TargetBinder<DirectiveMeta>(null);\n\nconst text = (node: TSESTree.Node | null | undefined): string | null => {\n if (\n node?.type === TSESTree.AST_NODE_TYPES.Literal &&\n typeof node.value === 'string'\n ) {\n return node.value;\n }\n\n return node?.type === TSESTree.AST_NODE_TYPES.TemplateLiteral &&\n node.expressions.length === 0\n ? node.quasis[0].value.cooked\n : null;\n};\n\nconst templateReads = (\n template: string,\n filename: string\n): Set<string> | null => {\n try {\n const result = parseTemplate(template, filename);\n\n if (result.errors?.length) {\n return null;\n }\n\n return collectAngularExpressionReads(\n result.nodes,\n templateBinder.bind({ template: result.nodes }),\n false\n );\n } catch {\n return null;\n }\n};\n\nconst externalTemplateReads = (filename: string): Set<string> | null => {\n try {\n const stats = statSync(filename, { bigint: true });\n const version = `${stats.mtimeNs}:${stats.size}`;\n const cached = externalTemplates.get(filename);\n\n if (cached?.version === version) {\n return cached.reads;\n }\n\n const reads = templateReads(readFileSync(filename, 'utf8'), filename);\n\n externalTemplates.set(filename, { reads, version });\n return reads;\n } catch {\n return null;\n }\n};\n\nconst expressionReads = (\n expression: string,\n filename: string,\n action: boolean\n): Set<string> | null => {\n try {\n const file = new ParseSourceFile(expression, filename);\n const start = new ParseLocation(file, 0, 0, 0);\n const span = new ParseSourceSpan(start, start.moveBy(expression.length));\n const result = action\n ? parser.parseAction(expression, span, 0)\n : parser.parseBinding(expression, span, 0);\n\n if (result.errors.length > 0) {\n return null;\n }\n\n return collectAngularExpressionReads([result], undefined, action);\n } catch {\n return null;\n }\n};\n\nconst addReads = (target: Set<string>, source: Set<string> | null): boolean => {\n if (!source) {\n return false;\n }\n\n for (const name of source) {\n target.add(name);\n }\n\n return true;\n};\n\nconst key = (property: TSESTree.ObjectLiteralElement): string | null => {\n if (property.type !== TSESTree.AST_NODE_TYPES.Property || property.computed) {\n return null;\n }\n\n return property.key.type === TSESTree.AST_NODE_TYPES.Identifier\n ? property.key.name\n : text(property.key);\n};\n\nconst metadataValue = (\n metadata: TSESTree.ObjectExpression,\n name: string\n): TSESTree.Property['value'] | undefined => {\n for (const property of metadata.properties) {\n if (\n property.type === TSESTree.AST_NODE_TYPES.Property &&\n key(property) === name\n ) {\n return property.value;\n }\n }\n\n return undefined;\n};\n\nconst hostPropertyReads = (\n property: TSESTree.Property,\n reads: Set<string>,\n filename: string\n): boolean => {\n const name = key(property);\n const expression = text(property.value);\n\n if (name === null || expression === null) {\n return false;\n }\n\n if (name.startsWith('[')) {\n return addReads(reads, expressionReads(expression, filename, false));\n }\n\n if (name.startsWith('(')) {\n return addReads(reads, expressionReads(expression, filename, true));\n }\n\n return true;\n};\n\nconst hostReads = (\n host: TSESTree.Node | undefined,\n reads: Set<string>,\n filename: string\n): boolean => {\n if (!host) {\n return true;\n }\n\n if (\n host.type !== TSESTree.AST_NODE_TYPES.ObjectExpression ||\n host.properties.some((property) => key(property) === null)\n ) {\n return false;\n }\n\n for (const property of host.properties) {\n if (\n property.type !== TSESTree.AST_NODE_TYPES.Property ||\n !hostPropertyReads(property, reads, filename)\n ) {\n return false;\n }\n }\n\n return true;\n};\n\nconst inlineTemplateReads = (\n template: TSESTree.Node | undefined,\n reads: Set<string>,\n filename: string\n): boolean => {\n if (!template) {\n return true;\n }\n\n const source = text(template);\n\n return source !== null && addReads(reads, templateReads(source, filename));\n};\n\nconst externalTemplatePropertyReads = (\n templateUrl: TSESTree.Node | undefined,\n reads: Set<string>,\n filename: string\n): boolean => {\n if (!templateUrl) {\n return true;\n }\n\n const url = text(templateUrl);\n\n return (\n url !== null &&\n addReads(reads, externalTemplateReads(resolve(dirname(filename), url)))\n );\n};\n\nconst componentTemplateReads = (\n metadata: TSESTree.ObjectExpression,\n reads: Set<string>,\n filename: string\n): boolean => {\n const template = metadataValue(metadata, 'template');\n const templateUrl = metadataValue(metadata, 'templateUrl');\n\n return (\n inlineTemplateReads(template, reads, filename) &&\n externalTemplatePropertyReads(templateUrl, reads, filename)\n );\n};\n\nexport const metadataReads = (\n metadata: TSESTree.ObjectExpression,\n component: boolean,\n filename: string,\n remainingNames: string[]\n): Set<string> | null => {\n if (metadata.properties.some((property) => key(property) === null)) {\n return null;\n }\n\n const reads = new Set<string>();\n\n if (!hostReads(metadataValue(metadata, 'host'), reads, filename)) {\n return null;\n }\n\n if (\n (component && remainingNames.every((name) => reads.has(name))) ||\n !component ||\n componentTemplateReads(metadata, reads, filename)\n ) {\n return reads;\n }\n\n return null;\n};\n", "import {\n CombinedRecursiveAstVisitor,\n ImplicitReceiver,\n KeyedRead,\n PropertyRead,\n SafeKeyedRead,\n SafePropertyRead,\n ThisReceiver\n} from '@angular/compiler';\nimport type { Binary, BoundTarget, DirectiveMeta } from '@angular/compiler';\n\ntype VisitableNode = Parameters<CombinedRecursiveAstVisitor['visit']>[0];\n\nclass ReadCollector extends CombinedRecursiveAstVisitor {\n readonly reads = new Set<string>();\n\n constructor(\n private readonly boundTarget: BoundTarget<DirectiveMeta> | undefined,\n private readonly action: boolean\n ) {\n super();\n }\n\n private record(node: PropertyRead | SafePropertyRead): void {\n if (node.receiver instanceof ThisReceiver) {\n this.reads.add(node.name);\n return;\n }\n\n if (\n node.receiver instanceof ImplicitReceiver &&\n (!this.action || node.name !== '$event') &&\n !this.boundTarget?.getExpressionTarget(node)\n ) {\n this.reads.add(node.name);\n }\n }\n\n override visitBinary(node: Binary, context: unknown): unknown {\n if (node.operation !== '=') {\n return super.visitBinary(node, context);\n }\n\n if (\n node.left instanceof PropertyRead ||\n node.left instanceof SafePropertyRead ||\n node.left instanceof KeyedRead ||\n node.left instanceof SafeKeyedRead\n ) {\n this.visit(node.left.receiver);\n }\n\n if (node.left instanceof KeyedRead || node.left instanceof SafeKeyedRead) {\n this.visit(node.left.key);\n }\n\n this.visit(node.right);\n return undefined;\n }\n\n override visitPropertyRead(node: PropertyRead, context: unknown): unknown {\n this.record(node);\n return super.visitPropertyRead(node, context);\n }\n\n override visitSafePropertyRead(\n node: SafePropertyRead,\n context: unknown\n ): unknown {\n this.record(node);\n return super.visitSafePropertyRead(node, context);\n }\n}\n\nexport const collectAngularExpressionReads = (\n nodes: VisitableNode[],\n boundTarget: BoundTarget<DirectiveMeta> | undefined,\n action: boolean\n): Set<string> => {\n const collector = new ReadCollector(boundTarget, action);\n\n for (const node of nodes) {\n collector.visit(node);\n }\n\n return collector.reads;\n};\n", "import { TSESTree } from '@typescript-eslint/utils';\n\ntype TypeScriptExpressionWrapper =\n | TSESTree.TSAsExpression\n | TSESTree.TSInstantiationExpression\n | TSESTree.TSNonNullExpression\n | TSESTree.TSSatisfiesExpression\n | TSESTree.TSTypeAssertion;\n\ntype DestructuringNode =\n | TSESTree.AssignmentExpression\n | TSESTree.VariableDeclarator;\n\ntype DestructuringParts = {\n readonly pattern: TSESTree.BindingName | TSESTree.Expression;\n readonly source: TSESTree.Expression | null;\n};\n\nconst isTypeScriptExpressionWrapper = (\n node: TSESTree.Node\n): node is TypeScriptExpressionWrapper => {\n switch (node.type) {\n case TSESTree.AST_NODE_TYPES.TSAsExpression:\n case TSESTree.AST_NODE_TYPES.TSInstantiationExpression:\n case TSESTree.AST_NODE_TYPES.TSNonNullExpression:\n case TSESTree.AST_NODE_TYPES.TSSatisfiesExpression:\n case TSESTree.AST_NODE_TYPES.TSTypeAssertion:\n return true;\n default:\n return false;\n }\n};\n\nconst unwrapTypeScriptExpression = (\n node: TSESTree.Expression | null\n): TSESTree.Expression | null => {\n let current = node;\n\n while (current && isTypeScriptExpressionWrapper(current)) {\n current = current.expression;\n }\n\n return current;\n};\n\nexport const isThisExpression = (\n node: TSESTree.Expression | null\n): boolean =>\n unwrapTypeScriptExpression(node)?.type ===\n TSESTree.AST_NODE_TYPES.ThisExpression;\n\nconst isPatternTarget = (\n parent: TSESTree.Node | undefined,\n child: TSESTree.Node\n): boolean => {\n switch (parent?.type) {\n case TSESTree.AST_NODE_TYPES.ArrayPattern:\n return parent.elements.some((element) => element === child);\n case TSESTree.AST_NODE_TYPES.AssignmentPattern:\n return parent.left === child;\n case TSESTree.AST_NODE_TYPES.ObjectPattern:\n return parent.properties.some((property) => property === child);\n case TSESTree.AST_NODE_TYPES.Property:\n return (\n parent.value === child &&\n parent.parent.type === TSESTree.AST_NODE_TYPES.ObjectPattern\n );\n case TSESTree.AST_NODE_TYPES.RestElement:\n return parent.argument === child;\n default:\n return false;\n }\n};\n\nconst isSimpleAssignmentTarget = (\n parent: TSESTree.Node | undefined,\n current: TSESTree.Node\n): boolean =>\n parent?.type === TSESTree.AST_NODE_TYPES.AssignmentExpression &&\n parent.left === current &&\n parent.operator === '=';\n\nconst isLoopTarget = (\n parent: TSESTree.Node | undefined,\n current: TSESTree.Node\n): boolean =>\n (parent?.type === TSESTree.AST_NODE_TYPES.ForInStatement ||\n parent?.type === TSESTree.AST_NODE_TYPES.ForOfStatement) &&\n parent.left === current;\n\nconst isDirectWrite = (node: TSESTree.MemberExpression): boolean => {\n let current: TSESTree.Node = node;\n let parent: TSESTree.Node | undefined = node.parent;\n\n while (\n parent &&\n isTypeScriptExpressionWrapper(parent) &&\n parent.expression === current\n ) {\n current = parent;\n parent = parent.parent;\n }\n\n return (\n isSimpleAssignmentTarget(parent, current) ||\n (parent?.type === TSESTree.AST_NODE_TYPES.UnaryExpression &&\n parent.operator === 'delete')\n );\n};\n\nconst isDestructuringOrLoopTarget = (\n node: TSESTree.MemberExpression\n): boolean => {\n let current: TSESTree.Node = node;\n let parent: TSESTree.Node | undefined = node.parent;\n let patternTarget = false;\n\n while (parent) {\n const wrapper =\n isTypeScriptExpressionWrapper(parent) && parent.expression === current;\n const pattern = isPatternTarget(parent, current);\n\n if (!wrapper && !pattern) {\n break;\n }\n\n if (pattern) {\n patternTarget = true;\n }\n\n current = parent;\n parent = parent.parent;\n }\n\n return (\n (patternTarget && isSimpleAssignmentTarget(parent, current)) ||\n isLoopTarget(parent, current)\n );\n};\n\nexport const isWriteOnly = (node: TSESTree.MemberExpression): boolean =>\n isDirectWrite(node) || isDestructuringOrLoopTarget(node);\n\nconst destructuringParts = (\n node: DestructuringNode\n): DestructuringParts | null => {\n if (node.type === TSESTree.AST_NODE_TYPES.VariableDeclarator) {\n return { pattern: node.id, source: node.init };\n }\n\n if (node.operator === '=') {\n return { pattern: node.left, source: node.right };\n }\n\n return null;\n};\n\nconst propertyName = (\n property: TSESTree.Property | TSESTree.RestElement\n): string | null => {\n if (\n property.type !== TSESTree.AST_NODE_TYPES.Property ||\n property.computed\n ) {\n return null;\n }\n\n if (property.key.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return property.key.name;\n }\n\n return property.key.type === TSESTree.AST_NODE_TYPES.Literal &&\n typeof property.key.value === 'string'\n ? property.key.value\n : null;\n};\n\nexport const destructuredThisReads = (\n node: DestructuringNode\n): string[] | null | undefined => {\n const parts = destructuringParts(node);\n\n if (\n !parts ||\n parts.pattern.type !== TSESTree.AST_NODE_TYPES.ObjectPattern ||\n !isThisExpression(parts.source)\n ) {\n return undefined;\n }\n\n const reads: string[] = [];\n\n for (const property of parts.pattern.properties) {\n const name = propertyName(property);\n\n if (name === null) {\n return null;\n }\n\n reads.push(name);\n }\n\n return reads;\n};\n", "import { configs } from '@nx/eslint-plugin';\nimport stylistic from '@stylistic/eslint-plugin';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\n\nexport const base = defineConfig([\n { extends: [...configs['flat/base']] },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [importPluginX.flatConfigs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [stylistic.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'no-param-reassign': 'error',\n 'no-alert': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-debugger': 'error',\n eqeqeq: ['error', 'always', { null: 'ignore' }],\n curly: ['error', 'multi'],\n 'prefer-const': ['error', { destructuring: 'all' }],\n 'no-var': 'error',\n 'object-shorthand': 'error',\n 'prefer-arrow-callback': 'error',\n 'no-useless-concat': 'error',\n 'prefer-template': 'error',\n 'no-nested-ternary': 'error',\n 'no-useless-assignment': 'error', // NEW: Catch unused assignments (ESLint v9)\n 'no-object-constructor': 'error', // Disallow new Object() without arguments\n 'no-else-return': ['error', { allowElseIf: false }], // Prefer early returns\n 'no-multi-assign': 'error', // Disallow chaining assignments\n radix: 'error', // Require radix parameter for parseInt()\n yoda: 'error', // Disallow yoda conditions (`if (\"red\" === color)`)\n complexity: ['warn', 10], // Warn if function complexity is high\n 'max-depth': ['warn', 4], // Warn on deeply nested blocks\n 'max-lines-per-function': [\n 'warn',\n { max: 50, skipBlankLines: true, skipComments: true }\n ], // Warn on long functions\n 'max-params': ['warn', 4], // Warn on functions with many parameters\n 'no-lonely-if': 'error', // Disallow if statements as the only statement in an else block\n 'grouped-accessor-pairs': ['error', 'getBeforeSet'], // Enforce consistency for getters/setters\n 'class-methods-use-this': 'error',\n 'no-underscore-dangle': 'error',\n 'max-len': [\n 'error',\n {\n code: 135,\n ignoreComments: true\n }\n ],\n 'spaced-comment': [\n 2,\n 'always',\n {\n block: {\n exceptions: ['*']\n }\n }\n ],\n '@stylistic/padding-line-between-statements': [\n 'error',\n {\n blankLine: 'always',\n prev: 'export',\n next: ['export', 'const']\n },\n {\n blankLine: 'always',\n prev: ['const', 'let', 'var'],\n next: '*'\n },\n {\n blankLine: 'any',\n prev: ['const', 'let', 'var'],\n next: ['const', 'let', 'var']\n },\n {\n blankLine: 'always',\n prev: '*',\n next: [\n 'for',\n 'if',\n 'return',\n 'throw',\n 'switch',\n 'try',\n 'class',\n 'function'\n ]\n }\n ],\n '@stylistic/comma-dangle': ['error', 'never'],\n '@stylistic/indent': [\n 'error',\n 2,\n {\n offsetTernaryExpressions: true,\n SwitchCase: 1,\n ignoredNodes: [\n 'TSTypeParameterInstantiation',\n 'FunctionExpression > .params > :matches(Decorator, :not(:first-child))'\n ]\n }\n ],\n 'sort-imports': [\n 'error',\n {\n ignoreCase: false,\n ignoreDeclarationSort: true,\n ignoreMemberSort: false,\n memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],\n allowSeparatedGroups: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts',\n '**/*.html'\n ],\n rules: {\n 'max-lines': [\n 'error',\n {\n max: 150,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n 'max-lines-per-function': 'off',\n complexity: ['warn', { max: 3 }],\n 'max-lines': [\n 'error',\n {\n max: 300,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n 'max-classes-per-file': 'off'\n }\n },\n {\n files: ['**/*.state.ts'],\n rules: {\n 'class-methods-use-this': 'off'\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const javascript = defineConfig({\n files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],\n extends: [...(configs['flat/javascript'] as Config[])]\n});\n", "import jsonPlugin from '@eslint/json';\nimport { defineConfig } from 'eslint/config';\n\nexport const json = defineConfig([\n {\n plugins: { json: jsonPlugin }\n },\n {\n files: ['**/*.json'],\n language: 'json/json',\n extends: [jsonPlugin.configs.recommended]\n }\n]);\n", "import eslintConfigPrettier from 'eslint-config-prettier';\nimport { defineConfig } from 'eslint/config';\n\nexport const prettier = defineConfig([eslintConfigPrettier]);\n", "import rxjsEslint from '@smarttools/eslint-plugin-rxjs';\nimport { defineConfig } from 'eslint/config';\n\nexport const rxjs = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n extends: [rxjsEslint.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n rxjs: rxjsEslint\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'rxjs/prefer-observer': 'error',\n 'rxjs/finnish': 'warn',\n 'rxjs/no-ignored-subscription': 'warn',\n 'rxjs/no-ignored-error': 'warn',\n 'rxjs/no-unsafe-switchmap': 'error',\n 'rxjs/no-unsafe-takeuntil': 'error',\n 'rxjs/no-unsafe-catch': 'error',\n 'rxjs/no-unsafe-first': 'error',\n 'rxjs/no-topromise': 'error',\n 'rxjs/throw-error': 'error',\n 'rxjs/no-async-subscribe': 'off',\n 'rxjs/no-exposed-subjects': 'error', // Enforce subject encapsulation\n 'rxjs/no-cyclic-action': 'error', // Prevent infinite loops in NgRx effects\n 'rxjs/no-subscribe-handlers': 'warn' // Prefer observer objects (complements prefer-observer)\n }\n },\n {\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\n rules: {\n 'rxjs/no-ignored-subscription': 'off',\n 'rxjs/no-subscribe-handlers': 'off'\n }\n }\n]);\n", "import storybookEslint from 'eslint-plugin-storybook';\nimport { defineConfig } from 'eslint/config';\n\nexport const storybook = defineConfig([\n {\n ignores: ['!.storybook'],\n files: ['**/*.stories.ts'],\n extends: [storybookEslint.configs['flat/recommended']],\n rules: {\n 'storybook/csf-component': 'warn', // Ensure component property is set\n 'storybook/no-stories-of': 'error' // Prevent deprecated storiesOf API\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nimport explicitAccessibilityRule from './rules/explicit-accessibility.js';\n\nconst localTypescriptRules: Record<string, unknown> = {\n rules: {\n 'explicit-accessibility': explicitAccessibilityRule\n }\n};\n\nexport const typescript = defineConfig([\n // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n extends: [\n importPluginX.flatConfigs.typescript,\n ...(configs['flat/typescript'] as Config[])\n ]\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n plugins: { local: localTypescriptRules },\n rules: {\n 'local/explicit-accessibility': 'error',\n '@typescript-eslint/explicit-member-accessibility': 'error',\n '@typescript-eslint/explicit-function-return-type': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-unused-vars': 'error',\n '@typescript-eslint/no-use-before-define': 'error',\n\n // A. Eliminating `any` (already covered by strict-type-checked, but explicit for clarity)\n '@typescript-eslint/no-explicit-any': 'error',\n '@typescript-eslint/no-unsafe-assignment': 'error',\n '@typescript-eslint/no-unsafe-call': 'error',\n '@typescript-eslint/no-unsafe-member-access': 'error',\n '@typescript-eslint/no-unsafe-return': 'error',\n '@typescript-eslint/no-unsafe-argument': 'error',\n\n // New v8 type-safety rules (replacements for deprecated ban-types)\n '@typescript-eslint/no-empty-object-type': 'error', // Bans confusing {} type\n '@typescript-eslint/no-unsafe-function-type': 'error', // Bans Function type\n '@typescript-eslint/no-wrapper-object-types': 'error', // Bans Number, String, Boolean wrappers\n\n // B. Explicit Annotations (partially covered, explicit module boundaries is key)\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n // Consider enabling if maximum explicitness is desired, even if verbose:\n\n // C. Null/Undefined Safety (Requires strictNullChecks)\n '@typescript-eslint/no-non-null-assertion': 'error',\n '@typescript-eslint/prefer-nullish-coalescing': 'error',\n '@typescript-eslint/prefer-optional-chain': 'error',\n\n // D. Promise Handling (Supplementing plugin:promise/recommended)\n '@typescript-eslint/no-floating-promises': [\n 'error',\n { ignoreVoid: true }\n ],\n '@typescript-eslint/no-misused-promises': 'warn', // Already in recommended-type-checked\n '@typescript-eslint/promise-function-async': 'error',\n '@typescript-eslint/await-thenable': 'error', // Already in recommended-type-checked\n\n // E. Best Practices & Potential Errors (Some covered by presets, fine-tuning here)\n '@typescript-eslint/no-inferrable-types': 'warn', // Keep as warn or disable if inference is preferred\n '@typescript-eslint/no-require-imports': 'error', // Use ES modules (replaces deprecated no-var-requires)\n '@typescript-eslint/only-throw-error': 'error', // Replaces deprecated no-throw-literal\n '@typescript-eslint/no-array-delete': 'error', // Prevents delete arr[0]\n '@typescript-eslint/return-await': ['error', 'in-try-catch'], // Better stack traces in try/catch\n '@typescript-eslint/require-await': 'error',\n '@typescript-eslint/restrict-template-expressions': [\n 'error',\n { allowNumber: true, allowBoolean: true }\n ], // Allow numbers/booleans in templates\n '@typescript-eslint/restrict-plus-operands': 'error', // Enforce consistent types for '+'\n '@typescript-eslint/prefer-as-const': 'error',\n '@typescript-eslint/no-shadow': 'error',\n '@typescript-eslint/switch-exhaustiveness-check': 'error', // Ensure switch on unions is exhaustive\n '@typescript-eslint/no-unused-expressions': [\n 'error',\n { allowShortCircuit: true, allowTernary: true }\n ],\n '@typescript-eslint/no-useless-constructor': 'error',\n '@typescript-eslint/dot-notation': ['error', { allowKeywords: true }], // Prefer dot notation where possible\n\n // Strict type-checked rules\n '@typescript-eslint/no-unnecessary-condition': 'error', // Catches always-true/false conditions\n '@typescript-eslint/no-confusing-void-expression': [\n 'error',\n { ignoreArrowShorthand: true, ignoreVoidOperator: true }\n ], // Prevent confusing void usage\n '@typescript-eslint/no-dynamic-delete': 'error', // Use Map instead of delete obj[key]\n '@typescript-eslint/no-extraneous-class': [\n 'error',\n { allowWithDecorator: true }\n ], // Allow Angular classes\n '@typescript-eslint/no-invalid-void-type': 'error', // Restrict void to return types\n '@typescript-eslint/unified-signatures': 'error', // Merge overloads where possible\n '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error', // Forbids foo! ?? bar\n\n // Stylistic type-checked rules\n '@typescript-eslint/prefer-find': 'error', // Use find() instead of filter()[0]\n '@typescript-eslint/prefer-for-of': 'error', // Modern iteration\n '@typescript-eslint/prefer-includes': 'error', // indexOf() \u2192 includes()\n '@typescript-eslint/prefer-string-starts-ends-with': 'error', // Modern string methods\n '@typescript-eslint/prefer-regexp-exec': 'error', // Better regex performance\n\n // F. Consistency & Style (Some covered by stylistic-type-checked)\n '@typescript-eslint/consistent-type-assertions': [\n 'error',\n { assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }\n ],\n '@typescript-eslint/consistent-type-definitions': ['error', 'type'],\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n { prefer: 'type-imports', fixStyle: 'separate-type-imports' }\n ],\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'objectLiteralProperty',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'objectLiteralProperty',\n format: ['camelCase', 'snake_case', 'PascalCase']\n },\n {\n selector: 'parameter',\n format: ['camelCase'],\n leadingUnderscore: 'allow'\n },\n { selector: 'default', format: ['camelCase'] },\n { selector: 'variable', format: ['camelCase', 'UPPER_CASE'] },\n { selector: 'function', format: ['camelCase'] },\n { selector: 'typeLike', format: ['PascalCase'] },\n {\n selector: 'property',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'property',\n format: ['camelCase', 'PascalCase', 'snake_case']\n }\n ],\n 'import-x/order': [\n 'error',\n {\n groups: [\n 'builtin',\n 'external',\n 'internal',\n ['parent', 'sibling'],\n 'index',\n 'unknown'\n ],\n pathGroups: [\n {\n pattern: '@angular/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@nestjs/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@backend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@frontend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/frontend/**',\n group: 'internal',\n position: 'after'\n },\n {\n pattern: '@*/backend/**',\n group: 'internal',\n position: 'after'\n }\n ],\n pathGroupsExcludedImportTypes: ['builtin'],\n 'newlines-between': 'always',\n alphabetize: { order: 'asc', caseInsensitive: true }\n }\n ],\n 'import-x/no-unresolved': 'error',\n 'import-x/no-duplicates': 'error',\n 'import-x/prefer-default-export': 'off',\n 'import-x/no-useless-path-segments': ['error', { noUselessIndex: true }],\n 'import-x/newline-after-import': 'error',\n 'import-x/first': 'error',\n 'import-x/no-mutable-exports': 'error',\n 'import-x/no-self-import': 'error', // Prevents modules importing themselves\n 'import-x/no-cycle': ['error', { maxDepth: 2, ignoreExternal: true }], // Prevents circular dependencies\n 'import-x/consistent-type-specifier-style': ['error', 'prefer-top-level'], // Consistent type imports\n 'import-x/no-anonymous-default-export': 'error' // Improve code searchability\n },\n settings: {\n 'import-x/resolver-next': [\n createTypeScriptImportResolver({\n alwaysTryTypes: true\n })\n ]\n }\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n rules: {\n '@typescript-eslint/prefer-readonly': 'error'\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-extraneous-class': 'off'\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/unbound-method': 'off',\n '@typescript-eslint/consistent-type-assertions': 'off'\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n '@typescript-eslint/consistent-type-assertions': 'off',\n '@typescript-eslint/naming-convention': 'off'\n }\n }\n]);\n", "import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';\n\nconst createRule = ESLintUtils.RuleCreator(\n () => 'https://eslint.org/docs/latest/rules/no-unused-private-class-members'\n);\n\ntype AccessibilityLevel = 'public' | 'private' | 'protected';\n\ntype Options = [\n {\n defaultAccessibility?: AccessibilityLevel;\n }\n];\n\nconst defaultOptions: Options[0] = {\n defaultAccessibility: 'private'\n};\n\nconst getNodeName = (\n node: TSESTree.Node | TSESTree.Token | null | undefined\n): string => {\n if (!node) {\n return '<unknown>';\n }\n\n /*\n * MethodDefinition or PropertyDefinition (check 'key' first)\n * Note: Check 'key' before 'kind' because MethodDefinition has both\n */\n if ('key' in node && node.key) {\n if (node.key.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return node.key.name;\n }\n // Handle computed property names, private identifiers (#name), etc. if needed\n if (node.key.type === TSESTree.AST_NODE_TYPES.PrivateIdentifier) {\n return `#${node.key.name}`;\n }\n return '<computed/complex key>';\n }\n\n // Constructor specific check (if key check didn't catch it - unlikely for MethodDefinition)\n if ('kind' in node && node.kind === 'constructor') {\n return 'constructor';\n }\n\n // TSParameterProperty - handle its 'parameter' property\n if (node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty) {\n const param = node.parameter; // Assign to variable for clarity & potentially better inference\n\n // Handle different parameter kinds:\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.name;\n }\n if (param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern) {\n // Check the left side of the assignment\n if (param.left.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.left.name; // Name is on the identifier being assigned to\n }\n /*\n * Parameter is an assignment pattern with destructuring (ArrayPattern/ObjectPattern)\n * You might want more sophisticated logic here to extract a name\n */\n return '<destructured parameter>';\n }\n return '<complex parameter>';\n }\n\n return '<unknown>';\n};\n\nexport default createRule<Options, 'missingAccessibility'>({\n name: 'explicit-accessibility',\n meta: {\n type: 'suggestion',\n docs: {\n description: 'Require explicit accessibility modifiers on class members'\n },\n fixable: 'code',\n schema: [\n {\n type: 'object',\n properties: {\n defaultAccessibility: {\n type: 'string',\n enum: ['public', 'private', 'protected'],\n description: 'The accessibility modifier to add if one is missing.'\n }\n },\n additionalProperties: false\n }\n ],\n messages: {\n missingAccessibility:\n \"Class member '{{ name }}' is missing an explicit accessibility modifier (public/private/protected).\"\n }\n },\n defaultOptions: [defaultOptions],\n\n create(context, [options]) {\n const { defaultAccessibility } = { ...defaultOptions, ...options };\n const sourceCode = context.sourceCode;\n\n function checkNode(\n node:\n | TSESTree.MethodDefinition\n | TSESTree.PropertyDefinition\n | TSESTree.TSParameterProperty\n ): void {\n if (node.accessibility) {\n return; // Already has modifier\n }\n\n let reportNode: TSESTree.Node | TSESTree.Token = node;\n const name = getNodeName(node);\n // Adjust report node for better highlighting\n if (\n node.type === TSESTree.AST_NODE_TYPES.MethodDefinition ||\n node.type === TSESTree.AST_NODE_TYPES.PropertyDefinition\n ) {\n reportNode = node.key;\n } else {\n const param = node.parameter;\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n reportNode = param;\n } else if (\n param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern &&\n param.left.type === TSESTree.AST_NODE_TYPES.Identifier\n ) {\n reportNode = param.left;\n }\n // Keep reportNode as the TSParameterProperty node itself if param isn't simple identifier\n }\n\n context.report({\n node: reportNode ?? node,\n messageId: 'missingAccessibility',\n data: { name },\n fix(fixer) {\n let insertText = `${defaultAccessibility} `;\n\n let tokenToInsertBefore: TSESTree.Token | null;\n if (node.decorators.length > 0) {\n const lastDecorator = node.decorators[node.decorators.length - 1];\n tokenToInsertBefore = sourceCode.getTokenAfter(lastDecorator);\n } else {\n tokenToInsertBefore = sourceCode.getFirstToken(node);\n }\n\n // Parameter properties need special handling if they also have 'readonly'\n if (\n node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty &&\n node.readonly\n ) {\n // If readonly exists without accessibility, insert accessibility *before* readonly\n const firstToken = sourceCode.getFirstToken(node);\n if (firstToken?.value === 'readonly') {\n // double check it's the readonly token\n tokenToInsertBefore = firstToken;\n }\n // If insertion point wasn't decorators, use first token (which should be readonly)\n }\n\n if (!tokenToInsertBefore) return null;\n\n /*\n * If the token immediately after the insertion point isn't whitespace, add a space.\n * (Handles case where tokenToInsertBefore is the last decorator token)\n */\n const tokenAfterInsertion = sourceCode.getTokenAfter(\n tokenToInsertBefore,\n { includeComments: false }\n );\n const textBetween = sourceCode.text.slice(\n tokenToInsertBefore.range[1],\n tokenAfterInsertion?.range[0]\n );\n if (!/^\\s/.test(textBetween)) {\n insertText = ` ${insertText}`; // Add leading space if needed after decorator\n }\n\n return fixer.insertTextBefore(tokenToInsertBefore, insertText);\n }\n });\n }\n\n return {\n MethodDefinition(node: TSESTree.MethodDefinition): void {\n checkNode(node);\n },\n\n PropertyDefinition(node: TSESTree.PropertyDefinition): void {\n checkNode(node);\n },\n\n TSParameterProperty(node: TSESTree.TSParameterProperty): void {\n checkNode(node);\n }\n };\n }\n});\n", "import vitestEslint from '@vitest/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\n\nconst vitestPlugin: Record<string, object> = {\n vitest: vitestEslint\n};\n\nexport const vitest = defineConfig([\n {\n files: ['**/*.spec.ts', '**/*.spec.js', '**/*.test.ts', '**/*.test.js'],\n plugins: vitestPlugin,\n rules: {\n ...vitestEslint.configs.recommended.rules,\n 'vitest/max-nested-describe': ['error', { max: 3 }],\n // Matcher improvements\n 'vitest/prefer-to-be': 'error',\n 'vitest/prefer-to-contain': 'error',\n 'vitest/prefer-to-have-length': 'error',\n 'vitest/prefer-comparison-matcher': 'error',\n 'vitest/prefer-strict-equal': 'warn',\n // Test quality\n 'vitest/prefer-spy-on': 'error',\n 'vitest/prefer-hooks-on-top': 'error',\n 'vitest/prefer-each': 'warn',\n 'vitest/no-test-return-statement': 'error',\n 'vitest/prefer-mock-promise-shorthand': 'error'\n }\n }\n]);\n", "import playwrightEslint from 'eslint-plugin-playwright';\nimport { defineConfig } from 'eslint/config';\n\nexport const playwright = defineConfig([\n {\n ...playwrightEslint.configs['flat/recommended'],\n files: ['**/*.e2e.ts', '**/*.e2e.js'],\n rules: {\n ...playwrightEslint.configs['flat/recommended'].rules,\n // Locator best practices\n 'playwright/prefer-locator': 'error',\n 'playwright/prefer-native-locators': 'error',\n 'playwright/no-nth-methods': 'warn',\n // Matcher improvements\n 'playwright/prefer-to-be': 'error',\n 'playwright/prefer-to-have-count': 'error',\n 'playwright/prefer-to-have-length': 'error',\n 'playwright/prefer-comparison-matcher': 'error',\n // Test structure\n 'playwright/prefer-hooks-on-top': 'error',\n 'playwright/require-top-level-describe': 'warn'\n }\n }\n]);\n", "import boundariesPlugin from 'eslint-plugin-boundaries';\nimport { defineConfig } from 'eslint/config';\n\nexport const boundaries = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n boundaries: boundariesPlugin\n },\n settings: {\n 'boundaries/elements': [\n {\n type: 'feature',\n pattern: '**/feature/**'\n },\n {\n type: 'data-access',\n pattern: '**/data-access/**'\n },\n {\n type: 'domain-logic',\n pattern: '**/domain-logic/**'\n },\n {\n type: 'ui',\n pattern: '**/ui/**'\n },\n {\n type: 'common',\n pattern: '**/common/**'\n },\n {\n type: 'utils',\n pattern: '**/utils/**'\n }\n ],\n 'import/resolver': {\n typescript: {\n alwaysTryTypes: true\n }\n }\n },\n rules: {\n ...boundariesPlugin.configs.recommended.rules,\n 'boundaries/dependencies': [\n 'error',\n {\n default: 'disallow',\n message:\n '{{to.element.types}} is not allowed to be imported in {{from.element.types}}',\n policies: [\n {\n from: { element: { type: 'feature' } },\n allow: [\n { to: { element: { type: 'feature' } } },\n { to: { element: { type: 'ui' } } },\n { to: { element: { type: 'domain-logic' } } },\n { to: { element: { type: 'utils' } } },\n { to: { element: { type: 'common' } } }\n ]\n },\n {\n from: { element: { type: 'domain-logic' } },\n allow: [\n { to: { element: { type: 'domain-logic' } } },\n { to: { element: { type: 'data-access' } } },\n { to: { element: { type: 'utils' } } },\n { to: { element: { type: 'common' } } }\n ]\n },\n {\n from: { element: { type: 'data-access' } },\n allow: [\n { to: { element: { type: 'data-access' } } },\n { to: { element: { type: 'utils' } } },\n { to: { element: { type: 'common' } } }\n ]\n },\n {\n from: { element: { type: 'ui' } },\n allow: [\n { to: { element: { type: 'ui' } } },\n { to: { element: { type: 'utils' } } },\n { to: { element: { type: 'common' } } }\n ]\n },\n {\n from: { element: { type: 'utils' } },\n allow: [\n { to: { element: { type: 'utils' } } },\n { to: { element: { type: 'common' } } }\n ]\n },\n {\n from: { element: { type: 'common' } },\n allow: [{ to: { element: { type: 'common' } } }]\n }\n ]\n }\n ]\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n 'boundaries/dependencies': 'off'\n }\n }\n]);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_angular_eslint", "import_config", "import_utils", "import_utils", "import_compiler", "import_utils", "globals", "import_eslint_plugin", "import_config", "importPluginX", "stylistic", "import_eslint_plugin", "import_config", "import_config", "jsonPlugin", "import_config", "eslintConfigPrettier", "import_config", "rxjsEslint", "import_config", "storybookEslint", "import_eslint_plugin", "import_eslint_plugin_import_x", "import_config", "import_utils", "createRule", "importPluginX", "import_eslint_plugin", "import_config", "vitestEslint", "import_config", "playwrightEslint", "import_config", "boundariesPlugin"]
7
7
  }