@browsery/fs
Version:
Browser compatible NodeJS fs module
208 lines (199 loc) • 3.33 kB
JavaScript
;
function panic(api) {
return function () {
throw new Error(`fs.${api} is not implemented in browser`);
};
}
const fsFuncs = [
'appendFile',
'appendFileSync',
'access',
'accessSync',
'chown',
'chownSync',
'chmod',
'chmodSync',
'close',
'closeSync',
'copyFile',
'copyFileSync',
'createReadStream',
'createWriteStream',
'exists',
'existsSync',
'fchown',
'fchownSync',
'fchmod',
'fchmodSync',
'fdatasync',
'fdatasyncSync',
'fstat',
'fstatSync',
'fsync',
'fsyncSync',
'ftruncate',
'ftruncateSync',
'futimes',
'futimesSync',
'lchown',
'lchownSync',
'lchmod',
'lchmodSync',
'link',
'linkSync',
'lstat',
'lstatSync',
'mkdir',
'mkdirSync',
'mkdtemp',
'mkdtempSync',
'open',
'openSync',
'opendir',
'opendirSync',
'readdir',
'readdirSync',
'read',
'readSync',
'readFile',
'readFileSync',
'readlink',
'readlinkSync',
'realpath',
'realpathSync',
'rename',
'renameSync',
'rmdir',
'rmdirSync',
'stat',
'statSync',
'symlink',
'symlinkSync',
'truncate',
'truncateSync',
'unwatchFile',
'unlink',
'unlinkSync',
'utimes',
'utimesSync',
'watch',
'watchFile',
'writeFile',
'writeFileSync',
'write',
'writeSync',
'writev',
'writevSync',
'Dir',
'Dirent',
'Stats',
'ReadStream',
'WriteStream',
'FileReadStream',
'FileWriteStream',
];
const promiseFuncs = [
'access',
'copyFile',
'open',
'opendir',
'rename',
'truncate',
'rmdir',
'mkdir',
'readdir',
'readlink',
'symlink',
'lstat',
'stat',
'link',
'unlink',
'chmod',
'lchmod',
'lchown',
'chown',
'utimes',
'realpath',
'mkdtemp',
'writeFile',
'appendFile',
'readFile',
];
const fs = {
F_OK: 0,
R_OK: 4,
W_OK: 2,
X_OK: 1,
constants: {
UV_FS_SYMLINK_DIR: 1,
UV_FS_SYMLINK_JUNCTION: 2,
O_RDONLY: 0,
O_WRONLY: 1,
O_RDWR: 2,
UV_DIRENT_UNKNOWN: 0,
UV_DIRENT_FILE: 1,
UV_DIRENT_DIR: 2,
UV_DIRENT_LINK: 3,
UV_DIRENT_FIFO: 4,
UV_DIRENT_SOCKET: 5,
UV_DIRENT_CHAR: 6,
UV_DIRENT_BLOCK: 7,
S_IFMT: 61440,
S_IFREG: 32768,
S_IFDIR: 16384,
S_IFCHR: 8192,
S_IFBLK: 24576,
S_IFIFO: 4096,
S_IFLNK: 40960,
S_IFSOCK: 49152,
O_CREAT: 512,
O_EXCL: 2048,
UV_FS_O_FILEMAP: 0,
O_NOCTTY: 131072,
O_TRUNC: 1024,
O_APPEND: 8,
O_DIRECTORY: 1048576,
O_NOFOLLOW: 256,
O_SYNC: 128,
O_DSYNC: 4194304,
O_SYMLINK: 2097152,
O_NONBLOCK: 4,
S_IRWXU: 448,
S_IRUSR: 256,
S_IWUSR: 128,
S_IXUSR: 64,
S_IRWXG: 56,
S_IRGRP: 32,
S_IWGRP: 16,
S_IXGRP: 8,
S_IRWXO: 7,
S_IROTH: 4,
S_IWOTH: 2,
S_IXOTH: 1,
F_OK: 0,
R_OK: 4,
W_OK: 2,
X_OK: 1,
UV_FS_COPYFILE_EXCL: 1,
COPYFILE_EXCL: 1,
UV_FS_COPYFILE_FICLONE: 2,
COPYFILE_FICLONE: 2,
UV_FS_COPYFILE_FICLONE_FORCE: 4,
COPYFILE_FICLONE_FORCE: 4,
},
promises: {},
};
let i;
let ii;
let n;
for (i = 0, ii = fsFuncs.length; i < ii; i++) {
n = fsFuncs[i];
fs[n] = panic(n);
}
fs.realpath.native = panic('realpath.native');
fs.realpathSync.native = panic('realpathSync.native');
for (i = 0, ii = promiseFuncs.length; i < ii; i++) {
n = promiseFuncs[i];
fs.promises[n] = panic('promises.' + n);
}
module.exports = fs;