Skip to content

Commit 8dcb33b

Browse files
authored
refactor(eslint-plugin): [prefer-output-readonly] use computed selector (#569)
1 parent c296827 commit 8dcb33b

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

packages/eslint-plugin/src/rules/prefer-output-readonly.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { TSESTree } from '@typescript-eslint/experimental-utils';
22
import { createESLintRule } from '../utils/create-eslint-rule';
3+
import { OUTPUT_DECORATOR } from '../utils/selectors';
34

45
type Options = [];
56
export type MessageIds = 'preferOutputReadonly' | 'suggestAddReadonlyModifier';
@@ -11,22 +12,22 @@ export default createESLintRule<Options, MessageIds>({
1112
type: 'suggestion',
1213
docs: {
1314
description:
14-
'Prefer to declare `@Output` as readonly since they are not supposed to be reassigned',
15+
'Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned',
1516
category: 'Best Practices',
1617
recommended: false,
1718
suggestion: true,
1819
},
1920
schema: [],
2021
messages: {
2122
preferOutputReadonly:
22-
'Prefer to declare `@Output` as readonly since they are not supposed to be reassigned',
23-
suggestAddReadonlyModifier: 'Add readonly modifier',
23+
'Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned',
24+
suggestAddReadonlyModifier: 'Add `readonly` modifier',
2425
},
2526
},
2627
defaultOptions: [],
2728
create(context) {
2829
return {
29-
'ClassProperty[readonly=undefined] > Decorator[expression.callee.name="Output"]'({
30+
[`ClassProperty:not([readonly]) > ${OUTPUT_DECORATOR}`]({
3031
parent: { key },
3132
}: TSESTree.Decorator & { parent: TSESTree.ClassProperty }) {
3233
context.report({

packages/eslint-plugin/tests/rules/prefer-output-readonly.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ const suggestAddReadonlyModifier: MessageIds = 'suggestAddReadonlyModifier';
1717

1818
ruleTester.run(RULE_NAME, rule, {
1919
valid: [
20+
`
21+
class Test {
22+
testEmitter = new EventEmitter<string>();
23+
}
24+
`,
2025
`
2126
class Test {
2227
@Output() readonly testEmitter = new EventEmitter<string>();

0 commit comments

Comments
 (0)