var Promise = require('any-promise') var fs try { fs = require('graceful-fs') } catch(err) { fs = require('fs') } var api = [ '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' ] typeof fs.access === 'function' && api.push('access') typeof fs.copyFile === 'function' && api.push('copyFile') typeof fs.mkdtemp === 'function' && api.push('mkdtemp') require('thenify-all').withCallback(fs, exports, api) exports.exists = function (filename, callback) { // callback if (typeof callback === 'function') { return fs.stat(filename, function (err) { callback(null, !err); }) } // or promise return new Promise(function (resolve) { fs.stat(filename, function (err) { resolve(!err) }) }) }