lint-suite 2.0.2 → 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.
- package/CHANGELOG.md +542 -0
- package/README.md +228 -57
- package/eslint.d.ts +0 -1
- package/eslint.js +735 -7125
- package/lib/angular-template.d.ts +0 -1
- package/lib/angular.d.ts +0 -1
- package/lib/base-limits.d.ts +0 -1
- package/lib/base-practices.d.ts +0 -1
- package/lib/base-recommended.d.ts +0 -1
- package/lib/base.d.ts +0 -1
- package/lib/boundaries.d.ts +0 -1
- package/lib/javascript.d.ts +0 -1
- package/lib/json.d.ts +0 -1
- package/lib/line-length.const.d.ts +0 -1
- package/lib/playwright.d.ts +0 -1
- package/lib/prettier.d.ts +0 -1
- package/lib/rxjs.d.ts +0 -1
- package/lib/storybook.d.ts +0 -1
- package/lib/typescript-consistency.d.ts +0 -1
- package/lib/typescript-imports.d.ts +0 -1
- package/lib/typescript-local-plugin.d.ts +2 -2
- package/lib/typescript-overrides.d.ts +0 -1
- package/lib/typescript-recommended.d.ts +0 -1
- package/lib/typescript-safety.d.ts +0 -1
- package/lib/typescript.d.ts +0 -1
- package/lib/vitest.d.ts +0 -1
- package/package.json +30 -20
- package/prettier.d.ts +0 -1
- package/prettier.js +0 -1
- package/stylelint.d.ts +0 -1
- package/stylelint.js +11 -937
- package/eslint.cjs +0 -7376
- package/eslint.cjs.map +0 -7
- package/eslint.d.ts.map +0 -1
- package/eslint.js.map +0 -7
- package/lib/angular-template.d.ts.map +0 -1
- package/lib/angular.d.ts.map +0 -1
- package/lib/base-limits.d.ts.map +0 -1
- package/lib/base-practices.d.ts.map +0 -1
- package/lib/base-recommended.d.ts.map +0 -1
- package/lib/base.d.ts.map +0 -1
- package/lib/boundaries.d.ts.map +0 -1
- package/lib/javascript.d.ts.map +0 -1
- package/lib/json.d.ts.map +0 -1
- package/lib/line-length.const.d.ts.map +0 -1
- package/lib/playwright.d.ts.map +0 -1
- package/lib/prettier.d.ts.map +0 -1
- package/lib/rules/arrow-body-fits-line/arrow-body-fits-line.d.ts +0 -6
- package/lib/rules/arrow-body-fits-line/arrow-body-fits-line.d.ts.map +0 -1
- package/lib/rules/chain-fits-line/chain-fits-line.d.ts +0 -6
- package/lib/rules/chain-fits-line/chain-fits-line.d.ts.map +0 -1
- package/lib/rules/chain-receiver-is-name/chain-receiver-is-name.d.ts +0 -7
- package/lib/rules/chain-receiver-is-name/chain-receiver-is-name.d.ts.map +0 -1
- package/lib/rules/common/class-usage.type.d.ts +0 -26
- package/lib/rules/common/class-usage.type.d.ts.map +0 -1
- package/lib/rules/common/file-cache.type.d.ts +0 -11
- package/lib/rules/common/file-cache.type.d.ts.map +0 -1
- package/lib/rules/common/glob-matcher.type.d.ts +0 -2
- package/lib/rules/common/glob-matcher.type.d.ts.map +0 -1
- package/lib/rules/component-metadata.d.ts +0 -3
- package/lib/rules/component-metadata.d.ts.map +0 -1
- package/lib/rules/define-plugin.util.d.ts +0 -6
- package/lib/rules/define-plugin.util.d.ts.map +0 -1
- package/lib/rules/explicit-accessibility/common/explicit-accessibility.const.d.ts +0 -6
- package/lib/rules/explicit-accessibility/common/explicit-accessibility.const.d.ts.map +0 -1
- package/lib/rules/explicit-accessibility/common/explicit-accessibility.type.d.ts +0 -17
- package/lib/rules/explicit-accessibility/common/explicit-accessibility.type.d.ts.map +0 -1
- package/lib/rules/explicit-accessibility/explicit-accessibility.d.ts +0 -7
- package/lib/rules/explicit-accessibility/explicit-accessibility.d.ts.map +0 -1
- package/lib/rules/file-cache.d.ts +0 -14
- package/lib/rules/file-cache.d.ts.map +0 -1
- package/lib/rules/max-condition-operands/max-condition-operands.d.ts +0 -10
- package/lib/rules/max-condition-operands/max-condition-operands.d.ts.map +0 -1
- package/lib/rules/no-call-in-condition/common/no-call-in-condition.const.d.ts +0 -6
- package/lib/rules/no-call-in-condition/common/no-call-in-condition.const.d.ts.map +0 -1
- package/lib/rules/no-call-in-condition/common/no-call-in-condition.type.d.ts +0 -21
- package/lib/rules/no-call-in-condition/common/no-call-in-condition.type.d.ts.map +0 -1
- package/lib/rules/no-call-in-condition/no-call-in-condition.d.ts +0 -7
- package/lib/rules/no-call-in-condition/no-call-in-condition.d.ts.map +0 -1
- package/lib/rules/no-call-in-condition/utils/call-exemptions.util.d.ts +0 -4
- package/lib/rules/no-call-in-condition/utils/call-exemptions.util.d.ts.map +0 -1
- package/lib/rules/no-call-in-condition/utils/condition-calls.util.d.ts +0 -7
- package/lib/rules/no-call-in-condition/utils/condition-calls.util.d.ts.map +0 -1
- package/lib/rules/no-grouped-condition/no-grouped-condition.d.ts +0 -7
- package/lib/rules/no-grouped-condition/no-grouped-condition.d.ts.map +0 -1
- package/lib/rules/no-inline-object-types/no-inline-object-types.d.ts +0 -6
- package/lib/rules/no-inline-object-types/no-inline-object-types.d.ts.map +0 -1
- package/lib/rules/no-inline-return-object/no-inline-return-object.d.ts +0 -6
- package/lib/rules/no-inline-return-object/no-inline-return-object.d.ts.map +0 -1
- package/lib/rules/no-nested-object-value/common/no-nested-object-value.const.d.ts +0 -5
- package/lib/rules/no-nested-object-value/common/no-nested-object-value.const.d.ts.map +0 -1
- package/lib/rules/no-nested-object-value/common/no-nested-object-value.type.d.ts +0 -7
- package/lib/rules/no-nested-object-value/common/no-nested-object-value.type.d.ts.map +0 -1
- package/lib/rules/no-nested-object-value/no-nested-object-value.d.ts +0 -7
- package/lib/rules/no-nested-object-value/no-nested-object-value.d.ts.map +0 -1
- package/lib/rules/no-nested-object-value/utils/decorator-config.util.d.ts +0 -3
- package/lib/rules/no-nested-object-value/utils/decorator-config.util.d.ts.map +0 -1
- package/lib/rules/no-spread-expression/no-spread-expression.d.ts +0 -6
- package/lib/rules/no-spread-expression/no-spread-expression.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/common/no-unstyled-classes.type.d.ts +0 -33
- package/lib/rules/no-unstyled-classes/common/no-unstyled-classes.type.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/no-unstyled-classes.d.ts +0 -8
- package/lib/rules/no-unstyled-classes/no-unstyled-classes.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/component-stylesheets.d.ts +0 -4
- package/lib/rules/no-unstyled-classes/styles/component-stylesheets.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/linked-stylesheets.d.ts +0 -3
- package/lib/rules/no-unstyled-classes/styles/linked-stylesheets.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/stylesheet-classes.d.ts +0 -3
- package/lib/rules/no-unstyled-classes/styles/stylesheet-classes.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/stylesheet-collection.d.ts +0 -4
- package/lib/rules/no-unstyled-classes/styles/stylesheet-collection.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/stylesheet-imports.d.ts +0 -2
- package/lib/rules/no-unstyled-classes/styles/stylesheet-imports.d.ts.map +0 -1
- package/lib/rules/no-unstyled-classes/styles/template-stylesheets.d.ts +0 -3
- package/lib/rules/no-unstyled-classes/styles/template-stylesheets.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-discovery.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-discovery.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-scope.d.ts +0 -9
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-component-scope.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-decorator-kind.d.ts +0 -10
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-decorator-kind.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-directive-index.d.ts +0 -9
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-directive-index.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-metadata-values.d.ts +0 -12
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-metadata-values.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-resolved-path.d.ts +0 -3
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-resolved-path.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-chains.d.ts +0 -17
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-chains.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-resolution.d.ts +0 -7
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-read-resolution.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-reads.d.ts +0 -6
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-references.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/project-usage/angular/angular-template-references.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-index.type.d.ts +0 -52
- package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-index.type.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-usage.type.d.ts +0 -105
- package/lib/rules/no-unused-angular-instance-fields/project-usage/common/project-usage.type.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-file-entry.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-file-entry.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-classes.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-classes.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-reconciliation.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-reconciliation.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-staleness.d.ts +0 -14
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-index-staleness.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-usage.d.ts +0 -18
- package/lib/rules/no-unused-angular-instance-fields/project-usage/project-usage.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-angular-interface-methods.d.ts +0 -8
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-angular-interface-methods.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-assignment-pattern-elements.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-assignment-pattern-elements.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-binding-pattern-elements.d.ts +0 -6
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-binding-pattern-elements.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-candidate-names.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-candidate-names.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-destructuring-reads.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-destructuring-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-reads.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-symbol-reads.d.ts +0 -8
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-symbol-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-type-dependencies.d.ts +0 -3
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-type-dependencies.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-write-targets.d.ts +0 -7
- package/lib/rules/no-unused-angular-instance-fields/project-usage/typescript/typescript-write-targets.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/class-members.util.d.ts +0 -10
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/class-members.util.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/read-chain-text.util.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/read-chain-text.util.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/spec-file.util.d.ts +0 -2
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/spec-file.util.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/type-property-symbols.util.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/project-usage/utils/type-property-symbols.util.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-class-fields.d.ts +0 -3
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-class-fields.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-expression-reads.d.ts +0 -6
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-expression-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-imports.d.ts +0 -9
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-imports.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-managed-fields.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-managed-fields.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-member-candidates.d.ts +0 -6
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-member-candidates.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-literals.d.ts +0 -5
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-literals.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-reads.d.ts +0 -9
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-metadata-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-template-parsing.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/rule/angular/angular-template-parsing.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/common/no-unused-angular-instance-fields.type.d.ts +0 -55
- package/lib/rules/no-unused-angular-instance-fields/rule/common/no-unused-angular-instance-fields.type.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/no-unused-angular-instance-fields.d.ts +0 -8
- package/lib/rules/no-unused-angular-instance-fields/rule/no-unused-angular-instance-fields.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-class-read-visitor.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-class-read-visitor.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-field-reads.d.ts +0 -8
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-field-reads.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-lexical-this.d.ts +0 -3
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-lexical-this.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-write-targets.d.ts +0 -3
- package/lib/rules/no-unused-angular-instance-fields/rule/typescript/typescript-write-targets.d.ts.map +0 -1
- package/lib/rules/no-unused-angular-instance-fields/utils/angular-read-target.util.d.ts +0 -4
- package/lib/rules/no-unused-angular-instance-fields/utils/angular-read-target.util.d.ts.map +0 -1
- package/lib/rules/no-unused-classes/common/no-unused-classes.type.d.ts +0 -24
- package/lib/rules/no-unused-classes/common/no-unused-classes.type.d.ts.map +0 -1
- package/lib/rules/no-unused-classes/no-unused-classes.d.ts +0 -8
- package/lib/rules/no-unused-classes/no-unused-classes.d.ts.map +0 -1
- package/lib/rules/no-unused-classes/styles/linked-templates.d.ts +0 -9
- package/lib/rules/no-unused-classes/styles/linked-templates.d.ts.map +0 -1
- package/lib/rules/no-unused-classes/styles/stylesheet-components.d.ts +0 -3
- package/lib/rules/no-unused-classes/styles/stylesheet-components.d.ts.map +0 -1
- package/lib/rules/no-unused-classes/template/template-usage.d.ts +0 -3
- package/lib/rules/no-unused-classes/template/template-usage.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/common/no-unused-exports.const.d.ts +0 -7
- package/lib/rules/no-unused-exports/common/no-unused-exports.const.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/common/no-unused-exports.type.d.ts +0 -70
- package/lib/rules/no-unused-exports/common/no-unused-exports.type.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/export-index.d.ts +0 -6
- package/lib/rules/no-unused-exports/export-index.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/no-unused-exports.d.ts +0 -7
- package/lib/rules/no-unused-exports/no-unused-exports.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/report-unused-exports.d.ts +0 -12
- package/lib/rules/no-unused-exports/report-unused-exports.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/aggregate-update.util.d.ts +0 -4
- package/lib/rules/no-unused-exports/utils/aggregate-update.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/export-edges.util.d.ts +0 -5
- package/lib/rules/no-unused-exports/utils/export-edges.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/export-nodes.util.d.ts +0 -5
- package/lib/rules/no-unused-exports/utils/export-nodes.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/export-usage.util.d.ts +0 -4
- package/lib/rules/no-unused-exports/utils/export-usage.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/exported-names.util.d.ts +0 -3
- package/lib/rules/no-unused-exports/utils/exported-names.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/file-changes.util.d.ts +0 -4
- package/lib/rules/no-unused-exports/utils/file-changes.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/module-edges.util.d.ts +0 -4
- package/lib/rules/no-unused-exports/utils/module-edges.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/module-target.util.d.ts +0 -4
- package/lib/rules/no-unused-exports/utils/module-target.util.d.ts.map +0 -1
- package/lib/rules/no-unused-exports/utils/public-exports.util.d.ts +0 -3
- package/lib/rules/no-unused-exports/utils/public-exports.util.d.ts.map +0 -1
- package/lib/rules/one-line-guard/one-line-guard.d.ts +0 -10
- package/lib/rules/one-line-guard/one-line-guard.d.ts.map +0 -1
- package/lib/rules/readonly-type-properties/readonly-type-properties.d.ts +0 -7
- package/lib/rules/readonly-type-properties/readonly-type-properties.d.ts.map +0 -1
- package/lib/rules/selector-classes.d.ts +0 -7
- package/lib/rules/selector-classes.d.ts.map +0 -1
- package/lib/rules/ternary-branch-shape/ternary-branch-shape.d.ts +0 -6
- package/lib/rules/ternary-branch-shape/ternary-branch-shape.d.ts.map +0 -1
- package/lib/rules/test-file-shape/common/test-file-shape.const.d.ts +0 -14
- package/lib/rules/test-file-shape/common/test-file-shape.const.d.ts.map +0 -1
- package/lib/rules/test-file-shape/common/test-file-shape.type.d.ts +0 -7
- package/lib/rules/test-file-shape/common/test-file-shape.type.d.ts.map +0 -1
- package/lib/rules/test-file-shape/mock-exports.d.ts +0 -7
- package/lib/rules/test-file-shape/mock-exports.d.ts.map +0 -1
- package/lib/rules/test-file-shape/stub-exports.d.ts +0 -7
- package/lib/rules/test-file-shape/stub-exports.d.ts.map +0 -1
- package/lib/rules/test-file-shape/test-file-shape.d.ts +0 -7
- package/lib/rules/test-file-shape/test-file-shape.d.ts.map +0 -1
- package/lib/rules/type-placement/common/type-placement.const.d.ts +0 -5
- package/lib/rules/type-placement/common/type-placement.const.d.ts.map +0 -1
- package/lib/rules/type-placement/common/type-placement.type.d.ts +0 -7
- package/lib/rules/type-placement/common/type-placement.type.d.ts.map +0 -1
- package/lib/rules/type-placement/type-placement.d.ts +0 -7
- package/lib/rules/type-placement/type-placement.d.ts.map +0 -1
- package/lib/rules/util-purity/common/util-purity.const.d.ts +0 -10
- package/lib/rules/util-purity/common/util-purity.const.d.ts.map +0 -1
- package/lib/rules/util-purity/common/util-purity.type.d.ts +0 -7
- package/lib/rules/util-purity/common/util-purity.type.d.ts.map +0 -1
- package/lib/rules/util-purity/util-purity.d.ts +0 -7
- package/lib/rules/util-purity/util-purity.d.ts.map +0 -1
- package/lib/rules/utils/class-expression-literals.util.d.ts +0 -4
- package/lib/rules/utils/class-expression-literals.util.d.ts.map +0 -1
- package/lib/rules/utils/enclosing-statement.util.d.ts +0 -3
- package/lib/rules/utils/enclosing-statement.util.d.ts.map +0 -1
- package/lib/rules/utils/glob-matcher.util.d.ts +0 -3
- package/lib/rules/utils/glob-matcher.util.d.ts.map +0 -1
- package/lib/rules/utils/indent-of.util.d.ts +0 -3
- package/lib/rules/utils/indent-of.util.d.ts.map +0 -1
- package/lib/rules/utils/resolved-rules.util.d.ts +0 -5
- package/lib/rules/utils/resolved-rules.util.d.ts.map +0 -1
- package/lib/rules/utils/template-classes.util.d.ts +0 -5
- package/lib/rules/utils/template-classes.util.d.ts.map +0 -1
- package/lib/rules/utils/template-links.util.d.ts +0 -2
- package/lib/rules/utils/template-links.util.d.ts.map +0 -1
- package/lib/rules/utils/to-regexp.util.d.ts +0 -2
- package/lib/rules/utils/to-regexp.util.d.ts.map +0 -1
- package/lib/rxjs.d.ts.map +0 -1
- package/lib/storybook.d.ts.map +0 -1
- package/lib/typescript-consistency.d.ts.map +0 -1
- package/lib/typescript-imports.d.ts.map +0 -1
- package/lib/typescript-local-plugin.d.ts.map +0 -1
- package/lib/typescript-overrides.d.ts.map +0 -1
- package/lib/typescript-recommended.d.ts.map +0 -1
- package/lib/typescript-safety.d.ts.map +0 -1
- package/lib/typescript.d.ts.map +0 -1
- package/lib/vitest.d.ts.map +0 -1
- package/prettier.cjs +0 -50
- package/prettier.cjs.map +0 -7
- package/prettier.d.ts.map +0 -1
- package/prettier.js.map +0 -7
- package/stylelint.cjs +0 -968
- package/stylelint.cjs.map +0 -7
- package/stylelint.d.ts.map +0 -1
- package/stylelint.js.map +0 -7
package/README.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
# Lint Suite
|
|
1
|
+
# Lint Suite — ESLint, Stylelint, and Prettier configs for TypeScript and Angular
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`lint-suite` provides composable ESLint flat configs for JavaScript, TypeScript, Angular, RxJS, Vitest, and Playwright, plus standalone Stylelint and Prettier presets. Use the framework-agnostic `recommended` config as a baseline, then add the framework and testing configs your project needs.
|
|
4
|
+
|
|
5
|
+
The suite includes custom rules for TypeScript code structure, unused exports, unused Angular instance fields, and mismatches between Angular template classes and CSS/SCSS selectors. Each custom rule is also available as an independent `@lint-suite` package when you do not need the full preset.
|
|
6
|
+
|
|
7
|
+
## Quick navigation
|
|
8
|
+
|
|
9
|
+
- [Installation](#installation) and [ESLint flat config setup](#usage)
|
|
10
|
+
- [Available configurations](#available-configurations)
|
|
11
|
+
- [Valid and invalid TypeScript examples](#examples)
|
|
12
|
+
- [Standalone custom rule packages](#standalone-custom-rules)
|
|
13
|
+
- [Angular rule customization](#unused-angular-instance-fields)
|
|
14
|
+
- [Stylelint and Prettier presets](#stylelint-and-prettier-presets)
|
|
4
15
|
|
|
5
16
|
## Features
|
|
6
17
|
|
|
@@ -22,10 +33,45 @@ A comprehensive collection of ESLint Flat configurations for modern web applicat
|
|
|
22
33
|
pnpm add -D lint-suite
|
|
23
34
|
```
|
|
24
35
|
|
|
36
|
+
## Standalone custom rules
|
|
37
|
+
|
|
38
|
+
All 21 custom rules also have independently versioned scoped packages.
|
|
39
|
+
Installing one does not install this umbrella or its unrelated presets.
|
|
40
|
+
For example:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pnpm add -D @lint-suite/eslint-plugin-arrow-body-fits-line eslint typescript typescript-eslint
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
import arrow from '@lint-suite/eslint-plugin-arrow-body-fits-line';
|
|
48
|
+
import tseslint from 'typescript-eslint';
|
|
49
|
+
|
|
50
|
+
export default [
|
|
51
|
+
{
|
|
52
|
+
files: ['**/*.ts'],
|
|
53
|
+
languageOptions: { parser: tseslint.parser },
|
|
54
|
+
plugins: { arrow },
|
|
55
|
+
rules: { 'arrow/arrow-body-fits-line': 'error' }
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The [package catalog](https://github.com/F0rty-Tw0/lint-suite#standalone-custom-rules)
|
|
61
|
+
lists every package and its rule key. The Angular instance-field package is
|
|
62
|
+
`@lint-suite/eslint-plugin-no-unused-angular-instance-fields`; its rule key
|
|
63
|
+
remains `no-unused-instance-fields`. The Stylelint package is
|
|
64
|
+
`@lint-suite/stylelint-no-unused-classes`, with rule ID
|
|
65
|
+
`lint-suite/no-unused-classes`.
|
|
66
|
+
|
|
67
|
+
No migration is needed for existing umbrella users: its three entrypoints,
|
|
68
|
+
presets, rule IDs, severities, and options are unchanged. Avoid enabling a
|
|
69
|
+
standalone rule alongside the corresponding umbrella rule.
|
|
70
|
+
|
|
25
71
|
## Dependencies
|
|
26
72
|
|
|
27
73
|
```bash
|
|
28
|
-
pnpm add -D eslint typescript-eslint eslint-config-prettier
|
|
74
|
+
pnpm add -D eslint typescript typescript-eslint eslint-config-prettier
|
|
29
75
|
```
|
|
30
76
|
|
|
31
77
|
If you use the Prettier preset (`lint-suite/prettier`), also install its peer dependency:
|
|
@@ -44,6 +90,9 @@ import { recommended } from 'lint-suite/eslint';
|
|
|
44
90
|
export default [...recommended];
|
|
45
91
|
```
|
|
46
92
|
|
|
93
|
+
The packages ship as ESM. Use Node.js 24 with the current ESLint,
|
|
94
|
+
TypeScript, and Angular toolchain.
|
|
95
|
+
|
|
47
96
|
Or selectively include configurations:
|
|
48
97
|
|
|
49
98
|
```js
|
|
@@ -83,40 +132,49 @@ export default [
|
|
|
83
132
|
|
|
84
133
|
## Available Configurations
|
|
85
134
|
|
|
86
|
-
| Configuration
|
|
87
|
-
|
|
|
88
|
-
| `base`
|
|
89
|
-
| `javascript`
|
|
90
|
-
| `typescript`
|
|
91
|
-
| `angular`
|
|
92
|
-
| `angularTemplate`
|
|
93
|
-
| `rxjs`
|
|
94
|
-
| `vitest`
|
|
95
|
-
| `playwright`
|
|
96
|
-
| `json`
|
|
97
|
-
| `storybook`
|
|
98
|
-
| `boundaries`
|
|
99
|
-
| `prettier`
|
|
100
|
-
| **`recommended`**
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
135
|
+
| Configuration | Description |
|
|
136
|
+
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
137
|
+
| `base` | Core JavaScript rules, formatting, and complexity limits |
|
|
138
|
+
| `javascript` | JavaScript-specific rules via `@nx/eslint-plugin` |
|
|
139
|
+
| `typescript` | TypeScript strict typing, imports, and naming conventions |
|
|
140
|
+
| `angular` | Angular component best practices with Signal support |
|
|
141
|
+
| `angularTemplate` | HTML template rules with accessibility, performance, and `lint-suite-angular-template/no-unstyled-classes` |
|
|
142
|
+
| `rxjs` | Observable patterns, operator safety, and subscriptions |
|
|
143
|
+
| `vitest` | Vitest testing rules and matcher improvements |
|
|
144
|
+
| `playwright` | Playwright e2e locator and matcher best practices |
|
|
145
|
+
| `json` | JSON linting with comment support for tsconfig/vscode |
|
|
146
|
+
| `storybook` | Storybook CSF enforcement |
|
|
147
|
+
| `boundaries` | Module boundary rules (feature, data-access, ui, etc.) |
|
|
148
|
+
| `prettier` | Disables rules that conflict with Prettier (use last) |
|
|
149
|
+
| **`recommended`** | **Baseline only: `base` + `javascript` + `typescript` + `json` + `boundaries` + `prettier` — compose the rest on top** |
|
|
150
|
+
|
|
151
|
+
**Angular project analysis:** The `angular` preset enables `projectService:
|
|
152
|
+
true` and project analysis for `lint-suite-angular/no-unused-instance-fields`.
|
|
153
|
+
It counts exact reads in the configured TypeScript/Angular Program, including
|
|
154
|
+
external parent templates/TypeScript, subclasses, and Angular interface
|
|
155
|
+
implementations; code outside that Program is unknowable. Project mode also
|
|
156
|
+
reports unused public/protected directive members.
|
|
157
|
+
|
|
158
|
+
Direct rule usage also defaults to project analysis; select `analysis:
|
|
159
|
+
'local'` explicitly for local analysis. `allowEffectFields` is opt-in. After
|
|
160
|
+
cross-file or template changes, do not use ESLint `--cache` for correctness
|
|
161
|
+
gates; run a full non-cached lint such as `eslint --no-cache`.
|
|
108
162
|
|
|
109
163
|
## Disk cache
|
|
110
164
|
|
|
111
|
-
`no-unstyled-classes
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
165
|
+
`no-unstyled-classes` and `no-unused-classes` cache parsed component metadata,
|
|
166
|
+
stylesheets, and templates in memory and mirror those entries to
|
|
167
|
+
`node_modules/.cache/lint-suite/` under the current working directory at
|
|
168
|
+
process exit. Each cache is isolated by its owning scoped plugin's package
|
|
169
|
+
name, version, and cache format. Upgrading either plugin invalidates its own
|
|
170
|
+
entries without reusing or overwriting the other plugin's cache.
|
|
171
|
+
|
|
172
|
+
Entries are also invalidated by file mtime and size. Malformed disk entries
|
|
173
|
+
are discarded and rebuilt. Set `LINT_SUITE_CACHE_DIR` to choose a directory,
|
|
174
|
+
or `LINT_SUITE_CACHE=0` to keep caching in memory only.
|
|
175
|
+
|
|
176
|
+
The Angular instance-field rule maintains a separate in-memory project
|
|
177
|
+
usage index; it does not use this disk cache.
|
|
120
178
|
|
|
121
179
|
## Customization
|
|
122
180
|
|
|
@@ -139,9 +197,8 @@ export default [
|
|
|
139
197
|
### Unused Angular instance fields
|
|
140
198
|
|
|
141
199
|
The `angular` config enables `lint-suite-angular/no-unused-instance-fields`.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
templates can read a component or directive member:
|
|
200
|
+
Project analysis is the default and recognizes reads from other TypeScript
|
|
201
|
+
files and Angular templates. It requires parser services with type information:
|
|
145
202
|
|
|
146
203
|
```js
|
|
147
204
|
{
|
|
@@ -170,13 +227,22 @@ templates can read a component or directive member:
|
|
|
170
227
|
folder, are re-read on every lint; edits to templates in other folders are
|
|
171
228
|
picked up on a throttled schedule (at most every 100× the duration of the
|
|
172
229
|
last check), so a cross-folder template edit can take a moment to show up
|
|
173
|
-
in another file's diagnostics.
|
|
174
|
-
|
|
230
|
+
in another file's diagnostics. A `templateUrl` file that does not exist
|
|
231
|
+
yet is remembered as missing and read on the same schedule once it does.
|
|
232
|
+
- `analysis` defaults to `'project'`. Set `analysis: 'local'` to check only
|
|
233
|
+
the class, component template, and host expressions without type information.
|
|
234
|
+
Project mode excludes spec-file reads. A
|
|
175
235
|
file it cannot index exactly (a template that does not parse, metadata it
|
|
176
236
|
cannot evaluate, a read it cannot type) falls back to name matching for
|
|
177
237
|
that file only: every member whose name that file mentions counts as read.
|
|
178
238
|
Set `LINT_SUITE_DEBUG=1` to print which files fell back and why, for
|
|
179
239
|
example `LINT_SUITE_DEBUG=1 eslint --no-cache src/app/some.component.ts`.
|
|
240
|
+
- A file with an import that resolves to no module (its file does not exist
|
|
241
|
+
yet, or is still empty) reads through untyped values, so every candidate
|
|
242
|
+
member it mentions counts as read, and it is re-indexed on every Program
|
|
243
|
+
until the import resolves. The project service of typescript-eslint never
|
|
244
|
+
retries a resolution that failed, so in an editor this lasts until the
|
|
245
|
+
importing file is edited or ESLint restarts.
|
|
180
246
|
- `allowEffectFields` defaults to `false`. When enabled, fields holding
|
|
181
247
|
auto-cleaned Angular `effect()` calls are allowed; effects configured with
|
|
182
248
|
`manualCleanup: true` must still be read.
|
|
@@ -442,18 +508,18 @@ them reads type information or the filesystem; each listens to one node
|
|
|
442
508
|
type and reports in microseconds per file. Where a fix needs a name the rule
|
|
443
509
|
offers an IDE suggestion with a placeholder name instead of an auto-fix.
|
|
444
510
|
|
|
445
|
-
| Rule
|
|
446
|
-
|
|
447
|
-
| `local/no-call-in-condition`
|
|
448
|
-
| `local/max-condition-operands`
|
|
449
|
-
| `local/no-grouped-condition`
|
|
450
|
-
| `local/ternary-branch-shape`
|
|
451
|
-
| `local/chain-receiver-is-name`
|
|
452
|
-
| `local/chain-fits-line`
|
|
453
|
-
| `local/arrow-body-fits-line`
|
|
454
|
-
| `local/no-nested-object-value`
|
|
455
|
-
| `local/no-spread-expression`
|
|
456
|
-
| `local/no-inline-return-object` | `return {...}` and `=> ({...})`.
|
|
511
|
+
| Rule | Reports | Fix |
|
|
512
|
+
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
|
|
513
|
+
| `local/no-call-in-condition` | A function call inside an `if` condition, or inside a boolean `const` that an `if` tests. Zero-argument `this.x()` calls (Angular signal reads) and type-predicate calls are exempt; predicates are found through scope in the same file, or through the type checker when a program is available. Option `allowPredicates` (regex sources, default `['^(is\|has)[A-Z]']`) applies when there is no program. | Suggestion: hoist to a `const` |
|
|
514
|
+
| `local/max-condition-operands` | An `if` condition with more than `max` (default 3) operands joined by `&&` / `\|\|`. | none |
|
|
515
|
+
| `local/no-grouped-condition` | A parenthesised group with a different operator inside an `if` condition or a boolean `const` (`a && (b \|\| c)`). | Suggestion: hoist the group |
|
|
516
|
+
| `local/ternary-branch-shape` | A ternary branch that is not a name, literal, template literal, or plain member access. | none |
|
|
517
|
+
| `local/chain-receiver-is-name` | A member chain starting on an inline expression: `(a ?? b).x`, `{...}.x`, `[...].x`, `(await p).x`. | Suggestion: name the receiver |
|
|
518
|
+
| `local/chain-fits-line` | A chain of two or more calls whose `.method(` parts sit on different lines. A multi-line callback argument does not count. | none |
|
|
519
|
+
| `local/arrow-body-fits-line` | An expression-bodied arrow whose body wraps onto more lines. | Fix: block body with `return` |
|
|
520
|
+
| `local/no-nested-object-value` | A property value that is a non-empty object literal, an array holding object literals, a ternary, or a call chain. Decorator arguments (`@Component({...})`) and files matching `configFiles` (default `**/*.config.*`, `**/eslint.config.*`, `**/*.schema.ts`) are exempt. | Suggestion: hoist to a `const` |
|
|
521
|
+
| `local/no-spread-expression` | `...(expr)` where the argument is not a name or member access. | Suggestion: hoist to a `const` |
|
|
522
|
+
| `local/no-inline-return-object` | `return {...}` and `=> ({...})`. | Suggestion: `const result = {...}; return result;` |
|
|
457
523
|
|
|
458
524
|
### Project layout rules
|
|
459
525
|
|
|
@@ -461,11 +527,11 @@ Also in the `typescript` preset. These read only the file's own path and
|
|
|
461
527
|
return no listeners for files they do not cover, so they cost one regex
|
|
462
528
|
per file.
|
|
463
529
|
|
|
464
|
-
| Rule
|
|
465
|
-
|
|
466
|
-
| `local/type-placement`
|
|
467
|
-
| `local/util-purity`
|
|
468
|
-
| `local/test-file-shape` | A file named `*.spec-support.ts`, `*.spec-helper.ts`, `*.test-utils.ts`, `*-fixture.ts`, or under `__mocks__/` / `helpers/` / `common/stubs/`; a `.stub.ts` outside `test/stubs/`, a `.mock.ts` outside `test/mocks/`, a `.spec.util.ts` outside `test/utils/`, or any `fixtures/` directory outside `test/fixtures/` (a dedicated `testing/` library is exempt from all of these); a `test/stubs/*.stub.ts` export not named `UPPER_SNAKE_STUB` or without a type annotation; a `test/mocks/*.mock.ts` export that is not a camelCase `...Mock` function with an explicit return type.
|
|
530
|
+
| Rule | Reports | Options |
|
|
531
|
+
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
532
|
+
| `local/type-placement` | An exported `type` outside a `common/*.type.ts` or `test/common/*.type.ts` file; a value exported from a `*.type.ts` file; a non-`const` export from a `*.const.ts` file; an `import type` from a relative or internal path that is neither a `*.type.ts` / `*.schema.ts` file nor a `common` barrel (`../common`, `./common/index.ts`, `@shared/common`). `.spec.ts`, `.stub.ts`, `.schema.ts` (an inferred type lives beside its schema), `.d.ts`, `state.type.ts` (any prefix), and fixtures are exempt; a `.spec.util.ts` file is not, so an exported type in one is reported. Never resolves imports. | `internalPatterns`: regex sources for alias prefixes that must resolve to a `*.type.ts` file. Default empty: a workspace alias (`@shared/common`) resolves to a library entry point, and module boundaries forbid deep imports, so alias type imports pass. |
|
|
533
|
+
| `local/util-purity` | Inside `utils/*.util.ts` (excluding paths under `test/` or `testing/`): imports of `node:fs`, `child_process`, `os`, `process`, `http`, `net`, `worker_threads`; a module-level `let`; a module-level `new Map/Set/WeakMap/WeakSet`; `process.*`, `globalThis`, `window`, `document`, `localStorage`, `console`; `Date.now`, `Math.random`, `performance.now`, `crypto.randomUUID`; `setTimeout`, `setInterval`, `fetch`, `inject`, `require`. | `bannedModules` |
|
|
534
|
+
| `local/test-file-shape` | A file named `*.spec-support.ts`, `*.spec-helper.ts`, `*.test-utils.ts`, `*-fixture.ts`, or under `__mocks__/` / `helpers/` / `common/stubs/`; a `.stub.ts` outside `test/stubs/`, a `.mock.ts` outside `test/mocks/`, a `.spec.util.ts` outside `test/utils/`, or any `fixtures/` directory outside `test/fixtures/` (a dedicated `testing/` library is exempt from all of these); a `test/stubs/*.stub.ts` export not named `UPPER_SNAKE_STUB` or without a type annotation; a `test/mocks/*.mock.ts` export that is not a camelCase `...Mock` function with an explicit return type. | none |
|
|
469
535
|
|
|
470
536
|
### No unused exports
|
|
471
537
|
|
|
@@ -474,7 +540,10 @@ export (values and types) that no other file in the TypeScript program
|
|
|
474
540
|
imports, and a module that exports names but is never imported at all.
|
|
475
541
|
|
|
476
542
|
- Source of truth is the program typescript-eslint already built for the
|
|
477
|
-
type-aware rules: no extra parse, no file enumeration
|
|
543
|
+
type-aware rules: no extra parse, no file enumeration. The disk is only
|
|
544
|
+
asked about a specifier the checker cannot resolve, because the project
|
|
545
|
+
service of typescript-eslint never retries a failed resolution; such a file
|
|
546
|
+
is re-read on every Program until the specifier resolves.
|
|
478
547
|
- Per file the rule walks top-level statements, plus every node of a file
|
|
479
548
|
whose text contains `import(`, and caches the result
|
|
480
549
|
on the `ts.SourceFile` object; the project-wide usage map is cached per
|
|
@@ -505,6 +574,108 @@ imports, and a module that exports names but is never imported at all.
|
|
|
505
574
|
`tsconfig.lib.json`) reports as unused; that is the same boundary `tsc`
|
|
506
575
|
draws.
|
|
507
576
|
|
|
577
|
+
## Examples
|
|
578
|
+
|
|
579
|
+
These five valid and five invalid TypeScript examples illustrate individual custom rules enabled by the `typescript` preset. Each example is judged by the named rule only; it is not a complete file guaranteed to pass every rule in the suite. Values such as `items`, `name`, and `enabled` represent existing application variables.
|
|
580
|
+
|
|
581
|
+
### Valid examples
|
|
582
|
+
|
|
583
|
+
#### 1. Name an object type before using it
|
|
584
|
+
|
|
585
|
+
`local/no-inline-object-types` allows a named type alias used in a parameter annotation.
|
|
586
|
+
|
|
587
|
+
```ts
|
|
588
|
+
type User = { name: string };
|
|
589
|
+
|
|
590
|
+
function greet(user: User): string {
|
|
591
|
+
return user.name;
|
|
592
|
+
}
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
#### 2. Name a returned object
|
|
596
|
+
|
|
597
|
+
`local/no-inline-return-object` allows returning an identifier instead of an inline object literal.
|
|
598
|
+
|
|
599
|
+
```ts
|
|
600
|
+
function createUser() {
|
|
601
|
+
const user = { name: 'Ada' };
|
|
602
|
+
return user;
|
|
603
|
+
}
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
#### 3. Extract a nested object value
|
|
607
|
+
|
|
608
|
+
`local/no-nested-object-value` allows an identifier as an object property value.
|
|
609
|
+
|
|
610
|
+
```ts
|
|
611
|
+
const address = { city: 'London' };
|
|
612
|
+
const user = { name: 'Ada', address };
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
#### 4. Name a spread operand
|
|
616
|
+
|
|
617
|
+
`local/no-spread-expression` allows spreading a named array.
|
|
618
|
+
|
|
619
|
+
```ts
|
|
620
|
+
const copy = [...items];
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
#### 5. Mark a primitive type property readonly
|
|
624
|
+
|
|
625
|
+
`local/readonly-type-properties` accepts readonly primitive properties in type aliases.
|
|
626
|
+
|
|
627
|
+
```ts
|
|
628
|
+
type Settings = { readonly enabled: boolean };
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### Invalid examples
|
|
632
|
+
|
|
633
|
+
#### 1. Put an object type directly in a parameter annotation
|
|
634
|
+
|
|
635
|
+
`local/no-inline-object-types` reports the inline type. Extract the `User` type shown above.
|
|
636
|
+
|
|
637
|
+
```ts
|
|
638
|
+
function greet(user: { name: string }): string {
|
|
639
|
+
return user.name;
|
|
640
|
+
}
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
#### 2. Return an object literal directly
|
|
644
|
+
|
|
645
|
+
`local/no-inline-return-object` reports the returned literal. Assign it to a named constant first.
|
|
646
|
+
|
|
647
|
+
```ts
|
|
648
|
+
function createUser() {
|
|
649
|
+
return { name: 'Ada' };
|
|
650
|
+
}
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
#### 3. Nest an object literal inside another object
|
|
654
|
+
|
|
655
|
+
`local/no-nested-object-value` reports the inline `address` value. Declare it separately.
|
|
656
|
+
|
|
657
|
+
```ts
|
|
658
|
+
const user = { name: 'Ada', address: { city: 'London' } };
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
#### 4. Spread the result of a call directly
|
|
662
|
+
|
|
663
|
+
`local/no-spread-expression` reports the inline call used as a spread operand. Assign the filtered array to a named constant before spreading it.
|
|
664
|
+
|
|
665
|
+
```ts
|
|
666
|
+
const copy = [...items.filter(isVisible)];
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
#### 5. Leave a primitive type property mutable
|
|
670
|
+
|
|
671
|
+
`local/readonly-type-properties` reports the missing `readonly` modifier.
|
|
672
|
+
|
|
673
|
+
```ts
|
|
674
|
+
type Settings = { enabled: boolean };
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
For more valid and invalid code examples, configuration options, and rule-specific exceptions, see the [standalone package catalog](https://github.com/F0rty-Tw0/lint-suite#standalone-custom-rules).
|
|
678
|
+
|
|
508
679
|
## Stylelint and Prettier presets
|
|
509
680
|
|
|
510
681
|
These are standalone configs exported as subpaths — they are not part of the `recommended` ESLint array.
|
package/eslint.d.ts
CHANGED
|
@@ -13,4 +13,3 @@ import { typescript } from './lib/typescript.ts';
|
|
|
13
13
|
import { vitest } from './lib/vitest.ts';
|
|
14
14
|
export declare const recommended: ConfigArray;
|
|
15
15
|
export { base, javascript, typescript, angular, angularTemplate, rxjs, json, boundaries, storybook, vitest, playwright, prettier };
|
|
16
|
-
//# sourceMappingURL=eslint.d.ts.map
|