Skip to content

Commit

Permalink
refactor: use fs.promises, make functions async
Browse files Browse the repository at this point in the history
  • Loading branch information
dnalborczyk committed Jan 30, 2022
1 parent 7104e34 commit f11edc5
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions 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';

Expand Down Expand Up @@ -45,23 +45,26 @@ export async function resolveId(
);
}

function addJsExtensionIfNecessary(file: string, preserveSymlinks: boolean): string | undefined {
async function addJsExtensionIfNecessary(
file: string,
preserveSymlinks: boolean
): Promise<string | undefined> {
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<string | undefined> {
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;
}
Expand Down

0 comments on commit f11edc5

Please sign in to comment.