@plugjs/plug
Version:
PlugJS Build System ===================
72 lines • 2.75 kB
JavaScript
import { constants } from 'node:fs';
import fsp from 'node:fs/promises';
/*
* I have no idea why sometimes stacks don't have a trace when coming out of
* the "node:fs/promises" api... There is a _stack_ property on the object
* but it simply includes the first line (if so), no thing further...
*
* Upon further inspection, it _seems_ this is related to some issues with the
* Error.captureStackTrace(...) function. If we pass a function to it as
* second parameter in our functions below, we end up with no stacks as well!
*
* So, for now, let's catch all errors, invoke `Error.captureStackTrace`
* manually without any parameter (besides the error itself), and fail with
* this.
*
* Hopefully, it'll get fixed, eventually, but for now let's keep this wrapper
* around!
*/
/* Process every entry in "node:fs/promises" */
const fs = Object.entries(fsp).reduce((fs, [key, val]) => {
if (typeof val === 'function') {
/* If the value is a function, wrap it! */
const f = function (...args) {
/* Call the function, and _catch_ any error */
return val.apply(fsp, args)
.catch(/* coverage ignore next*/ (error) => {
/* For any error caught, we fill in the stack trace */
Error.captureStackTrace(error);
throw error;
});
};
/* Make sure that the functions are called correctly */
Object.defineProperty(f, 'name', { value: key });
/* Assign the wrapper to our exports */
fs[key] = f;
}
/* Return the "reduced" exports */
return fs;
}, {});
/* Export all the wrappers to "node:fs/promises" individually */
export const access = fs.access;
export const copyFile = fs.copyFile;
export const cp = fs.cp;
export const open = fs.open;
export const opendir = fs.opendir;
export const rename = fs.rename;
export const truncate = fs.truncate;
export const rm = fs.rm;
export const rmdir = fs.rmdir;
export const mkdir = fs.mkdir;
export const readdir = fs.readdir;
export const readlink = fs.readlink;
export const symlink = fs.symlink;
export const lstat = fs.lstat;
export const stat = fs.stat;
export const link = fs.link;
export const unlink = fs.unlink;
export const chmod = fs.chmod;
export const lchmod = fs.lchmod;
export const lchown = fs.lchown;
export const chown = fs.chown;
export const utimes = fs.utimes;
export const lutimes = fs.lutimes;
export const realpath = fs.realpath;
export const mkdtemp = fs.mkdtemp;
export const writeFile = fs.writeFile;
export const appendFile = fs.appendFile;
export const readFile = fs.readFile;
export const watch = fs.watch;
/* Export constants from "node:fs" */
export const fsConstants = constants;
//# sourceMappingURL=fs.js.map