diff options
Diffstat (limited to 'src/bun.js/fs_promises.exports.js')
-rw-r--r-- | src/bun.js/fs_promises.exports.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/bun.js/fs_promises.exports.js b/src/bun.js/fs_promises.exports.js new file mode 100644 index 000000000..c1dce2291 --- /dev/null +++ b/src/bun.js/fs_promises.exports.js @@ -0,0 +1,108 @@ +var fs = Bun.fs(); + +// note: this is not quite the same as how node does it +// in some cases, node swaps around arguments or makes small tweaks to the return type +// this is just better than nothing. +function promisify(fsFunction) { + // TODO: remove variadic arguments + // we can use new Function() here instead + // based on fsFucntion.length + var obj = { + [fsFunction.name]: function (resolve, reject, args) { + var result; + try { + result = fsFunction.apply(fs, args); + args = undefined; + } catch (err) { + args = undefined; + reject(err); + return; + } + + resolve(result); + }, + }; + + var func = obj[fsFunction.name]; + + // TODO: consider @createPromiseCapabiilty intrinsic + return (...args) => { + return new Promise((resolve, reject) => { + func(resolve, reject, args); + }); + }; +} + +export var access = promisify(fs.accessSync); +export var appendFile = promisify(fs.appendFileSync); +export var close = promisify(fs.closeSync); +export var copyFile = promisify(fs.copyFileSync); +export var exists = promisify(fs.existsSync); +export var chown = promisify(fs.chownSync); +export var chmod = promisify(fs.chmodSync); +export var fchmod = promisify(fs.fchmodSync); +export var fchown = promisify(fs.fchownSync); +export var fstat = promisify(fs.fstatSync); +export var fsync = promisify(fs.fsyncSync); +export var ftruncate = promisify(fs.ftruncateSync); +export var futimes = promisify(fs.futimesSync); +export var lchmod = promisify(fs.lchmodSync); +export var lchown = promisify(fs.lchownSync); +export var link = promisify(fs.linkSync); +export var lstat = promisify(fs.lstatSync); +export var mkdir = promisify(fs.mkdirSync); +export var mkdtemp = promisify(fs.mkdtempSync); +export var open = promisify(fs.openSync); +export var read = promisify(fs.readSync); +export var write = promisify(fs.writeSync); +export var readdir = promisify(fs.readdirSync); +export var readFile = promisify(fs.readFileSync); +export var readfile = readFile; +export var writeFile = promisify(fs.writeFileSync); +export var readlink = promisify(fs.readlinkSync); +export var realpath = promisify(fs.realpathSync); +export var rename = promisify(fs.renameSync); +export var stat = promisify(fs.statSync); +export var symlink = promisify(fs.symlinkSync); +export var truncate = promisify(fs.truncateSync); +export var unlink = promisify(fs.unlinkSync); +export var utimes = promisify(fs.utimesSync); +export var lutimes = promisify(fs.lutimesSync); + +export default { + access, + appendFile, + close, + copyFile, + exists, + chown, + chmod, + fchmod, + fchown, + fstat, + readfile, + fsync, + ftruncate, + futimes, + lchmod, + lchown, + link, + lstat, + mkdir, + mkdtemp, + open, + read, + write, + readdir, + readFile, + writeFile, + readlink, + realpath, + rename, + stat, + symlink, + truncate, + unlink, + utimes, + lutimes, +}; |