lint-suite 2.1.0 → 2.1.1

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