@@ -5,6 +5,7 @@ import { getPackageJsons } from './get-package-json.js';
55import { getNodeModule } from './get-node-module.js' ;
66import { getFilename , getSourceCode } from './compat.js' ;
77import { createCache } from './cache.js' ;
8+ import { VERSION as SVELTE_VERSION } from 'svelte/compiler' ;
89
910const isRunInBrowser = ! fs . readFileSync ;
1011
@@ -169,68 +170,24 @@ function getSvelteKitContext(
169170 return result ;
170171}
171172
172- const svelteVersionCache = createCache < SvelteContext [ 'svelteVersion' ] > ( ) ;
173-
174- function checkAndSetSvelteVersion (
175- version : string ,
176- filePath : string
177- ) : SvelteContext [ 'svelteVersion' ] | null {
173+ function checkAndSetSvelteVersion ( version : string ) : SvelteContext [ 'svelteVersion' ] | null {
178174 const major = extractMajorVersion ( version , false ) ;
179175 if ( major == null ) {
180- svelteVersionCache . set ( filePath , null ) ;
181176 return null ;
182177 }
183178 if ( major === '3' || major === '4' ) {
184- svelteVersionCache . set ( filePath , '3/4' ) ;
185179 return '3/4' ;
186180 }
187- svelteVersionCache . set ( filePath , major as SvelteContext [ 'svelteVersion' ] ) ;
188181 return major as SvelteContext [ 'svelteVersion' ] ;
189182}
190183
191- export function getSvelteVersion ( filePath : string ) : SvelteContext [ 'svelteVersion' ] {
192- const cached = svelteVersionCache . get ( filePath ) ;
193- if ( cached ) return cached ;
194-
184+ export function getSvelteVersion ( ) : SvelteContext [ 'svelteVersion' ] {
195185 // Hack: if it runs in browser, it regards as Svelte project.
196186 if ( isRunInBrowser ) {
197- svelteVersionCache . set ( filePath , '5' ) ;
198187 return '5' ;
199188 }
200189
201- const nodeModule = getNodeModule ( 'svelte' , filePath ) ;
202- if ( nodeModule ) {
203- try {
204- const packageJson = JSON . parse (
205- fs . readFileSync ( path . join ( nodeModule , 'package.json' ) , 'utf8' )
206- ) ;
207- const result = checkAndSetSvelteVersion ( packageJson . version , filePath ) ;
208- if ( result != null ) {
209- return result ;
210- }
211- } catch {
212- /** do nothing */
213- }
214- }
215-
216- try {
217- const packageJsons = getPackageJsons ( filePath ) ;
218- for ( const packageJson of packageJsons ) {
219- const version = packageJson . dependencies ?. svelte ?? packageJson . devDependencies ?. svelte ;
220- if ( typeof version !== 'string' ) {
221- continue ;
222- }
223- const result = checkAndSetSvelteVersion ( version , filePath ) ;
224- if ( result != null ) {
225- return result ;
226- }
227- }
228- } catch {
229- /** do nothing */
230- }
231-
232- svelteVersionCache . set ( filePath , null ) ;
233- return null ;
190+ return checkAndSetSvelteVersion ( SVELTE_VERSION ) ;
234191}
235192
236193const svelteKitVersionCache = createCache < SvelteContext [ 'svelteKitVersion' ] > ( ) ;
@@ -337,7 +294,7 @@ export function getSvelteContext(context: RuleContext): SvelteContext | null {
337294 if ( cached ) return cached ;
338295
339296 const svelteKitContext = getSvelteKitContext ( context ) ;
340- const svelteVersion = getSvelteVersion ( filePath ) ;
297+ const svelteVersion = getSvelteVersion ( ) ;
341298 const svelteFileType = getSvelteFileType ( filePath ) ;
342299
343300 if ( svelteVersion == null ) {
0 commit comments