@@ -3,79 +3,6 @@ import { findVariable } from './ast-utils.js';
33import type { RuleContext } from '../types.js' ;
44import type { AST } from 'svelte-eslint-parser' ;
55
6- // Variable prefix extraction
7-
8- export function extractExpressionPrefixVariable (
9- context : RuleContext ,
10- expression : TSESTree . Expression
11- ) : TSESTree . Identifier | null {
12- switch ( expression . type ) {
13- case 'BinaryExpression' :
14- return extractBinaryExpressionPrefixVariable ( context , expression ) ;
15- case 'Identifier' :
16- return extractVariablePrefixVariable ( context , expression ) ;
17- case 'MemberExpression' :
18- return extractMemberExpressionPrefixVariable ( expression ) ;
19- case 'TemplateLiteral' :
20- return extractTemplateLiteralPrefixVariable ( context , expression ) ;
21- default :
22- return null ;
23- }
24- }
25-
26- function extractBinaryExpressionPrefixVariable (
27- context : RuleContext ,
28- expression : TSESTree . BinaryExpression
29- ) : TSESTree . Identifier | null {
30- return expression . left . type !== 'PrivateIdentifier'
31- ? extractExpressionPrefixVariable ( context , expression . left )
32- : null ;
33- }
34-
35- function extractVariablePrefixVariable (
36- context : RuleContext ,
37- expression : TSESTree . Identifier
38- ) : TSESTree . Identifier | null {
39- const variable = findVariable ( context , expression ) ;
40- if (
41- variable === null ||
42- variable . identifiers . length !== 1 ||
43- variable . identifiers [ 0 ] . parent . type !== 'VariableDeclarator' ||
44- variable . identifiers [ 0 ] . parent . init === null
45- ) {
46- return expression ;
47- }
48- return (
49- extractExpressionPrefixVariable ( context , variable . identifiers [ 0 ] . parent . init ) ?? expression
50- ) ;
51- }
52-
53- function extractMemberExpressionPrefixVariable (
54- expression : TSESTree . MemberExpression
55- ) : TSESTree . Identifier | null {
56- return expression . property . type === 'Identifier' ? expression . property : null ;
57- }
58-
59- function extractTemplateLiteralPrefixVariable (
60- context : RuleContext ,
61- expression : TSESTree . TemplateLiteral
62- ) : TSESTree . Identifier | null {
63- const literalParts = [ ...expression . expressions , ...expression . quasis ] . sort ( ( a , b ) =>
64- a . range [ 0 ] < b . range [ 0 ] ? - 1 : 1
65- ) ;
66- for ( const part of literalParts ) {
67- if ( part . type === 'TemplateElement' && part . value . raw === '' ) {
68- // Skip empty quasi in the begining
69- continue ;
70- }
71- if ( part . type !== 'TemplateElement' ) {
72- return extractExpressionPrefixVariable ( context , part ) ;
73- }
74- return null ;
75- }
76- return null ;
77- }
78-
796// Literal prefix extraction
807
818export function extractExpressionPrefixLiteral (
0 commit comments