lint-suite 2.1.0 → 2.2.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 (307) hide show
  1. package/CHANGELOG.md +564 -0
  2. package/README.md +226 -60
  3. package/eslint.d.ts +0 -1
  4. package/eslint.js +734 -7247
  5. package/lib/angular-template.d.ts +0 -1
  6. package/lib/angular.d.ts +0 -1
  7. package/lib/base-limits.d.ts +0 -1
  8. package/lib/base-practices.d.ts +0 -1
  9. package/lib/base-recommended.d.ts +0 -1
  10. package/lib/base.d.ts +0 -1
  11. package/lib/boundaries.d.ts +0 -1
  12. package/lib/javascript.d.ts +0 -1
  13. package/lib/json.d.ts +0 -1
  14. package/lib/line-length.const.d.ts +0 -1
  15. package/lib/playwright.d.ts +0 -1
  16. package/lib/prettier.d.ts +0 -1
  17. package/lib/rxjs.d.ts +0 -1
  18. package/lib/storybook.d.ts +0 -1
  19. package/lib/typescript-consistency.d.ts +0 -1
  20. package/lib/typescript-imports.d.ts +0 -1
  21. package/lib/typescript-local-plugin.d.ts +2 -2
  22. package/lib/typescript-overrides.d.ts +0 -1
  23. package/lib/typescript-recommended.d.ts +0 -1
  24. package/lib/typescript-safety.d.ts +0 -1
  25. package/lib/typescript.d.ts +0 -1
  26. package/lib/vitest.d.ts +0 -1
  27. package/package.json +27 -14
  28. package/prettier.d.ts +0 -1
  29. package/prettier.js +0 -1
  30. package/stylelint.d.ts +0 -1
  31. package/stylelint.js +11 -984
  32. package/eslint.d.ts.map +0 -1
  33. package/eslint.js.map +0 -7
  34. package/lib/angular-template.d.ts.map +0 -1
  35. package/lib/angular.d.ts.map +0 -1
  36. package/lib/base-limits.d.ts.map +0 -1
  37. package/lib/base-practices.d.ts.map +0 -1
  38. package/lib/base-recommended.d.ts.map +0 -1
  39. package/lib/base.d.ts.map +0 -1
  40. package/lib/boundaries.d.ts.map +0 -1
  41. package/lib/javascript.d.ts.map +0 -1
  42. package/lib/json.d.ts.map +0 -1
  43. package/lib/line-length.const.d.ts.map +0 -1
  44. package/lib/playwright.d.ts.map +0 -1
  45. package/lib/prettier.d.ts.map +0 -1
  46. package/lib/rules/arrow-body-fits-line/arrow-body-fits-line.d.ts +0 -6
  47. package/lib/rules/arrow-body-fits-line/arrow-body-fits-line.d.ts.map +0 -1
  48. package/lib/rules/chain-fits-line/chain-fits-line.d.ts +0 -6
  49. package/lib/rules/chain-fits-line/chain-fits-line.d.ts.map +0 -1
  50. package/lib/rules/chain-receiver-is-name/chain-receiver-is-name.d.ts +0 -7
  51. package/lib/rules/chain-receiver-is-name/chain-receiver-is-name.d.ts.map +0 -1
  52. package/lib/rules/common/class-usage.type.d.ts +0 -26
  53. package/lib/rules/common/class-usage.type.d.ts.map +0 -1
  54. package/lib/rules/common/file-cache.type.d.ts +0 -11
  55. package/lib/rules/common/file-cache.type.d.ts.map +0 -1
  56. package/lib/rules/common/glob-matcher.type.d.ts +0 -2
  57. package/lib/rules/common/glob-matcher.type.d.ts.map +0 -1
  58. package/lib/rules/component-metadata.d.ts +0 -3
  59. package/lib/rules/component-metadata.d.ts.map +0 -1
  60. package/lib/rules/define-plugin.util.d.ts +0 -6
  61. package/lib/rules/define-plugin.util.d.ts.map +0 -1
  62. package/lib/rules/explicit-accessibility/common/explicit-accessibility.const.d.ts +0 -6
  63. package/lib/rules/explicit-accessibility/common/explicit-accessibility.const.d.ts.map +0 -1
  64. package/lib/rules/explicit-accessibility/common/explicit-accessibility.type.d.ts +0 -17
  65. package/lib/rules/explicit-accessibility/common/explicit-accessibility.type.d.ts.map +0 -1
  66. package/lib/rules/explicit-accessibility/explicit-accessibility.d.ts +0 -7
  67. package/lib/rules/explicit-accessibility/explicit-accessibility.d.ts.map +0 -1
  68. package/lib/rules/file-cache.d.ts +0 -14
  69. package/lib/rules/file-cache.d.ts.map +0 -1
  70. package/lib/rules/max-condition-operands/max-condition-operands.d.ts +0 -10
  71. package/lib/rules/max-condition-operands/max-condition-operands.d.ts.map +0 -1
  72. package/lib/rules/no-call-in-condition/common/no-call-in-condition.const.d.ts +0 -6
  73. package/lib/rules/no-call-in-condition/common/no-call-in-condition.const.d.ts.map +0 -1
  74. package/lib/rules/no-call-in-condition/common/no-call-in-condition.type.d.ts +0 -21
  75. package/lib/rules/no-call-in-condition/common/no-call-in-condition.type.d.ts.map +0 -1
  76. package/lib/rules/no-call-in-condition/no-call-in-condition.d.ts +0 -7
  77. package/lib/rules/no-call-in-condition/no-call-in-condition.d.ts.map +0 -1
  78. package/lib/rules/no-call-in-condition/utils/call-exemptions.util.d.ts +0 -4
  79. package/lib/rules/no-call-in-condition/utils/call-exemptions.util.d.ts.map +0 -1
  80. package/lib/rules/no-call-in-condition/utils/condition-calls.util.d.ts +0 -7
  81. package/lib/rules/no-call-in-condition/utils/condition-calls.util.d.ts.map +0 -1
  82. package/lib/rules/no-grouped-condition/no-grouped-condition.d.ts +0 -7
  83. package/lib/rules/no-grouped-condition/no-grouped-condition.d.ts.map +0 -1
  84. package/lib/rules/no-inline-object-types/no-inline-object-types.d.ts +0 -6
  85. package/lib/rules/no-inline-object-types/no-inline-object-types.d.ts.map +0 -1
  86. package/lib/rules/no-inline-return-object/no-inline-return-object.d.ts +0 -6
  87. package/lib/rules/no-inline-return-object/no-inline-return-object.d.ts.map +0 -1
  88. package/lib/rules/no-nested-object-value/common/no-nested-object-value.const.d.ts +0 -5
  89. package/lib/rules/no-nested-object-value/common/no-nested-object-value.const.d.ts.map +0 -1
  90. package/lib/rules/no-nested-object-value/common/no-nested-object-value.type.d.ts +0 -7
  91. package/lib/rules/no-nested-object-value/common/no-nested-object-value.type.d.ts.map +0 -1
  92. package/lib/rules/no-nested-object-value/no-nested-object-value.d.ts +0 -7
  93. package/lib/rules/no-nested-object-value/no-nested-object-value.d.ts.map +0 -1
  94. package/lib/rules/no-nested-object-value/utils/decorator-config.util.d.ts +0 -3
  95. package/lib/rules/no-nested-object-value/utils/decorator-config.util.d.ts.map +0 -1
  96. package/lib/rules/no-spread-expression/no-spread-expression.d.ts +0 -6
  97. package/lib/rules/no-spread-expression/no-spread-expression.d.ts.map +0 -1
  98. package/lib/rules/no-unstyled-classes/common/no-unstyled-classes.type.d.ts +0 -33
  99. package/lib/rules/no-unstyled-classes/common/no-unstyled-classes.type.d.ts.map +0 -1
  100. package/lib/rules/no-unstyled-classes/no-unstyled-classes.d.ts +0 -8
  101. package/lib/rules/no-unstyled-classes/no-unstyled-classes.d.ts.map +0 -1
  102. package/lib/rules/no-unstyled-classes/styles/component-stylesheets.d.ts +0 -4
  103. package/lib/rules/no-unstyled-classes/styles/component-stylesheets.d.ts.map +0 -1
  104. package/lib/rules/no-unstyled-classes/styles/linked-stylesheets.d.ts +0 -3
  105. package/lib/rules/no-unstyled-classes/styles/linked-stylesheets.d.ts.map +0 -1
  106. package/lib/rules/no-unstyled-classes/styles/stylesheet-classes.d.ts +0 -3
  107. package/lib/rules/no-unstyled-classes/styles/stylesheet-classes.d.ts.map +0 -1
  108. package/lib/rules/no-unstyled-classes/styles/stylesheet-collection.d.ts +0 -4
  109. package/lib/rules/no-unstyled-classes/styles/stylesheet-collection.d.ts.map +0 -1
  110. package/lib/rules/no-unstyled-classes/styles/stylesheet-imports.d.ts +0 -9
  111. package/lib/rules/no-unstyled-classes/styles/stylesheet-imports.d.ts.map +0 -1
  112. package/lib/rules/no-unstyled-classes/styles/template-stylesheets.d.ts +0 -3
  113. package/lib/rules/no-unstyled-classes/styles/template-stylesheets.d.ts.map +0 -1
  114. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-discovery.d.ts +0 -5
  115. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-discovery.d.ts.map +0 -1
  116. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-scope.d.ts +0 -9
  117. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-scope.d.ts.map +0 -1
  118. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-decorator-kind.d.ts +0 -10
  119. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-decorator-kind.d.ts.map +0 -1
  120. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-directive-index.d.ts +0 -9
  121. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-directive-index.d.ts.map +0 -1
  122. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-metadata-values.d.ts +0 -12
  123. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-metadata-values.d.ts.map +0 -1
  124. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-resolved-path.d.ts +0 -3
  125. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-resolved-path.d.ts.map +0 -1
  126. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-chains.d.ts +0 -17
  127. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-chains.d.ts.map +0 -1
  128. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-resolution.d.ts +0 -7
  129. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-resolution.d.ts.map +0 -1
  130. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-reads.d.ts +0 -6
  131. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-reads.d.ts.map +0 -1
  132. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-references.d.ts +0 -5
  133. package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-references.d.ts.map +0 -1
  134. package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-index.type.d.ts +0 -53
  135. package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-index.type.d.ts.map +0 -1
  136. package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-usage.type.d.ts +0 -105
  137. package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-usage.type.d.ts.map +0 -1
  138. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-file-entry.d.ts +0 -4
  139. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-file-entry.d.ts.map +0 -1
  140. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-classes.d.ts +0 -5
  141. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-classes.d.ts.map +0 -1
  142. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-reconciliation.d.ts +0 -4
  143. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-reconciliation.d.ts.map +0 -1
  144. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-staleness.d.ts +0 -14
  145. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-staleness.d.ts.map +0 -1
  146. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-usage.d.ts +0 -18
  147. package/lib/rules/no-unused-angular-instance-fields/project-usage/project-usage.d.ts.map +0 -1
  148. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-angular-interface-methods.d.ts +0 -8
  149. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-angular-interface-methods.d.ts.map +0 -1
  150. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-assignment-pattern-elements.d.ts +0 -5
  151. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-assignment-pattern-elements.d.ts.map +0 -1
  152. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-binding-pattern-elements.d.ts +0 -6
  153. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-binding-pattern-elements.d.ts.map +0 -1
  154. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-candidate-names.d.ts +0 -4
  155. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-candidate-names.d.ts.map +0 -1
  156. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-dangling-imports.d.ts +0 -8
  157. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-dangling-imports.d.ts.map +0 -1
  158. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-destructuring-reads.d.ts +0 -4
  159. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-destructuring-reads.d.ts.map +0 -1
  160. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-reads.d.ts +0 -4
  161. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-reads.d.ts.map +0 -1
  162. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-symbol-reads.d.ts +0 -8
  163. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-symbol-reads.d.ts.map +0 -1
  164. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-type-dependencies.d.ts +0 -3
  165. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-type-dependencies.d.ts.map +0 -1
  166. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-write-targets.d.ts +0 -7
  167. package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-write-targets.d.ts.map +0 -1
  168. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/class-members.util.d.ts +0 -10
  169. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/class-members.util.d.ts.map +0 -1
  170. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/read-chain-text.util.d.ts +0 -4
  171. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/read-chain-text.util.d.ts.map +0 -1
  172. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/spec-file.util.d.ts +0 -2
  173. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/spec-file.util.d.ts.map +0 -1
  174. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/type-property-symbols.util.d.ts +0 -4
  175. package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/type-property-symbols.util.d.ts.map +0 -1
  176. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-class-fields.d.ts +0 -3
  177. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-class-fields.d.ts.map +0 -1
  178. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-expression-reads.d.ts +0 -6
  179. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-expression-reads.d.ts.map +0 -1
  180. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-imports.d.ts +0 -9
  181. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-imports.d.ts.map +0 -1
  182. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-managed-fields.d.ts +0 -5
  183. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-managed-fields.d.ts.map +0 -1
  184. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-member-candidates.d.ts +0 -6
  185. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-member-candidates.d.ts.map +0 -1
  186. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-literals.d.ts +0 -5
  187. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-literals.d.ts.map +0 -1
  188. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-reads.d.ts +0 -9
  189. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-reads.d.ts.map +0 -1
  190. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-template-parsing.d.ts +0 -4
  191. package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-template-parsing.d.ts.map +0 -1
  192. package/lib/rules/no-unused-angular-instance-fields/rule/common/no-unused-angular-instance-fields.type.d.ts +0 -55
  193. package/lib/rules/no-unused-angular-instance-fields/rule/common/no-unused-angular-instance-fields.type.d.ts.map +0 -1
  194. package/lib/rules/no-unused-angular-instance-fields/rule/no-unused-angular-instance-fields.d.ts +0 -8
  195. package/lib/rules/no-unused-angular-instance-fields/rule/no-unused-angular-instance-fields.d.ts.map +0 -1
  196. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-class-read-visitor.d.ts +0 -4
  197. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-class-read-visitor.d.ts.map +0 -1
  198. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-field-reads.d.ts +0 -8
  199. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-field-reads.d.ts.map +0 -1
  200. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-lexical-this.d.ts +0 -3
  201. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-lexical-this.d.ts.map +0 -1
  202. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-write-targets.d.ts +0 -3
  203. package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-write-targets.d.ts.map +0 -1
  204. package/lib/rules/no-unused-angular-instance-fields/utils/angular-read-target.util.d.ts +0 -4
  205. package/lib/rules/no-unused-angular-instance-fields/utils/angular-read-target.util.d.ts.map +0 -1
  206. package/lib/rules/no-unused-classes/common/no-unused-classes.type.d.ts +0 -24
  207. package/lib/rules/no-unused-classes/common/no-unused-classes.type.d.ts.map +0 -1
  208. package/lib/rules/no-unused-classes/no-unused-classes.d.ts +0 -8
  209. package/lib/rules/no-unused-classes/no-unused-classes.d.ts.map +0 -1
  210. package/lib/rules/no-unused-classes/styles/linked-templates.d.ts +0 -9
  211. package/lib/rules/no-unused-classes/styles/linked-templates.d.ts.map +0 -1
  212. package/lib/rules/no-unused-classes/styles/stylesheet-components.d.ts +0 -3
  213. package/lib/rules/no-unused-classes/styles/stylesheet-components.d.ts.map +0 -1
  214. package/lib/rules/no-unused-classes/template/template-usage.d.ts +0 -3
  215. package/lib/rules/no-unused-classes/template/template-usage.d.ts.map +0 -1
  216. package/lib/rules/no-unused-exports/common/no-unused-exports.const.d.ts +0 -7
  217. package/lib/rules/no-unused-exports/common/no-unused-exports.const.d.ts.map +0 -1
  218. package/lib/rules/no-unused-exports/common/no-unused-exports.type.d.ts +0 -78
  219. package/lib/rules/no-unused-exports/common/no-unused-exports.type.d.ts.map +0 -1
  220. package/lib/rules/no-unused-exports/disk-resolver.d.ts +0 -9
  221. package/lib/rules/no-unused-exports/disk-resolver.d.ts.map +0 -1
  222. package/lib/rules/no-unused-exports/export-index.d.ts +0 -6
  223. package/lib/rules/no-unused-exports/export-index.d.ts.map +0 -1
  224. package/lib/rules/no-unused-exports/no-unused-exports.d.ts +0 -7
  225. package/lib/rules/no-unused-exports/no-unused-exports.d.ts.map +0 -1
  226. package/lib/rules/no-unused-exports/report-unused-exports.d.ts +0 -12
  227. package/lib/rules/no-unused-exports/report-unused-exports.d.ts.map +0 -1
  228. package/lib/rules/no-unused-exports/utils/aggregate-update.util.d.ts +0 -4
  229. package/lib/rules/no-unused-exports/utils/aggregate-update.util.d.ts.map +0 -1
  230. package/lib/rules/no-unused-exports/utils/export-edges.util.d.ts +0 -5
  231. package/lib/rules/no-unused-exports/utils/export-edges.util.d.ts.map +0 -1
  232. package/lib/rules/no-unused-exports/utils/export-nodes.util.d.ts +0 -5
  233. package/lib/rules/no-unused-exports/utils/export-nodes.util.d.ts.map +0 -1
  234. package/lib/rules/no-unused-exports/utils/export-usage.util.d.ts +0 -4
  235. package/lib/rules/no-unused-exports/utils/export-usage.util.d.ts.map +0 -1
  236. package/lib/rules/no-unused-exports/utils/exported-names.util.d.ts +0 -3
  237. package/lib/rules/no-unused-exports/utils/exported-names.util.d.ts.map +0 -1
  238. package/lib/rules/no-unused-exports/utils/file-changes.util.d.ts +0 -4
  239. package/lib/rules/no-unused-exports/utils/file-changes.util.d.ts.map +0 -1
  240. package/lib/rules/no-unused-exports/utils/module-edges.util.d.ts +0 -4
  241. package/lib/rules/no-unused-exports/utils/module-edges.util.d.ts.map +0 -1
  242. package/lib/rules/no-unused-exports/utils/module-resolver.util.d.ts +0 -8
  243. package/lib/rules/no-unused-exports/utils/module-resolver.util.d.ts.map +0 -1
  244. package/lib/rules/no-unused-exports/utils/public-exports.util.d.ts +0 -3
  245. package/lib/rules/no-unused-exports/utils/public-exports.util.d.ts.map +0 -1
  246. package/lib/rules/one-line-guard/one-line-guard.d.ts +0 -10
  247. package/lib/rules/one-line-guard/one-line-guard.d.ts.map +0 -1
  248. package/lib/rules/package-version.d.ts +0 -2
  249. package/lib/rules/package-version.d.ts.map +0 -1
  250. package/lib/rules/readonly-type-properties/readonly-type-properties.d.ts +0 -7
  251. package/lib/rules/readonly-type-properties/readonly-type-properties.d.ts.map +0 -1
  252. package/lib/rules/selector-classes.d.ts +0 -7
  253. package/lib/rules/selector-classes.d.ts.map +0 -1
  254. package/lib/rules/ternary-branch-shape/ternary-branch-shape.d.ts +0 -6
  255. package/lib/rules/ternary-branch-shape/ternary-branch-shape.d.ts.map +0 -1
  256. package/lib/rules/test-file-shape/common/test-file-shape.const.d.ts +0 -14
  257. package/lib/rules/test-file-shape/common/test-file-shape.const.d.ts.map +0 -1
  258. package/lib/rules/test-file-shape/common/test-file-shape.type.d.ts +0 -7
  259. package/lib/rules/test-file-shape/common/test-file-shape.type.d.ts.map +0 -1
  260. package/lib/rules/test-file-shape/mock-exports.d.ts +0 -7
  261. package/lib/rules/test-file-shape/mock-exports.d.ts.map +0 -1
  262. package/lib/rules/test-file-shape/stub-exports.d.ts +0 -7
  263. package/lib/rules/test-file-shape/stub-exports.d.ts.map +0 -1
  264. package/lib/rules/test-file-shape/test-file-shape.d.ts +0 -7
  265. package/lib/rules/test-file-shape/test-file-shape.d.ts.map +0 -1
  266. package/lib/rules/type-placement/common/type-placement.const.d.ts +0 -5
  267. package/lib/rules/type-placement/common/type-placement.const.d.ts.map +0 -1
  268. package/lib/rules/type-placement/common/type-placement.type.d.ts +0 -7
  269. package/lib/rules/type-placement/common/type-placement.type.d.ts.map +0 -1
  270. package/lib/rules/type-placement/type-placement.d.ts +0 -7
  271. package/lib/rules/type-placement/type-placement.d.ts.map +0 -1
  272. package/lib/rules/util-purity/common/util-purity.const.d.ts +0 -10
  273. package/lib/rules/util-purity/common/util-purity.const.d.ts.map +0 -1
  274. package/lib/rules/util-purity/common/util-purity.type.d.ts +0 -7
  275. package/lib/rules/util-purity/common/util-purity.type.d.ts.map +0 -1
  276. package/lib/rules/util-purity/util-purity.d.ts +0 -7
  277. package/lib/rules/util-purity/util-purity.d.ts.map +0 -1
  278. package/lib/rules/utils/class-expression-literals.util.d.ts +0 -4
  279. package/lib/rules/utils/class-expression-literals.util.d.ts.map +0 -1
  280. package/lib/rules/utils/enclosing-statement.util.d.ts +0 -3
  281. package/lib/rules/utils/enclosing-statement.util.d.ts.map +0 -1
  282. package/lib/rules/utils/glob-matcher.util.d.ts +0 -3
  283. package/lib/rules/utils/glob-matcher.util.d.ts.map +0 -1
  284. package/lib/rules/utils/indent-of.util.d.ts +0 -3
  285. package/lib/rules/utils/indent-of.util.d.ts.map +0 -1
  286. package/lib/rules/utils/resolved-rules.util.d.ts +0 -5
  287. package/lib/rules/utils/resolved-rules.util.d.ts.map +0 -1
  288. package/lib/rules/utils/template-classes.util.d.ts +0 -5
  289. package/lib/rules/utils/template-classes.util.d.ts.map +0 -1
  290. package/lib/rules/utils/template-links.util.d.ts +0 -2
  291. package/lib/rules/utils/template-links.util.d.ts.map +0 -1
  292. package/lib/rules/utils/to-regexp.util.d.ts +0 -2
  293. package/lib/rules/utils/to-regexp.util.d.ts.map +0 -1
  294. package/lib/rxjs.d.ts.map +0 -1
  295. package/lib/storybook.d.ts.map +0 -1
  296. package/lib/typescript-consistency.d.ts.map +0 -1
  297. package/lib/typescript-imports.d.ts.map +0 -1
  298. package/lib/typescript-local-plugin.d.ts.map +0 -1
  299. package/lib/typescript-overrides.d.ts.map +0 -1
  300. package/lib/typescript-recommended.d.ts.map +0 -1
  301. package/lib/typescript-safety.d.ts.map +0 -1
  302. package/lib/typescript.d.ts.map +0 -1
  303. package/lib/vitest.d.ts.map +0 -1
  304. package/prettier.d.ts.map +0 -1
  305. package/prettier.js.map +0 -7
  306. package/stylelint.d.ts.map +0 -1
  307. package/stylelint.js.map +0 -7
