|
'use strict' |
|
|
|
|
|
const u = require('universalify').fromCallback |
|
const fs = require('graceful-fs') |
|
|
|
const api = [ |
|
'access', |
|
'appendFile', |
|
'chmod', |
|
'chown', |
|
'close', |
|
'copyFile', |
|
'fchmod', |
|
'fchown', |
|
'fdatasync', |
|
'fstat', |
|
'fsync', |
|
'ftruncate', |
|
'futimes', |
|
'lchmod', |
|
'lchown', |
|
'link', |
|
'lstat', |
|
'mkdir', |
|
'mkdtemp', |
|
'open', |
|
'opendir', |
|
'readdir', |
|
'readFile', |
|
'readlink', |
|
'realpath', |
|
'rename', |
|
'rm', |
|
'rmdir', |
|
'stat', |
|
'symlink', |
|
'truncate', |
|
'unlink', |
|
'utimes', |
|
'writeFile' |
|
].filter(key => { |
|
|
|
|
|
|
|
return typeof fs[key] === 'function' |
|
}) |
|
|
|
|
|
Object.assign(exports, fs) |
|
|
|
|
|
api.forEach(method => { |
|
exports[method] = u(fs[method]) |
|
}) |
|
|
|
|
|
|
|
exports.exists = function (filename, callback) { |
|
if (typeof callback === 'function') { |
|
return fs.exists(filename, callback) |
|
} |
|
return new Promise(resolve => { |
|
return fs.exists(filename, resolve) |
|
}) |
|
} |
|
|
|
|
|
|
|
exports.read = function (fd, buffer, offset, length, position, callback) { |
|
if (typeof callback === 'function') { |
|
return fs.read(fd, buffer, offset, length, position, callback) |
|
} |
|
return new Promise((resolve, reject) => { |
|
fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => { |
|
if (err) return reject(err) |
|
resolve({ bytesRead, buffer }) |
|
}) |
|
}) |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.write = function (fd, buffer, ...args) { |
|
if (typeof args[args.length - 1] === 'function') { |
|
return fs.write(fd, buffer, ...args) |
|
} |
|
|
|
return new Promise((resolve, reject) => { |
|
fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => { |
|
if (err) return reject(err) |
|
resolve({ bytesWritten, buffer }) |
|
}) |
|
}) |
|
} |
|
|
|
|
|
|
|
|
|
exports.readv = function (fd, buffers, ...args) { |
|
if (typeof args[args.length - 1] === 'function') { |
|
return fs.readv(fd, buffers, ...args) |
|
} |
|
|
|
return new Promise((resolve, reject) => { |
|
fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => { |
|
if (err) return reject(err) |
|
resolve({ bytesRead, buffers }) |
|
}) |
|
}) |
|
} |
|
|
|
|
|
|
|
|
|
exports.writev = function (fd, buffers, ...args) { |
|
if (typeof args[args.length - 1] === 'function') { |
|
return fs.writev(fd, buffers, ...args) |
|
} |
|
|
|
return new Promise((resolve, reject) => { |
|
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => { |
|
if (err) return reject(err) |
|
resolve({ bytesWritten, buffers }) |
|
}) |
|
}) |
|
} |
|
|
|
|
|
if (typeof fs.realpath.native === 'function') { |
|
exports.realpath.native = u(fs.realpath.native) |
|
} else { |
|
process.emitWarning( |
|
'fs.realpath.native is not a function. Is fs being monkey-patched?', |
|
'Warning', 'fs-extra-WARN0003' |
|
) |
|
} |
|
|