- // This is adapted from https://github.com/normalize/mz
- // Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors
- const u = require('universalify').fromCallback
- const fs = require('graceful-fs')
-
- const api = [
- 'access',
- 'appendFile',
- 'chmod',
- 'chown',
- 'close',
- 'fchmod',
- 'fchown',
- 'fdatasync',
- 'fstat',
- 'fsync',
- 'ftruncate',
- 'futimes',
- 'lchown',
- 'link',
- 'lstat',
- 'mkdir',
- 'open',
- 'read',
- 'readFile',
- 'readdir',
- 'readlink',
- 'realpath',
- 'rename',
- 'rmdir',
- 'stat',
- 'symlink',
- 'truncate',
- 'unlink',
- 'utimes',
- 'write',
- 'writeFile'
- ]
- // fs.mkdtemp() was added in Node.js v5.10.0, so check if it exists
- typeof fs.mkdtemp === 'function' && api.push('mkdtemp')
-
- // Export all keys:
- Object.keys(fs).forEach(key => {
- exports[key] = fs[key]
- })
-
- // Universalify async methods:
- api.forEach(method => {
- exports[method] = u(fs[method])
- })
-
- // We differ from mz/fs in that we still ship the old, broken, fs.exists()
- // since we are a drop-in replacement for the native module
- exports.exists = function (filename, callback) {
- if (typeof callback === 'function') {
- return fs.exists(filename, callback)
- }
- return new Promise(resolve => {
- return fs.exists(filename, resolve)
- })
- }