index.js 737 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. var fs = require('fs');
  3. var nullCheck = require('null-check');
  4. var access = module.exports = function (pth, mode, cb) {
  5. if (typeof pth !== 'string') {
  6. throw new TypeError('path must be a string');
  7. }
  8. if (typeof mode === 'function') {
  9. cb = mode;
  10. mode = access.F_OK;
  11. } else if (typeof cb !== 'function') {
  12. throw new TypeError('callback must be a function');
  13. }
  14. if (!nullCheck(pth, cb)) {
  15. return;
  16. }
  17. mode = mode | 0;
  18. if (mode === access.F_OK) {
  19. fs.stat(pth, cb);
  20. }
  21. };
  22. access.sync = function (pth, mode) {
  23. nullCheck(pth);
  24. mode = mode === undefined ? access.F_OK : mode | 0;
  25. if (mode === access.F_OK) {
  26. fs.statSync(pth);
  27. }
  28. };
  29. access.F_OK = 0;
  30. access.R_OK = 4;
  31. access.W_OK = 2;
  32. access.X_OK = 1;