aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/fs.exports.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/fs.exports.js')
-rw-r--r--src/bun.js/fs.exports.js358
1 files changed, 143 insertions, 215 deletions
diff --git a/src/bun.js/fs.exports.js b/src/bun.js/fs.exports.js
index 30a49c03b..a6b132392 100644
--- a/src/bun.js/fs.exports.js
+++ b/src/bun.js/fs.exports.js
@@ -1,112 +1,148 @@
var { direct, isPromise, isCallable } = import.meta.primordials;
+var promises = import.meta.require("node:fs/promises");
var fs = Bun.fs();
var debug = process.env.DEBUG ? console.log : () => {};
-
export var access = function access(...args) {
- callbackify(fs.accessSync, args);
-};
-export var appendFile = function appendFile(...args) {
- callbackify(fs.appendFileSync, args);
-};
-export var close = function close(...args) {
- callbackify(fs.closeSync, args);
-};
-export var rm = function rm(...args) {
- callbackify(fs.rmSync, args);
-};
-export var copyFile = function copyFile(...args) {
- callbackify(fs.copyFileSync, args);
-};
-export var exists = function exists(...args) {
- callbackify(fs.existsSync, args);
-};
-export var chown = function chown(...args) {
- callbackify(fs.chownSync, args);
-};
-export var chmod = function chmod(...args) {
- callbackify(fs.chmodSync, args);
-};
-export var fchmod = function fchmod(...args) {
- callbackify(fs.fchmodSync, args);
-};
-export var fchown = function fchown(...args) {
- callbackify(fs.fchownSync, args);
-};
-export var fstat = function fstat(...args) {
- callbackify(fs.fstatSync, args);
-};
-export var fsync = function fsync(...args) {
- callbackify(fs.fsyncSync, args);
-};
-export var ftruncate = function ftruncate(...args) {
- callbackify(fs.ftruncateSync, args);
-};
-export var futimes = function futimes(...args) {
- callbackify(fs.futimesSync, args);
-};
-export var lchmod = function lchmod(...args) {
- callbackify(fs.lchmodSync, args);
-};
-export var lchown = function lchown(...args) {
- callbackify(fs.lchownSync, args);
-};
-export var link = function link(...args) {
- callbackify(fs.linkSync, args);
-};
-export var lstat = function lstat(...args) {
- callbackify(fs.lstatSync, args);
-};
-export var mkdir = function mkdir(...args) {
- callbackify(fs.mkdirSync, args);
-};
-export var mkdtemp = function mkdtemp(...args) {
- callbackify(fs.mkdtempSync, args);
-};
-export var open = function open(...args) {
- callbackify(fs.openSync, args);
-};
-export var read = function read(...args) {
- callbackify(fs.readSync, args);
-};
-export var write = function write(...args) {
- callbackify(fs.writeSync, args);
-};
-export var readdir = function readdir(...args) {
- callbackify(fs.readdirSync, args);
-};
-export var readFile = function readFile(...args) {
- callbackify(fs.readFileSync, args);
-};
-export var writeFile = function writeFile(...args) {
- callbackify(fs.writeFileSync, args);
-};
-export var readlink = function readlink(...args) {
- callbackify(fs.readlinkSync, args);
-};
-export var realpath = function realpath(...args) {
- callbackify(fs.realpathSync, args);
-};
-export var rename = function rename(...args) {
- callbackify(fs.renameSync, args);
-};
-export var stat = function stat(...args) {
- callbackify(fs.statSync, args);
-};
-export var symlink = function symlink(...args) {
- callbackify(fs.symlinkSync, args);
-};
-export var truncate = function truncate(...args) {
- callbackify(fs.truncateSync, args);
-};
-export var unlink = function unlink(...args) {
- callbackify(fs.unlinkSync, args);
-};
-export var utimes = function utimes(...args) {
- callbackify(fs.utimesSync, args);
-};
-export var lutimes = function lutimes(...args) {
- callbackify(fs.lutimesSync, args);
-};
+ callbackify(fs.accessSync, args);
+ },
+ appendFile = function appendFile(...args) {
+ callbackify(fs.appendFileSync, args);
+ },
+ close = function close(...args) {
+ callbackify(fs.closeSync, args);
+ },
+ rm = function rm(...args) {
+ callbackify(fs.rmSync, args);
+ },
+ copyFile = function copyFile(...args) {
+ callbackify(fs.copyFileSync, args);
+ },
+ exists = function exists(...args) {
+ callbackify(fs.existsSync, args);
+ },
+ chown = function chown(...args) {
+ callbackify(fs.chownSync, args);
+ },
+ chmod = function chmod(...args) {
+ callbackify(fs.chmodSync, args);
+ },
+ fchmod = function fchmod(...args) {
+ callbackify(fs.fchmodSync, args);
+ },
+ fchown = function fchown(...args) {
+ callbackify(fs.fchownSync, args);
+ },
+ fstat = function fstat(...args) {
+ callbackify(fs.fstatSync, args);
+ },
+ fsync = function fsync(...args) {
+ callbackify(fs.fsyncSync, args);
+ },
+ ftruncate = function ftruncate(...args) {
+ callbackify(fs.ftruncateSync, args);
+ },
+ futimes = function futimes(...args) {
+ callbackify(fs.futimesSync, args);
+ },
+ lchmod = function lchmod(...args) {
+ callbackify(fs.lchmodSync, args);
+ },
+ lchown = function lchown(...args) {
+ callbackify(fs.lchownSync, args);
+ },
+ link = function link(...args) {
+ callbackify(fs.linkSync, args);
+ },
+ lstat = function lstat(...args) {
+ callbackify(fs.lstatSync, args);
+ },
+ mkdir = function mkdir(...args) {
+ callbackify(fs.mkdirSync, args);
+ },
+ mkdtemp = function mkdtemp(...args) {
+ callbackify(fs.mkdtempSync, args);
+ },
+ open = function open(...args) {
+ callbackify(fs.openSync, args);
+ },
+ read = function read(...args) {
+ callbackify(fs.readSync, args);
+ },
+ write = function write(...args) {
+ callbackify(fs.writeSync, args);
+ },
+ readdir = function readdir(...args) {
+ callbackify(fs.readdirSync, args);
+ },
+ readFile = function readFile(...args) {
+ callbackify(fs.readFileSync, args);
+ },
+ writeFile = function writeFile(...args) {
+ callbackify(fs.writeFileSync, args);
+ },
+ readlink = function readlink(...args) {
+ callbackify(fs.readlinkSync, args);
+ },
+ realpath = function realpath(...args) {
+ callbackify(fs.realpathSync, args);
+ },
+ rename = function rename(...args) {
+ callbackify(fs.renameSync, args);
+ },
+ stat = function stat(...args) {
+ callbackify(fs.statSync, args);
+ },
+ symlink = function symlink(...args) {
+ callbackify(fs.symlinkSync, args);
+ },
+ truncate = function truncate(...args) {
+ callbackify(fs.truncateSync, args);
+ },
+ unlink = function unlink(...args) {
+ callbackify(fs.unlinkSync, args);
+ },
+ utimes = function utimes(...args) {
+ callbackify(fs.utimesSync, args);
+ },
+ lutimes = function lutimes(...args) {
+ callbackify(fs.lutimesSync, args);
+ },
+ accessSync = fs.accessSync.bind(fs),
+ appendFileSync = fs.appendFileSync.bind(fs),
+ closeSync = fs.closeSync.bind(fs),
+ copyFileSync = fs.copyFileSync.bind(fs),
+ existsSync = fs.existsSync.bind(fs),
+ chownSync = fs.chownSync.bind(fs),
+ chmodSync = fs.chmodSync.bind(fs),
+ fchmodSync = fs.fchmodSync.bind(fs),
+ fchownSync = fs.fchownSync.bind(fs),
+ fstatSync = fs.fstatSync.bind(fs),
+ fsyncSync = fs.fsyncSync.bind(fs),
+ ftruncateSync = fs.ftruncateSync.bind(fs),
+ futimesSync = fs.futimesSync.bind(fs),
+ lchmodSync = fs.lchmodSync.bind(fs),
+ lchownSync = fs.lchownSync.bind(fs),
+ linkSync = fs.linkSync.bind(fs),
+ lstatSync = fs.lstatSync.bind(fs),
+ mkdirSync = fs.mkdirSync.bind(fs),
+ mkdtempSync = fs.mkdtempSync.bind(fs),
+ openSync = fs.openSync.bind(fs),
+ readSync = fs.readSync.bind(fs),
+ writeSync = fs.writeSync.bind(fs),
+ readdirSync = fs.readdirSync.bind(fs),
+ readFileSync = fs.readFileSync.bind(fs),
+ writeFileSync = fs.writeFileSync.bind(fs),
+ readlinkSync = fs.readlinkSync.bind(fs),
+ realpathSync = fs.realpathSync.bind(fs),
+ renameSync = fs.renameSync.bind(fs),
+ statSync = fs.statSync.bind(fs),
+ symlinkSync = fs.symlinkSync.bind(fs),
+ truncateSync = fs.truncateSync.bind(fs),
+ unlinkSync = fs.unlinkSync.bind(fs),
+ utimesSync = fs.utimesSync.bind(fs),
+ lutimesSync = fs.lutimesSync.bind(fs),
+ rmSync = fs.rmSync.bind(fs),
+ promises = import.meta.require("node:fs/promises");
function callbackify(fsFunction, args) {
try {
@@ -117,76 +153,7 @@ function callbackify(fsFunction, args) {
}
}
-// 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 accessSync = fs.accessSync.bind(fs);
-export var appendFileSync = fs.appendFileSync.bind(fs);
-export var closeSync = fs.closeSync.bind(fs);
-export var copyFileSync = fs.copyFileSync.bind(fs);
-export var existsSync = fs.existsSync.bind(fs);
-export var chownSync = fs.chownSync.bind(fs);
-export var chmodSync = fs.chmodSync.bind(fs);
-export var fchmodSync = fs.fchmodSync.bind(fs);
-export var fchownSync = fs.fchownSync.bind(fs);
-export var fstatSync = fs.fstatSync.bind(fs);
-export var fsyncSync = fs.fsyncSync.bind(fs);
-export var ftruncateSync = fs.ftruncateSync.bind(fs);
-export var futimesSync = fs.futimesSync.bind(fs);
-export var lchmodSync = fs.lchmodSync.bind(fs);
-export var lchownSync = fs.lchownSync.bind(fs);
-export var linkSync = fs.linkSync.bind(fs);
-export var lstatSync = fs.lstatSync.bind(fs);
-export var mkdirSync = fs.mkdirSync.bind(fs);
-export var mkdtempSync = fs.mkdtempSync.bind(fs);
-export var openSync = fs.openSync.bind(fs);
-export var readSync = fs.readSync.bind(fs);
-export var writeSync = fs.writeSync.bind(fs);
-export var readdirSync = fs.readdirSync.bind(fs);
-export var readFileSync = fs.readFileSync.bind(fs);
-export var writeFileSync = fs.writeFileSync.bind(fs);
-export var readlinkSync = fs.readlinkSync.bind(fs);
-export var realpathSync = fs.realpathSync.bind(fs);
-export var renameSync = fs.renameSync.bind(fs);
-export var statSync = fs.statSync.bind(fs);
-export var symlinkSync = fs.symlinkSync.bind(fs);
-export var truncateSync = fs.truncateSync.bind(fs);
-export var unlinkSync = fs.unlinkSync.bind(fs);
-export var utimesSync = fs.utimesSync.bind(fs);
-export var lutimesSync = fs.lutimesSync.bind(fs);
-export var rmSync = fs.rmSync.bind(fs);
-
-// Results from Object.keys() in Node 18
+// Results from Object.keys() in Node 1,
// fd
// path
// flags
@@ -575,9 +542,9 @@ var internalCreateReadStream = function createReadStream(path, options) {
const ReadStream = getLazyReadStream();
return new ReadStream(path, options);
};
-export var createReadStream = internalCreateReadStream;
var _lazyWriteStream;
+export var createReadStream = internalCreateReadStream;
function getLazyWriteStream() {
if (_lazyWriteStream) return _lazyWriteStream;
@@ -912,45 +879,6 @@ Object.defineProperties(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),
- fchmod: promisify(fs.fchmodSync),
- fchown: promisify(fs.fchownSync),
- fstat: promisify(fs.fstatSync),
- fsync: promisify(fs.fsyncSync),
- ftruncate: promisify(fs.ftruncateSync),
- futimes: promisify(fs.futimesSync),
- lchmod: promisify(fs.lchmodSync),
- 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),
- readdir: promisify(fs.readdirSync),
- 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),
- write: promisify(fs.writeSync),
- writeFile: promisify(fs.writeFileSync),
-};
-
-promises.readFile = promises.readfile = promisify(fs.readFileSync);
-
// lol
realpath.native = realpath;
realpathSync.native = realpathSync;