1
+ import type { AST } from "svelte-eslint-parser"
1
2
import type * as ESTree from "estree"
2
3
import { createRule } from "../utils"
3
4
import { isKitPageComponent } from "../utils/svelte-kit"
@@ -21,29 +22,32 @@ export default createRule("no-not-data-props-in-kit-pages", {
21
22
} ,
22
23
create ( context ) {
23
24
if ( ! isKitPageComponent ( context ) ) return { }
24
- let isModule = false
25
+ let isScript = false
25
26
return {
26
- // <script context="module">
27
- [ `Program > SvelteScriptElement > SvelteStartTag > SvelteAttribute[key.name="context"] > SvelteLiteral[value="module"]` ] :
28
- ( ) => {
29
- isModule = true
30
- } ,
31
-
32
27
// <script>
33
- [ `Program > SvelteScriptElement > SvelteStartTag > SvelteAttribute[key.name="context"] > SvelteLiteral[value!="module"]` ] :
34
- ( ) => {
35
- isModule = false
36
- } ,
28
+ [ `Program > SvelteScriptElement > SvelteStartTag` ] : (
29
+ node : AST . SvelteStartTag ,
30
+ ) => {
31
+ // except for <script context="module">
32
+ isScript = ! node . attributes . some (
33
+ ( a ) =>
34
+ a . type === "SvelteAttribute" &&
35
+ a . key . name === "context" &&
36
+ a . value . some (
37
+ ( v ) => v . type === "SvelteLiteral" && v . value === "module" ,
38
+ ) ,
39
+ )
40
+ } ,
37
41
38
42
// </script>
39
- [ "SvelteEndTag" ] : ( ) => {
40
- isModule = false
43
+ "Program > SvelteScriptElement:exit" : ( ) => {
44
+ isScript = false
41
45
} ,
42
46
43
47
// export let xxx
44
48
[ `ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > Identifier` ] :
45
49
( node : ESTree . Identifier ) => {
46
- if ( isModule ) return { }
50
+ if ( ! isScript ) return { }
47
51
const { name } = node
48
52
if ( EXPECTED_PROP_NAMES . includes ( name ) ) return { }
49
53
return context . report ( {
0 commit comments