diff --git a/browser/fs.ts b/browser/fs.ts index 31337a88016..4f6ce519593 100644 --- a/browser/fs.ts +++ b/browser/fs.ts @@ -1,4 +1,7 @@ import { throwNoFileSystem } from './error'; -export const readFile = throwNoFileSystem('fs.readFile'); +export const promises = { + readFile: throwNoFileSystem('fs.readFile') +}; + export const writeFile = throwNoFileSystem('fs.writeFile'); diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 5b7aa53174e..831a96fe153 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -29,7 +29,7 @@ import { errUnresolvedImport, errUnresolvedImportTreatedAsExternal } from './utils/error'; -import { readFile } from './utils/fs'; +import { promises as fs } from './utils/fs'; import { isAbsolute, isRelative, resolve } from './utils/path'; import { Queue } from './utils/queue'; import relativeId from './utils/relativeId'; @@ -240,7 +240,8 @@ export class ModuleLoader { let source: LoadResult; try { source = await this.readQueue.run( - async () => (await this.pluginDriver.hookFirst('load', [id])) ?? (await readFile(id)) + async () => + (await this.pluginDriver.hookFirst('load', [id])) ?? (await fs.readFile(id, 'utf8')) ); } catch (err: any) { timeEnd('load modules', 3); diff --git a/src/utils/fs.ts b/src/utils/fs.ts index 0dc8d1ab65d..42b3535756a 100644 --- a/src/utils/fs.ts +++ b/src/utils/fs.ts @@ -1,28 +1,9 @@ -import fs from 'fs'; +import { promises as fs } from 'fs'; import { dirname } from './path'; export * from 'fs'; -export const readFile = (file: string): Promise => - new Promise((fulfil, reject) => - fs.readFile(file, 'utf-8', (err, contents) => (err ? reject(err) : fulfil(contents))) - ); - -function mkdirpath(path: string) { - const dir = dirname(path); - fs.mkdirSync(dir, { recursive: true }); -} - -export function writeFile(dest: string, data: string | Uint8Array): Promise { - return new Promise((fulfil, reject) => { - mkdirpath(dest); - - fs.writeFile(dest, data, err => { - if (err) { - reject(err); - } else { - fulfil(); - } - }); - }); +export async function writeFile(dest: string, data: string | Uint8Array): Promise { + await fs.mkdir(dirname(dest), { recursive: true }); + await fs.writeFile(dest, data); }