Skip to content

Commit f651c78

Browse files
committed
fix: very slight performance improvement
1 parent 602ff4b commit f651c78

File tree

1 file changed

+42
-41
lines changed

1 file changed

+42
-41
lines changed

src/index.ts

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -208,48 +208,50 @@ function createParserFromConfig(babelParser: BabelParser, config: any): Parser {
208208
export 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

Comments
 (0)