@@ -208,48 +208,50 @@ function createParserFromConfig(babelParser: BabelParser, config: any): Parser {
208208export function getParserSync ( file : string , options ?: ParserOptions ) : Parser {
209209 const parentDir = Path . dirname ( file )
210210 const extname = Path . extname ( file )
211- const cacheKey = `${ parentDir } ${ Path . delimiter } ${ extname } `
212- const parser = dirParserCache . getSync ( cacheKey , ( ) => {
213- try {
214- const babelPath = _resolve . sync ( '@babel/core' , {
215- basedir : parentDir ,
216- } )
217- // eslint-disable-next-line @typescript-eslint/no-var-requires
218- const babel = require ( babelPath )
219- requiredPaths . push ( babelPath )
211+ const parser = dirParserCache . getSync (
212+ `${ parentDir } ${ Path . delimiter } ${ extname } ` ,
213+ ( ) => {
214+ try {
215+ const babelPath = _resolve . sync ( '@babel/core' , {
216+ basedir : parentDir ,
217+ } )
218+ // eslint-disable-next-line @typescript-eslint/no-var-requires
219+ const babel = require ( babelPath )
220+ requiredPaths . push ( babelPath )
220221
221- const parserPath = _resolve . sync ( '@babel/parser' , {
222- basedir : parentDir ,
223- } )
224- // eslint-disable-next-line @typescript-eslint/no-var-requires
225- const parser = require ( parserPath )
226- requiredPaths . push ( parserPath )
222+ const parserPath = _resolve . sync ( '@babel/parser' , {
223+ basedir : parentDir ,
224+ } )
225+ // eslint-disable-next-line @typescript-eslint/no-var-requires
226+ const parser = require ( parserPath )
227+ requiredPaths . push ( parserPath )
227228
228- const loadOpts = {
229- filename : file ,
230- cwd : Path . dirname ( file ) ,
231- rootMode : 'upward-optional' ,
232- }
233- const partial = babel . loadPartialConfigSync ( loadOpts )
234- const babelrc = partial . babelrc || partial . config
235- const getParser = ( ) => {
236- const config = babel . loadOptionsSync ( loadOpts )
237- return createParserFromConfig ( parser , config )
229+ const loadOpts = {
230+ filename : file ,
231+ cwd : Path . dirname ( file ) ,
232+ rootMode : 'upward-optional' ,
233+ }
234+ const partial = babel . loadPartialConfigSync ( loadOpts )
235+ const babelrc = partial . babelrc || partial . config
236+ const getParser = ( ) => {
237+ const config = babel . loadOptionsSync ( loadOpts )
238+ return createParserFromConfig ( parser , config )
239+ }
240+ return babelrc
241+ ? babelrcParserCache . getSync (
242+ `${ babelrc } ${ Path . delimiter } ${ extname } ` ,
243+ getParser
244+ )
245+ : getParser ( )
246+ } catch ( error ) {
247+ return extname === '.tsx'
248+ ? tsxParser
249+ : extname === '.ts'
250+ ? tsParser
251+ : jsParser
238252 }
239- return babelrc
240- ? babelrcParserCache . getSync (
241- JSON . stringify ( [ babelrc , extname ] ) ,
242- getParser
243- )
244- : getParser ( )
245- } catch ( error ) {
246- return extname === '.tsx'
247- ? tsxParser
248- : extname === '.ts'
249- ? tsParser
250- : jsParser
251253 }
252- } )
254+ )
253255 return ! options || isEmpty ( options ) ? parser : parser . bindParserOpts ( options )
254256}
255257
@@ -259,10 +261,9 @@ export async function getParserAsync(
259261) : Promise < Parser > {
260262 const parentDir = Path . dirname ( file )
261263 const extname = Path . extname ( file )
262- const cacheKey = `${ parentDir } ${ Path . delimiter } ${ extname } `
263264
264265 const parser = await dirParserCache . getAsync (
265- cacheKey ,
266+ ` ${ parentDir } ${ Path . delimiter } ${ extname } ` ,
266267 async ( ) : Promise < Parser > => {
267268 try {
268269 const babelPath = await resolve ( '@babel/core' , {
@@ -290,7 +291,7 @@ export async function getParserAsync(
290291 }
291292 return babelrc
292293 ? await babelrcParserCache . getAsync (
293- JSON . stringify ( [ babelrc , extname ] ) ,
294+ ` ${ babelrc } ${ Path . delimiter } ${ extname } ` ,
294295 getParser
295296 )
296297 : await getParser ( )
0 commit comments