@angular-eslint/eslint-plugin
Advanced tools
Comparing version 18.0.2-alpha.7 to 18.0.2-alpha.8
{ | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": ["@angular-eslint"], | ||
"rules": { | ||
"@angular-eslint/component-class-suffix": "error", | ||
"@angular-eslint/component-max-inline-declarations": "error", | ||
"@angular-eslint/component-selector": "error", | ||
"@angular-eslint/consistent-component-styles": "error", | ||
"@angular-eslint/contextual-decorator": "error", | ||
"@angular-eslint/contextual-lifecycle": "error", | ||
"@angular-eslint/directive-class-suffix": "error", | ||
"@angular-eslint/directive-selector": "error", | ||
"@angular-eslint/no-async-lifecycle-method": "error", | ||
"@angular-eslint/no-attribute-decorator": "error", | ||
"@angular-eslint/no-conflicting-lifecycle": "error", | ||
"@angular-eslint/no-duplicates-in-metadata-arrays": "error", | ||
"@angular-eslint/no-empty-lifecycle-method": "error", | ||
"@angular-eslint/no-forward-ref": "error", | ||
"@angular-eslint/no-host-metadata-property": "error", | ||
"@angular-eslint/no-input-prefix": "error", | ||
"@angular-eslint/no-input-rename": "error", | ||
"@angular-eslint/no-inputs-metadata-property": "error", | ||
"@angular-eslint/no-lifecycle-call": "error", | ||
"@angular-eslint/no-output-native": "error", | ||
"@angular-eslint/no-output-on-prefix": "error", | ||
"@angular-eslint/no-output-rename": "error", | ||
"@angular-eslint/no-outputs-metadata-property": "error", | ||
"@angular-eslint/no-pipe-impure": "error", | ||
"@angular-eslint/no-queries-metadata-property": "error", | ||
"@angular-eslint/pipe-prefix": "error", | ||
"@angular-eslint/prefer-on-push-component-change-detection": "error", | ||
"@angular-eslint/prefer-output-readonly": "error", | ||
"@angular-eslint/prefer-standalone": "error", | ||
"@angular-eslint/prefer-standalone-component": "error", | ||
"@angular-eslint/relative-url-prefix": "error", | ||
"@angular-eslint/require-localize-metadata": "error", | ||
"@angular-eslint/sort-lifecycle-methods": "error", | ||
"@angular-eslint/sort-ngmodule-metadata-arrays": "error", | ||
"@angular-eslint/use-component-selector": "error", | ||
"@angular-eslint/use-component-view-encapsulation": "error", | ||
"@angular-eslint/use-injectable-provided-in": "error", | ||
"@angular-eslint/use-lifecycle-interface": "error", | ||
"@angular-eslint/use-pipe-transform-interface": "error" | ||
} | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": ["@angular-eslint"], | ||
"rules": { | ||
"@angular-eslint/component-class-suffix": "error", | ||
"@angular-eslint/component-max-inline-declarations": "error", | ||
"@angular-eslint/component-selector": "error", | ||
"@angular-eslint/consistent-component-styles": "error", | ||
"@angular-eslint/contextual-decorator": "error", | ||
"@angular-eslint/contextual-lifecycle": "error", | ||
"@angular-eslint/directive-class-suffix": "error", | ||
"@angular-eslint/directive-selector": "error", | ||
"@angular-eslint/no-async-lifecycle-method": "error", | ||
"@angular-eslint/no-attribute-decorator": "error", | ||
"@angular-eslint/no-conflicting-lifecycle": "error", | ||
"@angular-eslint/no-duplicates-in-metadata-arrays": "error", | ||
"@angular-eslint/no-empty-lifecycle-method": "error", | ||
"@angular-eslint/no-forward-ref": "error", | ||
"@angular-eslint/no-host-metadata-property": "error", | ||
"@angular-eslint/no-input-prefix": "error", | ||
"@angular-eslint/no-input-rename": "error", | ||
"@angular-eslint/no-inputs-metadata-property": "error", | ||
"@angular-eslint/no-lifecycle-call": "error", | ||
"@angular-eslint/no-output-native": "error", | ||
"@angular-eslint/no-output-on-prefix": "error", | ||
"@angular-eslint/no-output-rename": "error", | ||
"@angular-eslint/no-outputs-metadata-property": "error", | ||
"@angular-eslint/no-pipe-impure": "error", | ||
"@angular-eslint/no-queries-metadata-property": "error", | ||
"@angular-eslint/pipe-prefix": "error", | ||
"@angular-eslint/prefer-on-push-component-change-detection": "error", | ||
"@angular-eslint/prefer-output-readonly": "error", | ||
"@angular-eslint/prefer-standalone": "error", | ||
"@angular-eslint/prefer-standalone-component": "error", | ||
"@angular-eslint/relative-url-prefix": "error", | ||
"@angular-eslint/require-localize-metadata": "error", | ||
"@angular-eslint/sort-lifecycle-methods": "error", | ||
"@angular-eslint/sort-ngmodule-metadata-arrays": "error", | ||
"@angular-eslint/use-component-selector": "error", | ||
"@angular-eslint/use-component-view-encapsulation": "error", | ||
"@angular-eslint/use-injectable-provided-in": "error", | ||
"@angular-eslint/use-lifecycle-interface": "error", | ||
"@angular-eslint/use-pipe-transform-interface": "error" | ||
} | ||
} |
{ | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": ["@angular-eslint"], | ||
"rules": { | ||
"@angular-eslint/component-class-suffix": "error", | ||
"@angular-eslint/contextual-lifecycle": "error", | ||
"@angular-eslint/directive-class-suffix": "error", | ||
"@angular-eslint/no-empty-lifecycle-method": "error", | ||
"@angular-eslint/no-input-rename": "error", | ||
"@angular-eslint/no-inputs-metadata-property": "error", | ||
"@angular-eslint/no-output-native": "error", | ||
"@angular-eslint/no-output-on-prefix": "error", | ||
"@angular-eslint/no-output-rename": "error", | ||
"@angular-eslint/no-outputs-metadata-property": "error", | ||
"@angular-eslint/use-pipe-transform-interface": "error", | ||
"@angular-eslint/use-lifecycle-interface": "warn" | ||
} | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": ["@angular-eslint"], | ||
"rules": { | ||
"@angular-eslint/component-class-suffix": "error", | ||
"@angular-eslint/contextual-lifecycle": "error", | ||
"@angular-eslint/directive-class-suffix": "error", | ||
"@angular-eslint/no-empty-lifecycle-method": "error", | ||
"@angular-eslint/no-input-rename": "error", | ||
"@angular-eslint/no-inputs-metadata-property": "error", | ||
"@angular-eslint/no-output-native": "error", | ||
"@angular-eslint/no-output-on-prefix": "error", | ||
"@angular-eslint/no-output-rename": "error", | ||
"@angular-eslint/no-outputs-metadata-property": "error", | ||
"@angular-eslint/use-pipe-transform-interface": "error", | ||
"@angular-eslint/use-lifecycle-interface": "warn" | ||
} | ||
} |
@@ -12,3 +12,3 @@ "use strict"; | ||
docs: { | ||
description: 'Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned', | ||
description: 'Prefer to declare `@Output`, `OutputEmitterRef` and `OutputRef` as `readonly` since they are not supposed to be reassigned', | ||
}, | ||
@@ -18,3 +18,3 @@ hasSuggestions: true, | ||
messages: { | ||
preferOutputReadonly: 'Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned', | ||
preferOutputReadonly: 'Prefer to declare `{{type}}` as `readonly` since they are not supposed to be reassigned', | ||
suggestAddReadonlyModifier: 'Add `readonly` modifier', | ||
@@ -27,15 +27,25 @@ }, | ||
[`PropertyDefinition:not([readonly=true]) > ${utils_1.Selectors.OUTPUT_DECORATOR}`]({ parent: { key }, }) { | ||
context.report({ | ||
node: key, | ||
messageId: 'preferOutputReadonly', | ||
suggest: [ | ||
{ | ||
messageId: 'suggestAddReadonlyModifier', | ||
fix: (fixer) => fixer.insertTextBefore(key, 'readonly '), | ||
}, | ||
], | ||
}); | ||
report(key, '@Output'); | ||
}, | ||
[`PropertyDefinition:not([readonly=true]):matches([typeAnnotation.typeAnnotation.typeName.name=OutputEmitterRef], [value.callee.name=output])`]({ key, }) { | ||
report(key, 'OutputEmitterRef'); | ||
}, | ||
[`PropertyDefinition:not([readonly=true]):matches([typeAnnotation.typeAnnotation.typeName.name=OutputRef], [value.callee.name=outputFromObservable])`]({ key, }) { | ||
report(key, 'OutputRef'); | ||
}, | ||
}; | ||
function report(key, type) { | ||
context.report({ | ||
node: key, | ||
messageId: 'preferOutputReadonly', | ||
data: { type }, | ||
suggest: [ | ||
{ | ||
messageId: 'suggestAddReadonlyModifier', | ||
fix: (fixer) => fixer.insertTextBefore(key, 'readonly '), | ||
}, | ||
], | ||
}); | ||
} | ||
}, | ||
}); |
{ | ||
"name": "@angular-eslint/eslint-plugin", | ||
"version": "18.0.2-alpha.7", | ||
"version": "18.0.2-alpha.8", | ||
"description": "ESLint plugin for Angular applications, following https://angular.dev/style-guide", | ||
@@ -21,7 +21,7 @@ "license": "MIT", | ||
"dependencies": { | ||
"@angular-eslint/bundled-angular-compiler": "18.0.2-alpha.7", | ||
"@angular-eslint/utils": "18.0.2-alpha.7" | ||
"@angular-eslint/bundled-angular-compiler": "18.0.2-alpha.8", | ||
"@angular-eslint/utils": "18.0.2-alpha.8" | ||
}, | ||
"devDependencies": { | ||
"@angular-eslint/test-utils": "18.0.2-alpha.7" | ||
"@angular-eslint/test-utils": "18.0.2-alpha.8" | ||
}, | ||
@@ -28,0 +28,0 @@ "peerDependencies": { |
@@ -68,3 +68,3 @@ # @angular-eslint/eslint-plugin | ||
| [`prefer-on-push-component-change-detection`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-on-push-component-change-detection.md) | Ensures component's `changeDetection` is set to `ChangeDetectionStrategy.OnPush` | | | :bulb: | | ||
| [`prefer-output-readonly`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md) | Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned | | | :bulb: | | ||
| [`prefer-output-readonly`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md) | Prefer to declare `@Output`, `OutputEmitterRef` and `OutputRef` as `readonly` since they are not supposed to be reassigned | | | :bulb: | | ||
| [`prefer-standalone`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone.md) | Ensures component, directive and pipe `standalone` property is set to `true` in the component decorator | | :wrench: | | | ||
@@ -71,0 +71,0 @@ | [`relative-url-prefix`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md) | The ./ and ../ prefix is standard syntax for relative URLs; don't depend on Angular's current ability to do without that prefix. See more at https://angular.dev/style-guide#style-05-04 | | | | |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
182475
3098
+ Added@angular-eslint/bundled-angular-compiler@18.0.2-alpha.8(transitive)
+ Added@angular-eslint/utils@18.0.2-alpha.8(transitive)
- Removed@angular-eslint/bundled-angular-compiler@18.0.2-alpha.7(transitive)
- Removed@angular-eslint/utils@18.0.2-alpha.7(transitive)
Updated@angular-eslint/bundled-angular-compiler@18.0.2-alpha.8