Skip to content

Commit 94bd09b

Browse files
committed
feat(no-inspect): add no-inspect rule
1 parent cf6c842 commit 94bd09b

File tree

7 files changed

+106
-0
lines changed

7 files changed

+106
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# (svelte/no-inspect)
2+
3+
> description
4+
5+
## :book: Rule Details
6+
7+
This rule reports ???.
8+
9+
<ESLintCodeBlock>
10+
11+
<!--eslint-skip-->
12+
13+
```svelte
14+
<script>
15+
/* eslint svelte/no-inspect: "error" */
16+
</script>
17+
18+
<!-- ✓ GOOD -->
19+
20+
<!-- ✗ BAD -->
21+
```
22+
23+
</ESLintCodeBlock>
24+
25+
## :wrench: Options
26+
27+
```json
28+
{
29+
"svelte/no-inspect": ["error", {}]
30+
}
31+
```
32+
33+
-
34+
35+
## :books: Further Reading
36+
37+
-
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import type { TSESTree } from '@typescript-eslint/types';
2+
3+
import { createRule } from '../utils';
4+
5+
export default createRule('no-inspect', {
6+
meta: {
7+
docs: {
8+
description: '',
9+
category: 'Best Practices',
10+
recommended: true,
11+
default: 'warn'
12+
},
13+
schema: [],
14+
messages: {
15+
unexpected: 'Do not use $inspect directive'
16+
},
17+
type: 'suggestion'
18+
},
19+
create(context) {
20+
return {
21+
Identifier(node: TSESTree.Identifier) {
22+
if (node.name !== '$inspect') {
23+
return;
24+
}
25+
26+
context.report({ messageId: 'unexpected', node });
27+
}
28+
};
29+
}
30+
});

packages/eslint-plugin-svelte/src/utils/rules.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import noIgnoredUnsubscribe from '../rules/no-ignored-unsubscribe';
3232
import noImmutableReactiveStatements from '../rules/no-immutable-reactive-statements';
3333
import noInlineStyles from '../rules/no-inline-styles';
3434
import noInnerDeclarations from '../rules/no-inner-declarations';
35+
import noInspect from '../rules/no-inspect';
3536
import noNotFunctionHandler from '../rules/no-not-function-handler';
3637
import noObjectInTextMustaches from '../rules/no-object-in-text-mustaches';
3738
import noReactiveFunctions from '../rules/no-reactive-functions';
@@ -97,6 +98,7 @@ export const rules = [
9798
noImmutableReactiveStatements,
9899
noInlineStyles,
99100
noInnerDeclarations,
101+
noInspect,
100102
noNotFunctionHandler,
101103
noObjectInTextMustaches,
102104
noReactiveFunctions,
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
- message: Do not use $inspect directive
2+
line: 2
3+
column: 3
4+
suggestions: null
5+
- message: Do not use $inspect directive
6+
line: 5
7+
column: 13
8+
suggestions: null
9+
- message: Do not use $inspect directive
10+
line: 8
11+
column: 5
12+
suggestions: null
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script>
2+
$inspect(1);
3+
$state(0);
4+
5+
const a = $inspect(1);
6+
7+
const _ = () => {
8+
$inspect(1);
9+
}
10+
</script>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<script>
2+
const _ = $state(1);
3+
</script>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RuleTester } from '../../utils/eslint-compat';
2+
import rule from '../../../src/rules/no-inspect';
3+
import { loadTestCases } from '../../utils/utils';
4+
5+
const tester = new RuleTester({
6+
languageOptions: {
7+
ecmaVersion: 2020,
8+
sourceType: 'module'
9+
}
10+
});
11+
12+
tester.run('no-inspect', rule as any, loadTestCases('no-inspect'));

0 commit comments

Comments
 (0)