fs.js 1.8 KB

12345678910111213141516171819202122232425262728293031
  1. // promisify ourselves, because older nodes don't have fs.promises
  2. import fs from 'fs';
  3. // sync ones just take the sync version from node
  4. export { chmodSync, mkdirSync, renameSync, rmdirSync, rmSync, statSync, lstatSync, unlinkSync, } from 'fs';
  5. import { readdirSync as rdSync } from 'fs';
  6. export const readdirSync = (path) => rdSync(path, { withFileTypes: true });
  7. // unrolled for better inlining, this seems to get better performance
  8. // than something like:
  9. // const makeCb = (res, rej) => (er, ...d) => er ? rej(er) : res(...d)
  10. // which would be a bit cleaner.
  11. const chmod = (path, mode) => new Promise((res, rej) => fs.chmod(path, mode, (er, ...d) => (er ? rej(er) : res(...d))));
  12. const mkdir = (path, options) => new Promise((res, rej) => fs.mkdir(path, options, (er, made) => (er ? rej(er) : res(made))));
  13. const readdir = (path) => new Promise((res, rej) => fs.readdir(path, { withFileTypes: true }, (er, data) => er ? rej(er) : res(data)));
  14. const rename = (oldPath, newPath) => new Promise((res, rej) => fs.rename(oldPath, newPath, (er, ...d) => er ? rej(er) : res(...d)));
  15. const rm = (path, options) => new Promise((res, rej) => fs.rm(path, options, (er, ...d) => (er ? rej(er) : res(...d))));
  16. const rmdir = (path) => new Promise((res, rej) => fs.rmdir(path, (er, ...d) => (er ? rej(er) : res(...d))));
  17. const stat = (path) => new Promise((res, rej) => fs.stat(path, (er, data) => (er ? rej(er) : res(data))));
  18. const lstat = (path) => new Promise((res, rej) => fs.lstat(path, (er, data) => (er ? rej(er) : res(data))));
  19. const unlink = (path) => new Promise((res, rej) => fs.unlink(path, (er, ...d) => (er ? rej(er) : res(...d))));
  20. export const promises = {
  21. chmod,
  22. mkdir,
  23. readdir,
  24. rename,
  25. rm,
  26. rmdir,
  27. stat,
  28. lstat,
  29. unlink,
  30. };
  31. //# sourceMappingURL=fs.js.map