You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.2 KiB
61 lines
1.2 KiB
// 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) |
|
}) |
|
}
|
|
|