package/CHANGELOG.md ADDED
@@ -0,0 +1,564 @@
1
+ ## 2.2.0 (2026-09-23)
2
+
3
+ ### 🚀 Features
4
+
5
+ - ⚠️ **eslint-plugin:** ✨ report unread inputs, outputs, and queries ([57ab38a](https://github.com/F0rty-Tw0/lint-suite/commit/57ab38a))
6
+ - **eslint-plugin:** ✨ add `allowRxjsInteropFields` option ([faa7d90](https://github.com/F0rty-Tw0/lint-suite/commit/faa7d90))
7
+
8
+ ### ⚠️ Breaking Changes
9
+
10
+ - **eslint-plugin:** ✨ report unread inputs, outputs, and queries ([57ab38a](https://github.com/F0rty-Tw0/lint-suite/commit/57ab38a))
11
+ unread inputs, outputs, and queries are now reported
12
+ by default.
13
+ Claude-Session: https://claude.ai/code/session_01GNCvxVFjNTyt6y9q281siN
14
+
15
+ ### 🧱 Updated Dependencies
16
+
17
+ - Updated eslint-plugin-no-unused-angular-instance-fields to 1.1.0
18
+
19
+ ### ❤️ Thank You
20
+
21
+ - Artiom Tofan
22
+
23
+ ## 2.1.1 (2026-09-11)
24
+
25
+ ### 🚀 Features
26
+
27
+ - ⚠️ **lint-suite:** ✨ extract custom rules into standalone packages ([b25ded1](https://github.com/F0rty-Tw0/lint-suite/commit/b25ded1))
28
+
29
+ ### ⚠️ Breaking Changes
30
+
31
+ - **lint-suite:** ✨ extract custom rules into standalone packages ([b25ded1](https://github.com/F0rty-Tw0/lint-suite/commit/b25ded1))
32
+
33
+ ### 🧱 Updated Dependencies
34
+
35
+ - Updated eslint-plugin-arrow-body-fits-line to 1.0.0
36
+ - Updated eslint-plugin-chain-fits-line to 1.0.0
37
+ - Updated eslint-plugin-chain-receiver-is-name to 1.0.0
38
+ - Updated eslint-plugin-explicit-accessibility to 1.0.0
39
+ - Updated eslint-plugin-max-condition-operands to 1.0.0
40
+ - Updated eslint-plugin-no-call-in-condition to 1.0.0
41
+ - Updated eslint-plugin-no-grouped-condition to 1.0.0
42
+ - Updated eslint-plugin-no-inline-object-types to 1.0.0
43
+ - Updated eslint-plugin-no-inline-return-object to 1.0.0
44
+ - Updated eslint-plugin-no-nested-object-value to 1.0.0
45
+ - Updated eslint-plugin-no-spread-expression to 1.0.0
46
+ - Updated eslint-plugin-no-unused-exports to 1.0.0
47
+ - Updated eslint-plugin-one-line-guard to 1.0.0
48
+ - Updated eslint-plugin-readonly-type-properties to 1.0.0
49
+ - Updated eslint-plugin-ternary-branch-shape to 1.0.0
50
+ - Updated eslint-plugin-test-file-shape to 1.0.0
51
+ - Updated eslint-plugin-type-placement to 1.0.0
52
+ - Updated eslint-plugin-util-purity to 1.0.0
53
+ - Updated eslint-plugin-no-unused-angular-instance-fields to 1.0.0
54
+ - Updated eslint-plugin-no-unstyled-classes to 1.0.0
55
+ - Updated stylelint-no-unused-classes to 1.0.0
56
+
57
+ ### ❤️ Thank You
58
+
59
+ - Artiom Tofan
60
+
61
+ # Changelog
62
+
63
+ ## [Unreleased]
64
+
65
+ ### Features
66
+
67
+ - All 21 custom rules are independently installable as scoped ESLint and
68
+ Stylelint packages. The umbrella composes them without changing existing
69
+ entrypoints, rule IDs, severity/options, or parser configuration.
70
+ - Each scoped package has an independent release version. The umbrella
71
+ adopts exact versions of affected rule packages.
72
+
73
+ ### Fixes
74
+
75
+ - Template and Stylelint disk caches are isolated by the owning public
76
+ plugin's package name and version, including when both share a directory.
77
+ - Stylelint preset dependencies resolve from the installed umbrella, including
78
+ ESM-only presets, without requiring pnpm consumers to install those
79
+ transitive configuration packages directly.
80
+
81
+ ## [2.1.0] - 2026-09-08
82
+
83
+ ### Breaking Changes
84
+
85
+ - **CommonJS entry removed**: `lint-suite/eslint`, `lint-suite/stylelint`, and `lint-suite/prettier`
86
+ ship as ESM only; the `require` export condition and the `.cjs` bundles are gone. They had not
87
+ loaded since `@eslint/json` arrived (`Cannot read properties of undefined (reading 'recommended')`),
88
+ because the bundler's CommonJS interop put `module.exports` in `.default`. A CommonJS config file
89
+ can still `require()` the ESM entries on Node 20.19+ / 22.12+.
90
+
91
+ ### Fixes
92
+
93
+ - **`local/no-unused-exports`**: a file created after an import of it was written (or imported while
94
+ still empty) stayed "never imported" in the editor until ESLint restarted. Specifiers the checker
95
+ cannot resolve are now resolved on disk, and re-read on every Program until they resolve.
96
+ - **`lint-suite-angular/no-unused-instance-fields`**: a member read through an import that resolved
97
+ to no module yet stayed "never read" in the editor until ESLint restarted. Such a file now counts
98
+ every candidate member it mentions as read, and is re-indexed on every Program until it resolves.
99
+ - **`lint-suite-angular/no-unused-instance-fields`**: a component whose `templateUrl` file did not
100
+ exist yet stayed in name fallback after the file was created; a missing template is now remembered
101
+ and re-read once it exists.
102
+ - **`lint-suite-angular-template/no-unstyled-classes`**: a partial created after the `@use`,
103
+ `@import`, or `@forward` that names it was written stayed invisible, also across restarts through
104
+ the disk cache, until the importing stylesheet changed. Import targets are now resolved on every
105
+ read; the cache keeps only the specifier.
106
+ - **Disk cache**: the `lint-suite` version that keys every entry is read from this package's own
107
+ `package.json`, not resolved from `process.cwd()`. A monorepo root that does not itself depend on
108
+ `lint-suite` used the placeholder `dev` and never invalidated on upgrade.
109
+
110
+ ## [2.0.2] - 2026-09-07
111
+
112
+ ### Features
113
+
114
+ - **`local/no-unstyled-classes`, `local/no-unused-classes`**: `routerLinkActive`, `animate.enter`, and
115
+ `animate.leave` are read as class lists, static or bound, so a class named only there counts as used.
116
+
117
+ ### Fixes
118
+
119
+ - **Disk cache**: entries are keyed by the installed `lint-suite` version, so an upgrade that changes what a parser reads (like `routerLinkActive` support) no longer serves stale results from `node_modules/.cache/lint-suite`.
120
+ - **`local/no-unused-classes`**: a rule that only wraps nested rules, like `.dialog` in
121
+ `.dialog { &__name {} }`, emits no selector of its own and is no longer reported; `.shell` in
122
+ `.shell { .inner {} }` still is, because `.shell .inner` reaches the output.
123
+ - **TypeScript**: `@typescript-eslint/no-inferrable-types` is off for `**/*.stub.ts`; `local/test-file-shape`
124
+ requires `STUB: Type` there, which the two rules otherwise fight over for literal stubs.
125
+
126
+ ## [2.0.1] - 2026-09-06
127
+
128
+ ### Fixes
129
+
130
+ - **`local/type-placement`**: `*.schema.ts` files are exempt (an inferred type lives beside its schema), and
131
+ an `import type` from a `*.schema.ts` file passes.
132
+
133
+ ## [2.0.0] - 2026-09-06
134
+
135
+ ### Breaking
136
+
137
+ - **TypeScript**: `@typescript-eslint/consistent-type-assertions` now uses `assertionStyle: 'never'`: every
138
+ `as` cast except `as const` is an error. Narrow with type predicates or fix the declared type.
139
+ - **TypeScript**: `@typescript-eslint/parameter-properties` is on, and `no-restricted-syntax` bans non-ambient
140
+ `enum` and `namespace` declarations (erasable syntax only).
141
+ - **TypeScript**: `local/no-inline-object-types` now reports every object type literal that is not the body
142
+ of a type alias (parameter and return types, generic arguments, `satisfies`, interface and class members,
143
+ `declare module` members), not only literals nested inside an alias.
144
+ - **TypeScript**: `local/readonly-type-properties` also reports and fixes `readonly T[]` and
145
+ `ReadonlyArray<T>` to `T[]`.
146
+ - **TypeScript**: sixteen new `local/*` rules are enabled in the `typescript` preset (see the README
147
+ sections "Statement shape rules", "Project layout rules", "No unused exports"): `no-call-in-condition`,
148
+ `max-condition-operands`, `no-grouped-condition`, `ternary-branch-shape`, `chain-receiver-is-name`,
149
+ `chain-fits-line`, `arrow-body-fits-line`, `no-nested-object-value`,
150
+ `no-spread-expression`, `no-inline-return-object`, `type-placement`, `util-purity`,
151
+ `test-file-shape`, `no-unused-exports`.
152
+
153
+ ### Features
154
+
155
+ - **`local/no-unused-exports`**: project-wide unused export and unused module detection built on the
156
+ program typescript-eslint already holds. No extra parsing or filesystem access; per-file results are
157
+ cached on the `ts.SourceFile`, the usage map per `ts.Program`, and re-exports (`export { x } from`,
158
+ `export * from`, `export * as ns from`) are followed to the declaring file. Names re-exported by an
159
+ entry point (`index.ts`, `public-api.ts`, ...) are public API and never reported; `*.config.mts`,
160
+ `*.config.cts`, `main.*.ts`, and `environment*.ts` are entry points too. A dynamic `import()` anywhere
161
+ in a file (lazy routes) marks its target as used.
162
+
163
+ ### Fixes
164
+
165
+ - **`local/type-placement`**: `internalPatterns` defaults to `[]`. The old alias list made every
166
+ `import type` from a workspace alias an error that Nx module boundaries left no way to satisfy.
167
+ - **`local/no-nested-object-value`**: `**/*.schema.ts` is a config file by default (zod, yup, valibot
168
+ schemas are settings literals, like a decorator argument).
169
+ - **`local/type-placement`**: an `import type` from a `common` barrel (`../common`, `./common/index.ts`,
170
+ `@shared/common`) passes; `state.type.ts` files (any prefix) are exempt.
171
+ - **TypeScript**: `@typescript-eslint/parameter-properties` is off for `**/*.action.ts`; class actions
172
+ carry their payload as constructor parameter properties.
173
+ - **Base**: the `max-lines` block no longer claims `**/*.html`. Without the `angularTemplate` preset
174
+ every HTML file in scope was parsed as JavaScript and reported a fatal parsing error; the template
175
+ preset now carries the same 150-line limit for HTML.
176
+
177
+ ## [1.6.3] - 2026-09-05
178
+
179
+ ### Features
180
+
181
+ - **Angular templates**: new rule `lint-suite-angular-template/no-unstyled-classes` (enabled in the
182
+ `angularTemplate` preset): reports a class used in a template that no stylesheet of that component selects.
183
+ It reads `class="a b"` tokens, `[class.name]` bindings, and the literal class names inside `[class]="..."`
184
+ expressions and `class="a {{ b }}"` interpolations; `[ngClass]` is not analysed. Stylesheets come from
185
+ `styleUrl`/`styleUrls`/`styles` in the `@Component` metadata, a sibling `.scss`/`.css` file, or a
186
+ `<link rel="stylesheet" href="...">` in the template itself (relative hrefs only, so a plain HTML page
187
+ without a component is judged against the stylesheets it links), and are parsed with `postcss-scss`, so `&` nesting, `@media` blocks, selector lists, and `@use`/`@import`/`@forward`
188
+ partials all resolve. Options: `ignoreClassPatterns` (default `['^(js|qa|mat|cdk|mdc)-']`) and `globalStyles`
189
+ (default `[]`). Custom elements are skipped, and a template with no parseable stylesheet reports nothing.
190
+ - **Stylelint**: new rule `lint-suite/no-unused-classes` (enabled in the `stylelint` preset): reports a class
191
+ selector in a component stylesheet that no template of that component uses. Templates come from the
192
+ `@Component` metadata beside the stylesheet (`styleUrl`/`styleUrls` match, then `templateUrl` or the inline
193
+ `template` literal), a sibling `.html` file, or any `.html` file under the working directory that links the
194
+ stylesheet with `<link rel="stylesheet" href="...">`, and a stylesheet shared by several components is judged
195
+ against all of their templates. Selectors are parsed with `postcss-scss`, so `&` nesting, `@media` blocks,
196
+ and selector lists resolve and each name is reported on the rule that declares it; `:host(...)` /
197
+ `:host-context(...)` arguments and everything after `::ng-deep` are skipped, interpolated selectors are
198
+ never reported, and `@extend .base` counts `base` as used. Unlike the ESLint dual it also reads `[ngClass]`
199
+ and does not skip custom elements. Option: `ignoreClassPatterns` (default `['^(js|qa|mat|cdk|mdc)-']`).
200
+ A stylesheet with no template, or one whose template holds a class source the rule cannot read
201
+ (`[class]="expr()"`, `{{ expr }}` as a whole token), reports nothing.
202
+ - **TypeScript**: new autofixable rule `local/one-line-guard` (enabled in the `typescript` preset with
203
+ `maxLineLength` = the preset print width, 135): a lone `return`/`throw`/`continue`/`break` guard drops its
204
+ braces when the whole `if` fits on one line.
205
+
206
+ ### Changed
207
+
208
+ - **Performance**: `no-unstyled-classes`, `no-unused-classes`, and `no-unused-instance-fields` now share one
209
+ mtime-keyed file cache for parsed `@Component` metadata, stylesheets, and templates, so a lint run only
210
+ re-parses a file that changed on disk. `no-unstyled-classes` also keeps the merged class set of a template's
211
+ stylesheet chain and only rebuilds it when one of those files changes; `no-unused-classes` caches directory
212
+ listings by directory mtime. Freshness is unchanged: every lint still stats each file it reads.
213
+ - **Performance**: parsed `@Component` metadata, stylesheet class entries, template class usage, and template
214
+ stylesheet links are also mirrored to disk in `node_modules/.cache/lint-suite/*.json` (keyed by path, mtime, and
215
+ size), so a fresh ESLint or stylelint process, a CI run, or an editor's first lint skips every parse of a file
216
+ that did not change since the last run. `LINT_SUITE_CACHE_DIR` moves the directory; `LINT_SUITE_CACHE=0`
217
+ disables the disk copy (the in-memory cache stays).
218
+ - **Performance** (`no-unused-instance-fields`, project analysis): the project index is now incremental per edit
219
+ instead of per session. Reads of `this.member` and of a lone template `member` that the class declares itself
220
+ resolve syntactically (the type checker is only asked for inherited, indexed, or chained reads); a newly seen
221
+ member name re-indexes only files that read that exact name (was: any file whose text contained it as a
222
+ substring); the directive index is rebuilt only when a selector actually changes; per-lint bookkeeping no longer
223
+ rebuilds the usage set or path-normalizes every dependency. Templates are parsed without whitespace and trivia
224
+ spans. On a synthetic 10k-file project (3,300 components): first-open index build 10.2s → 6.6s, cost added per
225
+ editor save 106ms → 7ms, and adding a field or a component no longer triggers a full re-index. Freshness: the
226
+ templates of the linted file and of every component in its folder are checked on every lint; templates in
227
+ other folders are checked on the existing throttled schedule (100× the duration of the last check).
228
+
229
+ ## [1.6.2] - 2026-09-04
230
+
231
+ ### Changed
232
+
233
+ - **Internal**: the class-usage helpers shared by `no-unstyled-classes` and `no-unused-classes` (component
234
+ metadata reading, template class collection, class-expression literals, selector class resolution, resolved
235
+ rule walking) moved to `src/lib/rules/common/`. No public API change.
236
+ - **Angular**: `lint-suite-angular/no-unused-instance-fields` project analysis now keeps an incremental
237
+ per-tsconfig index instead of rebuilding the whole project index whenever the TypeScript Program changes.
238
+ In editors every save produces a new Program; only the saved file and the files whose reads depended on it
239
+ are re-indexed, so lint feedback after a save drops from seconds to milliseconds (300-component benchmark:
240
+ 2.5 s → 0.05 s per save). Full lints are faster too: template reads are resolved with `@angular/compiler`
241
+ directly instead of running a whole-program `@angular/compiler-cli` analysis (rule time 4.0 s → 2.4 s on
242
+ the same project). Template references (`#ref`, `#ref="exportAs"`) resolve within a standalone component's
243
+ `imports` when those resolve to Program classes, and against every matching component or directive in the
244
+ Program otherwise (NgModule scopes, `hostDirectives`); extra candidates can only add reads, never reports.
245
+ See `packages/lint-suite/benchmarks/` to reproduce.
246
+ - **Angular**: `lint-suite-angular/no-unused-instance-fields` project analysis reads `template`, `templateUrl`,
247
+ `selector`, and `exportAs` given as string constants (local or imported) through the type checker instead of
248
+ failing closed on anything but a literal.
249
+ - **Angular**: `lint-suite-angular/no-unused-instance-fields` project analysis no longer goes silent for the
250
+ whole project when one file cannot be indexed. Such a file falls back to name matching (every member whose
251
+ name it mentions counts as read); set `LINT_SUITE_DEBUG=1` to see which files fell back and why.
252
+
253
+ ### Bug Fixes
254
+
255
+ - **Dependencies**: Dropped `@angular/compiler-cli`; project analysis only needs `@angular/compiler`.
256
+
257
+ ## [1.6.1] - 2026-09-02
258
+
259
+ ### Breaking Changes
260
+
261
+ - **Angular**: The `angular` preset now requires typed parser services (`projectService: true`) and runs
262
+ `lint-suite-angular/no-unused-instance-fields` in project mode. It recognizes exact reads in the configured
263
+ TypeScript/Angular Program, including external parent templates/TypeScript, subclasses, and Angular interface
264
+ implementations. Project mode now reports unused public/protected directive members. Direct rule usage remains
265
+ local by default, and `allowEffectFields` remains opt-in. After cross-file or template changes, do not use
266
+ ESLint `--cache` for correctness gates; run a full non-cached lint.
267
+
268
+ ### Changed
269
+
270
+ - **TypeScript**: `local/explicit-accessibility` auto-fix now inserts `public` by default (was `private`); `defaultAccessibility` still configures it (new value `'none'` reports without an auto-fix), and IDE suggestions offer the remaining levels.
271
+ - **TypeScript**: The `typescript` preset no longer enables `@typescript-eslint/explicit-member-accessibility` alongside `local/explicit-accessibility`; every missing modifier was reported twice.
272
+ - **Angular**: `lint-suite-angular/no-unused-instance-fields` project analysis reuses the ESLint program's parsed source files for the Angular compiler and checks external template freshness at an amortized rate instead of once per linted file, cutting project-mode overhead by roughly two thirds.
273
+
274
+ ### Features
275
+
276
+ - **Angular**: Extended `lint-suite-angular/no-unused-instance-fields` with optional project-wide TypeScript and Angular template usage analysis, auto-cleaned effect handling, and signal query recognition.
277
+ - **TypeScript**: Added `local/readonly-type-properties`, an auto-fixable rule reporting primitive-typed `type`, interface, and inline object type properties that are not marked `readonly`; array-, object-, and reference-typed properties are left untouched. Enabled in the `typescript` preset.
278
+ - **TypeScript**: Added `local/no-inline-object-types`, reporting object type literals nested inside a `type` alias declaration (only the alias's direct body may be an object literal). Enabled in the `typescript` preset.
279
+
280
+ ### Bug Fixes
281
+
282
+ - **Dependencies**: Added `@angular/compiler-cli` and pinned `@angular/compiler` for Angular project analysis.
283
+ - **Angular**: `lint-suite-angular/no-unused-instance-fields` local analysis no longer reports non-private members of `abstract` components/directives, nor `ControlValueAccessor`/`Validator`/`AsyncValidator` methods on classes that implement them.
284
+ - **TypeScript**: `local/explicit-accessibility` no longer fixes constructors to `private`, no longer reports `#private` members, no longer inserts a doubled space before fixed methods, and now reports abstract and `accessor` members.
285
+ - **Angular**: Excluded fields typed with Angular's `ComponentRef` from `no-unused-instance-fields` reports without exempting unrelated same-named local types.
286
+
287
+ ## [1.6.0] - 2026-08-30
288
+
289
+ ### Features
290
+
291
+ - **Angular**: Added `lint-suite-angular/no-unused-instance-fields` to report unused component and directive fields and methods while recognizing reads from TypeScript, templates, and host expressions.
292
+
293
+ ### Bug Fixes
294
+
295
+ - **TypeScript**: Corrected the test-file override id `@typescript-eslint/no-unbound-method` → `@typescript-eslint/unbound-method`. The mistyped (non-existent) id meant `unbound-method` was never actually disabled in `*.spec` / `*.test` / `*.e2e` files.
296
+ - **Dependencies**: Updated compatible Angular, Nx, ESLint, TypeScript ESLint, test, and Stylelint dependencies and regenerated the lockfile to remove known transitive vulnerabilities.
297
+
298
+ ## [1.5.0] - 2026-07-16
299
+
300
+ ### Breaking Changes
301
+
302
+ - **Angular**: Upgraded `angular-eslint` ^21.4.0 → ^22.1.0 (Angular 22, TypeScript 6, ESLint 9+ flat config only). Removed the `no-conflicting-lifecycle` rule from the `angular` config — the rule was deleted upstream in v22. `prefer-on-push-component-change-detection` changed semantics: it now reports only components that explicitly opt out of OnPush (omitting `changeDetection` means OnPush in Angular v22).
303
+ - **Boundaries**: Upgraded `eslint-plugin-boundaries` 6.0.2 → 7.0.2 and migrated the config to the v7 entity model: `rules` option renamed to `policies`, flat element selectors wrapped as entity selectors (`from: { element: { type: ... } }`), and the custom message migrated from the legacy `${...}` to the `{{...}}` template syntax (`{{to.element.types}}` / `{{from.element.types}}`). Report behavior is unchanged; default report messages from the plugin now include entity information, so exact-string assertions may need re-recording.
304
+ - **JSON**: Upgraded `@eslint/json` ^1.2.0 → ^2.0.1.
305
+
306
+ ### Bug Fixes
307
+
308
+ - **Stylelint**: Added an empty top-level `rules: {}` to the shared `stylelint` config. Stylelint 17 resolves the configuration for the working directory when picking a formatter, and an overrides-only config failed there with `ConfigurationError: No rules found within configuration`.
309
+ - **Dependencies**: Migrated the workspace to Nx 23.1 and bumped `@nx/eslint-plugin` 22.7.3 → 23.1.0, `typescript-eslint` and `@typescript-eslint/utils` 8.59.4 → 8.64.0, `@vitest/eslint-plugin` 1.6.18 → 1.6.23, `eslint-import-resolver-typescript` 4.4.4 → 4.4.5, `eslint-plugin-import-x` 4.16.2 → 4.17.1, `eslint-plugin-playwright` 2.10.4 → 2.10.5, `eslint-plugin-storybook` 10.4.1 → 10.5.2, `globals` 17.6.0 → 17.7.0, `stylelint` 17.12.0 → 17.14.0, and `stylelint-scss` 7.1.1 → 7.2.0.
310
+ - **Workspace**: Migrated to pnpm 11.13.1 — the removed `onlyBuiltDependencies` setting was replaced with `allowBuilds` in `pnpm-workspace.yaml`. Adopted the TypeScript 6 defaults by dropping the `ignoreDeprecations`/`esModuleInterop: false`/`types: ["*"]`/`noUncheckedSideEffectImports: false` pins the Nx migration had written into the tsconfigs (`module: nodenext` already implies `esModuleInterop`). Fixed `nx.json` `defaultBase` from `main` to the actual `master` branch. CI/release workflows: pnpm 10.33.0 → 11.13.1, `actions/checkout` v4 → v7.0.0, `actions/setup-node` v4 → v7.0.0, `pnpm/action-setup` v6.0.3 → v6.0.9 (all SHA-pinned).
311
+
312
+ ## [1.4.0] - 2026-06-16
313
+
314
+ ### Features
315
+
316
+ - **Stylelint**: Added a shared `stylelint` config as a named export on subpath `lint-suite/stylelint` (`import { stylelint } from 'lint-suite/stylelint'`) for SCSS — extends `stylelint-config-standard`, `stylelint-config-standard-scss`, `stylelint-config-recess-order` with BEM selector enforcement, scoped to `**/*.scss`.
317
+ - **Prettier**: Added a shared `prettier` config as a named export on subpath `lint-suite/prettier` (`import { prettier } from 'lint-suite/prettier'`) with the suite's house formatting defaults and Angular/HTML template overrides.
318
+
319
+ ### Breaking Changes
320
+
321
+ - **ESLint**: Moved all ESLint configs to the `lint-suite/eslint` subpath; the root `lint-suite` import no longer exports them. Update imports to `import { recommended } from 'lint-suite/eslint'`.
322
+ - **Jest**: Removed the `jest` config module and the `eslint-plugin-jest` dependency. The `jest` export is gone and `recommended` no longer applies Jest rules to `**/*.spec.{ts,js}`. Consumers relying on Jest linting should use the `vitest` config or pin `lint-suite@1.3.11`.
323
+
324
+ ## [1.3.11] - 2026-05-25
325
+
326
+ ### Features
327
+
328
+ - **Angular**: Downgraded `no-developer-preview` and `no-experimental` from `error` to `warn` so consumers can adopt Angular preview/experimental APIs without disabling the rules.
329
+
330
+ ### Bug Fixes
331
+
332
+ - **Boundaries**: Migrated config to `eslint-plugin-boundaries` v6. Renamed `boundaries/element-types` to `boundaries/dependencies` and converted legacy string selectors to object-based form (`from: { type: ... }`, `allow: [{ to: { type: ... } }]`). Silences the v5→v6 deprecation warnings.
333
+ - **Dependencies**: Bumped `@nx/eslint-plugin` 22.7.1 → 22.7.3, `@typescript-eslint/utils` and `typescript-eslint` 8.59.2 → 8.59.4, `@vitest/eslint-plugin` 1.6.16 → 1.6.18, `eslint-plugin-playwright` 2.10.2 → 2.10.4, `eslint-plugin-storybook` 10.3.6 → 10.4.1, `angular-eslint` ^21.3.1 → ^21.4.0, and `eslint` ^10.3.0 → ^10.4.0.
334
+
335
+ ## [1.3.10] - 2026-05-07
336
+
337
+ ### Breaking Changes
338
+
339
+ - **JSON**: Replaced `eslint-plugin-json` with the official `@eslint/json` plugin. `eslint-plugin-json@4` is incompatible with ESLint 10 (uses removed `context.getFilename()` API). Consumers using the `json` config module continue to get `**/*.json` and `**/tsconfig*.json` / `**/.vscode/*.json` (JSONC) coverage, now via `language: 'json/json'` and `language: 'json/jsonc'`.
340
+
341
+ ## [1.3.9] - 2026-05-07
342
+
343
+ ### Bug Fixes
344
+
345
+ - **Dependencies**: Declared `@eslint/js` as a runtime dependency. `@nx/eslint-plugin` requires it via `require('@eslint/js')` without declaring it itself, so consumers were crashing with `Cannot find module '@eslint/js'` whenever `@eslint/js` was not transitively hoisted from elsewhere.
346
+
347
+ ## [1.3.8] - 2026-05-06
348
+
349
+ ### Features
350
+
351
+ - **Angular**: Added new rules for safer components — `computed-must-return`, `no-conflicting-lifecycle`, `no-duplicates-in-metadata-arrays`, `no-lifecycle-call`, `require-lifecycle-on-prototype`, `relative-url-prefix`, `use-component-selector`, `no-developer-preview`, and `no-experimental`.
352
+ - **Angular Templates**: Added `no-non-null-assertion` to forbid `!` assertions in templates and `no-inline-styles` to forbid inline `style="..."` attributes.
353
+
354
+ ### Bug Fixes
355
+
356
+ - **TypeScript**: Fixed `explicit-member-accessibility` autofix inserting accessibility modifiers in the wrong position in some cases.
357
+
358
+ ## [1.3.7] - 2026-03-30
359
+
360
+ ### Bug Fixes
361
+
362
+ - **Imports**: Fixed import resolver failing to find `tsconfig` in consuming projects — resolver now auto-discovers tsconfig files instead of requiring a hardcoded path
363
+
364
+ ## [1.3.4] - 2026-03-30
365
+
366
+ ### Bug Fixes
367
+
368
+ - **Imports**: Fixed import resolver failing to find `tsconfig` in consuming projects when using `eslint-import-resolver-typescript`
369
+
370
+ ## [1.3.2] - 2026-02-14
371
+
372
+ ### Improvements
373
+
374
+ - **TypeScript**: Relaxed `@typescript-eslint/no-confusing-void-expression` — enabled `ignoreArrowShorthand` and `ignoreVoidOperator` options to allow common patterns like `() => void doSomething()` and shorthand arrow returns
375
+
376
+ ## 1.3.1 (2026-02-14)
377
+
378
+ ### Improvements
379
+
380
+ - **RxJS**: Disabled `rxjs/no-subscribe-handlers` in test files — subscribe handlers are acceptable in tests
381
+ - **TypeScript**: Disabled `@typescript-eslint/no-extraneous-class` in `.action.ts` files — NgRx action classes are intentionally empty
382
+
383
+ ### Removed
384
+
385
+ - **Boundaries**: Removed `boundaries/no-unknown` rule — too noisy for most projects
386
+ - **Vitest**: Removed `vitest/no-conditional-in-test` — overly strict for real-world test scenarios
387
+
388
+ ## 1.3.0 (2026-02-13)
389
+
390
+ ### Features
391
+
392
+ - **Prettier**: Added new `prettier` configuration module using `eslint-config-prettier` to disable formatting rules that conflict with Prettier. Must be last in the configuration array.
393
+ - **Angular Templates**: Added Angular 21+ control flow rules (`prefer-at-else`, `prefer-at-empty`, `prefer-contextual-for-variables`, `no-empty-control-flow`).
394
+ - **Angular Templates**: Added performance rules (`prefer-class-binding`, `prefer-static-string-properties`, `no-call-expression`, `conditional-complexity`).
395
+ - **Angular**: Added Angular 21.2.0 rules (`no-implicit-take-until-destroyed`, `no-async-lifecycle-method`, `prefer-output-readonly`, `prefer-output-emitter-ref`, `sort-lifecycle-methods`).
396
+ - **TypeScript**: Added v8 type-safety replacements for deprecated `ban-types` (`no-empty-object-type`, `no-unsafe-function-type`, `no-wrapper-object-types`).
397
+ - **TypeScript**: Added strict type-checked rules (`no-unnecessary-condition`, `no-confusing-void-expression`, `no-dynamic-delete`, `no-extraneous-class`, `no-invalid-void-type`, `unified-signatures`, `no-non-null-asserted-nullish-coalescing`).
398
+ - **TypeScript**: Added stylistic type-checked rules (`prefer-find`, `prefer-for-of`, `prefer-includes`, `prefer-string-starts-ends-with`, `prefer-regexp-exec`).
399
+ - **TypeScript**: Replaced deprecated rules — `no-var-requires` → `no-require-imports`, `no-throw-literal` → `only-throw-error`.
400
+ - **TypeScript**: Added `no-array-delete` and `return-await` (in-try-catch) for safer code patterns.
401
+ - **Imports**: Added `no-self-import`, `no-cycle` (max depth 2), `consistent-type-specifier-style`, and `no-anonymous-default-export`.
402
+ - **Imports**: Enhanced `no-useless-path-segments` with `noUselessIndex` option.
403
+ - **Jest**: Overhauled configuration — switched from `flat/all` to `flat/recommended` with curated best-practice rules (`consistent-test-it`, `prefer-comparison-matcher`, `prefer-hooks-on-top`, `no-conditional-in-test`, and more).
404
+ - **Vitest**: Expanded rule set with matcher improvements, test quality rules, and `prefer-mock-promise-shorthand`.
405
+ - **Playwright**: Expanded rule set with locator best practices (`prefer-locator`, `prefer-native-locators`), matcher improvements, and test structure rules.
406
+ - **RxJS**: Added `no-exposed-subjects`, `no-cyclic-action`, and `no-subscribe-handlers` for better observable hygiene.
407
+ - **Storybook**: Added `csf-component` and `no-stories-of` rules to enforce modern CSF patterns.
408
+ - **Boundaries**: Added `no-unknown` and `no-unknown-files` warnings for uncategorized imports/files.
409
+ - **JSON**: Added `recommended-with-comments` config for `tsconfig*.json` and `.vscode/*.json` files.
410
+ - **Base**: Added `no-useless-assignment` (ESLint v9) and `no-object-constructor` rules.
411
+
412
+ ### Breaking Changes
413
+
414
+ - **Jest**: Changed from `flat/all` to `flat/recommended` as the base preset. Projects relying on rules from `flat/all` that are not explicitly re-enabled may see rules disappear. Review the curated rule list if migrating.
415
+ - **Base**: Removed `no-return-await` (replaced by TypeScript-aware `@typescript-eslint/return-await`).
416
+ - **TypeScript**: `no-var-requires` replaced by `no-require-imports`; `no-throw-literal` replaced by `only-throw-error`.
417
+
418
+ ## 1.2.3 (2025-12-25)
419
+
420
+ ### Bug Fixes
421
+
422
+ - **Imports**: Resolved `import-x/order` configuration issue where internal aliases were misclassified as external packages.
423
+ - **Imports**: Updated `pathGroupsExcludedImportTypes` to strictly exclude `builtin` modules, ensuring correct sorting for internal path aliases.
424
+
425
+ ## 1.2.0 (2025-12-25)
426
+
427
+ ### Features
428
+
429
+ - **Angular**: Added support for Angular 19+ Signal inputs (`prefer-signal-model`).
430
+ - **Angular**: Enforced explicit signal invocation in templates (`no-uncalled-signals`).
431
+ - **Angular**: Updated host binding preference to `host` property (`prefer-host-metadata-property`).
432
+ - **Angular Templates**: Added comprehensive formatting and performance rules (`prefer-empty-for`, `no-call-expression`, `prefer-built-in-pipes`).
433
+ - **Imports**: Enhanced `sort-imports` and `import/order` configuration for better grouping ensuring local and external libraries are properly separated.
434
+ - **Boundaries**: Integrated `eslint-plugin-boundaries` to enforce architecture rules (feature, data-access, ui, domain-logic, etc.).
435
+
436
+ ### Improvements
437
+
438
+ - **General**: Configured `max-lines-per-function` to ignore comments and blank lines, providing a more accurate complexity metric.
439
+
440
+ ## 10.10.1 (2025-10-23)
441
+
442
+ - Added playwright and vitest plugins
443
+
444
+ ## 1.0.8 (2025-05-12)
445
+
446
+ - Updated dependencies to latest versions
447
+
448
+ ## 1.0.7 (2025-05-12)
449
+
450
+ - Added strict typescript support
451
+ - Added angular 20 rules
452
+
453
+ ## 1.0.4 (2025-04-02)
454
+
455
+ - Removed unnecessary Prettier plugin from the base configuration, NX handles that
456
+
457
+ ## 1.0.3 (2025-04-02)
458
+
459
+ - Fixed rxjs plugin
460
+
461
+ ## 1.0.2 (2025-04-02)
462
+
463
+ - Fixed the parser issues
464
+ - Added new @stylistic support for prettier
465
+
466
+ ## 1.0.1 (2025-03-31)
467
+
468
+ - Updated README.md to have badges
469
+
470
+ ## 1.0.0 (2025-03-31)
471
+
472
+ ### Features
473
+
474
+ #### Base Configuration
475
+
476
+ - Added flat ESLint configuration support
477
+ - Integrated stylistic plugin for consistent code formatting
478
+ - Configured import plugin with recommended settings
479
+ - Set maximum line length to 135 characters
480
+ - Limited file size to 150 lines (300 for test files)
481
+ - Implemented structured comment formatting
482
+ - Configured comma dangle rules for different contexts
483
+ - Set up proper indentation with special handling for complex cases
484
+ - Added import sorting with configurable groups
485
+ - Enforced class-methods-use-this rule
486
+
487
+ #### TypeScript Configuration
488
+
489
+ - Configured TypeScript-specific rules from @typescript-eslint
490
+ - Added explicit member accessibility requirement
491
+ - Enforced consistent type imports
492
+ - Added warnings for missing function return types
493
+ - Implemented readonly property enforcement
494
+ - Prohibited empty functions
495
+ - Added special configurations for action files (allowing multiple classes)
496
+ - Configured state files to bypass class-methods-use-this rule
497
+ - Added relaxed rules for spec files
498
+
499
+ #### Angular Configuration
500
+
501
+ - Integrated @nx/eslint-plugin angular configurations
502
+ - Enforced OnPush change detection strategy
503
+
504
+ #### Angular Template Configuration
505
+
506
+ - Comprehensive accessibility rules for templates
507
+ - Button type requirements
508
+ - Tabindex validation
509
+ - ARIA attribute validation
510
+ - Alt text requirements
511
+ - Proper element content validation
512
+ - Keyboard event handling alongside mouse events
513
+ - Table scope enforcement
514
+ - Autofocus prevention
515
+ - Removal of distracting elements
516
+ - Modern control flow syntax preference
517
+ - Self-closing tags standardization
518
+ - ngSrc usage recommendation
519
+ - Structured attributes ordering with customizable configuration
520
+
521
+ #### RxJS Configuration
522
+
523
+ - Integrated @smarttools/eslint-plugin-rxjs
524
+ - Set up Observer pattern usage enforcement
525
+ - Configured Finnish notation warnings
526
+ - Implemented error handling rules
527
+ - Added unsafe operator prevention (switchMap, takeUntil, catch, first)
528
+ - Prohibited toPromise() usage
529
+ - Enforced proper error throwing patterns
530
+ - Relaxed subscription rules for test files
531
+
532
+ #### Testing Support
533
+
534
+ - Integrated Jest plugin with recommended and style configurations
535
+ - Disabled done callback restriction
536
+
537
+ #### Additional Features
538
+
539
+ - Added JSON file linting via eslint-plugin-json
540
+ - Configured Storybook support
541
+ - Created specialized module declaration files for plugins
542
+
543
+ ### Documentation
544
+
545
+ - Added detailed type definitions for eslint plugins
546
+ - Provided comprehensive configuration examples
547
+
548
+ [Unreleased]: https://github.com/F0rty-Tw0/lint-suite/compare/v2.1.0...HEAD
549
+ [1.3.4]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.2...v1.3.4
550
+ [2.1.0]: https://github.com/F0rty-Tw0/lint-suite/compare/v2.0.2...v2.1.0
551
+ [2.0.2]: https://github.com/F0rty-Tw0/lint-suite/compare/v2.0.1...v2.0.2
552
+ [2.0.1]: https://github.com/F0rty-Tw0/lint-suite/compare/v2.0.0...v2.0.1
553
+ [2.0.0]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.6.3...v2.0.0
554
+ [1.6.3]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.6.2...v1.6.3
555
+ [1.6.2]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.6.1...v1.6.2
556
+ [1.6.1]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.6.0...v1.6.1
557
+ [1.6.0]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.5.0...v1.6.0
558
+ [1.5.0]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.4.0...v1.5.0
559
+ [1.4.0]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.11...v1.4.0
560
+ [1.3.11]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.11...v1.3.11
561
+ [1.3.10]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.9...v1.3.10
562
+ [1.3.9]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.8...v1.3.9
563
+ [1.3.8]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.7...v1.3.8
564
+ [1.3.7]: https://github.com/F0rty-Tw0/lint-suite/compare/v1.3.4...v1.3.7