From f11edc501bcb74e8e8b3ccfcef34e3731793ef86 Mon Sep 17 00:00:00 2001 From: Daniel Nalborczyk Date: Sun, 30 Jan 2022 12:23:45 -0500 Subject: [PATCH] refactor: use fs.promises, make functions async --- src/utils/resolveId.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/utils/resolveId.ts b/src/utils/resolveId.ts index 15157e17b34..717135f8e7a 100644 --- a/src/utils/resolveId.ts +++ b/src/utils/resolveId.ts @@ -1,6 +1,6 @@ import type { CustomPluginOptions, Plugin, ResolvedId, ResolveIdResult } from '../rollup/types'; import type { PluginDriver } from './PluginDriver'; -import { lstatSync, readdirSync, realpathSync } from './fs'; +import { promises as fs } from './fs'; import { basename, dirname, isAbsolute, resolve } from './path'; import { resolveIdViaPlugins } from './resolveIdViaPlugins'; @@ -45,23 +45,26 @@ export async function resolveId( ); } -function addJsExtensionIfNecessary(file: string, preserveSymlinks: boolean): string | undefined { +async function addJsExtensionIfNecessary( + file: string, + preserveSymlinks: boolean +): Promise { return ( - findFile(file, preserveSymlinks) ?? - findFile(file + '.mjs', preserveSymlinks) ?? - findFile(file + '.js', preserveSymlinks) + (await findFile(file, preserveSymlinks)) ?? + (await findFile(file + '.mjs', preserveSymlinks)) ?? + (await findFile(file + '.js', preserveSymlinks)) ); } -function findFile(file: string, preserveSymlinks: boolean): string | undefined { +async function findFile(file: string, preserveSymlinks: boolean): Promise { try { - const stats = lstatSync(file); + const stats = await fs.lstat(file); if (!preserveSymlinks && stats.isSymbolicLink()) - return findFile(realpathSync(file), preserveSymlinks); + return await findFile(await fs.realpath(file), preserveSymlinks); if ((preserveSymlinks && stats.isSymbolicLink()) || stats.isFile()) { // check case const name = basename(file); - const files = readdirSync(dirname(file)); + const files = await fs.readdir(dirname(file)); if (files.indexOf(name) !== -1) return file; }