diff options
author | 2022-10-05 17:58:26 -0700 | |
---|---|---|
committer | 2022-10-05 18:07:41 -0700 | |
commit | 632e4ac6acd4bd2aa2147eca5c72df12a768d71d (patch) | |
tree | e79f575999ebb624866e220ab76b0d4e3781f00e /src | |
parent | 18ae17871d1e69ebaad52119aef648bf60761fd2 (diff) | |
download | bun-632e4ac6acd4bd2aa2147eca5c72df12a768d71d.tar.gz bun-632e4ac6acd4bd2aa2147eca5c72df12a768d71d.tar.zst bun-632e4ac6acd4bd2aa2147eca5c72df12a768d71d.zip |
Improve stack traces in fs functions
This is a hack
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/fs.exports.js | 119 |
1 files changed, 57 insertions, 62 deletions
diff --git a/src/bun.js/fs.exports.js b/src/bun.js/fs.exports.js index f8e44f330..495250a3a 100644 --- a/src/bun.js/fs.exports.js +++ b/src/bun.js/fs.exports.js @@ -107,19 +107,13 @@ export var lutimes = function lutimes(...args) { }; function callbackify(fsFunction, args) { - queueMicrotask(function () { - try { - args[args.length - 1]( - null, - fsFunction.apply(fs, args.slice(0, args.length - 1)) - ); - } catch (err) { - args[args.length - 1](err); - } finally { - // ensure we don't leak it - args = null; - } - }); + + try { + const result = fsFunction.apply(fs, args.slice(0, args.length - 1)); + queueMicrotask(() => args[args.length - 1](null, result)); + } catch (e) { + queueMicrotask(() => args[args.length - 1](e)); + } } // note: this is not quite the same as how node does it @@ -197,11 +191,11 @@ export var createWriteStream = fs.createWriteStream.bind(fs); export var promises = { access: promisify(fs.accessSync), appendFile: promisify(fs.appendFileSync), + chmod: promisify(fs.chmodSync), + chown: promisify(fs.chownSync), close: promisify(fs.closeSync), copyFile: promisify(fs.copyFileSync), exists: promisify(fs.existsSync), - chown: promisify(fs.chownSync), - chmod: promisify(fs.chmodSync), fchmod: promisify(fs.fchmodSync), fchown: promisify(fs.fchownSync), fstat: promisify(fs.fstatSync), @@ -212,23 +206,23 @@ export var promises = { lchown: promisify(fs.lchownSync), link: promisify(fs.linkSync), lstat: promisify(fs.lstatSync), + lutimes: promisify(fs.lutimesSync), mkdir: promisify(fs.mkdirSync), mkdtemp: promisify(fs.mkdtempSync), open: promisify(fs.openSync), read: promisify(fs.readSync), - write: promisify(fs.writeSync), readdir: promisify(fs.readdirSync), - writeFile: promisify(fs.writeFileSync), readlink: promisify(fs.readlinkSync), realpath: promisify(fs.realpathSync), rename: promisify(fs.renameSync), + rm: promisify(fs.rmSync), stat: promisify(fs.statSync), symlink: promisify(fs.symlinkSync), truncate: promisify(fs.truncateSync), unlink: promisify(fs.unlinkSync), utimes: promisify(fs.utimesSync), - lutimes: promisify(fs.lutimesSync), - rm: promisify(fs.rmSync), + write: promisify(fs.writeSync), + writeFile: promisify(fs.writeFileSync), }; promises.readFile = promises.readfile = promisify(fs.readFileSync); @@ -240,76 +234,77 @@ realpathSync.native = realpathSync; export default { [Symbol.for("CommonJS")]: 0, access, + accessSync, appendFile, + appendFileSync, + chmod, + chmodSync, + chown, + chownSync, close, + closeSync, + constants, copyFile, + copyFileSync, + createReadStream, + createWriteStream, exists, - chown, - chmod, + existsSync, fchmod, + fchmodSync, fchown, + fchownSync, fstat, + fstatSync, fsync, + fsyncSync, ftruncate, + ftruncateSync, futimes, + futimesSync, lchmod, + lchmodSync, lchown, + lchownSync, link, + linkSync, lstat, + lstatSync, + lutimes, + lutimesSync, mkdir, + mkdirSync, mkdtemp, + mkdtempSync, open, + openSync, + promises, read, - write, - readdir, readFile, - writeFile, - readlink, - realpath, - rename, - stat, - symlink, - truncate, - unlink, - utimes, - lutimes, - accessSync, - appendFileSync, - closeSync, - copyFileSync, - existsSync, - chownSync, - chmodSync, - fchmodSync, - fchownSync, - fstatSync, - fsyncSync, - ftruncateSync, - futimesSync, - lchmodSync, - lchownSync, - linkSync, - lstatSync, - mkdirSync, - mkdtempSync, - openSync, + readFileSync, readSync, - writeSync, + readdir, readdirSync, - readFileSync, - writeFileSync, - rmSync, + readlink, readlinkSync, + realpath, realpathSync, + rename, renameSync, + rm, + rmSync, + stat, statSync, + symlink, symlinkSync, + truncate, truncateSync, + unlink, unlinkSync, + utimes, utimesSync, - lutimesSync, - createReadStream, - createWriteStream, - constants, - promises, + write, + writeFile, + writeFileSync, + writeSync, }; |