| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | 
							- 'use strict'
 
- // 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',
 
-   'copyFile',
 
-   'fchmod',
 
-   'fchown',
 
-   'fdatasync',
 
-   'fstat',
 
-   'fsync',
 
-   'ftruncate',
 
-   'futimes',
 
-   'lchown',
 
-   'lchmod',
 
-   'link',
 
-   'lstat',
 
-   'mkdir',
 
-   'mkdtemp',
 
-   'open',
 
-   'readFile',
 
-   'readdir',
 
-   'readlink',
 
-   'realpath',
 
-   'rename',
 
-   'rmdir',
 
-   'stat',
 
-   'symlink',
 
-   'truncate',
 
-   'unlink',
 
-   'utimes',
 
-   'writeFile'
 
- ].filter(key => {
 
-   // Some commands are not available on some systems. Ex:
 
-   // fs.copyFile was added in Node.js v8.5.0
 
-   // fs.mkdtemp was added in Node.js v5.10.0
 
-   // fs.lchown is not available on at least some Linux
 
-   return typeof fs[key] === 'function'
 
- })
 
- // Export all keys:
 
- Object.keys(fs).forEach(key => {
 
-   if (key === 'promises') {
 
-     // fs.promises is a getter property that triggers ExperimentalWarning
 
-     // Don't re-export it here, the getter is defined in "lib/index.js"
 
-     return
 
-   }
 
-   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)
 
-   })
 
- }
 
- // fs.read() & fs.write need special treatment due to multiple callback args
 
- 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 })
 
-     })
 
-   })
 
- }
 
- // Function signature can be
 
- // fs.write(fd, buffer[, offset[, length[, position]]], callback)
 
- // OR
 
- // fs.write(fd, string[, position[, encoding]], callback)
 
- // We need to handle both cases, so we use ...args
 
- 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 })
 
-     })
 
-   })
 
- }
 
 
  |