|
import * as fs from 'graceful-fs'; |
|
import * as es6Promise from 'es6-promise'; |
|
import { dirname, sep, resolve } from 'path'; |
|
import mkdirp from 'mkdirp'; |
|
import * as fs$1 from 'fs'; |
|
import _rimraf from 'rimraf'; |
|
|
|
function resolvePath(args) { |
|
return resolve.apply(null, args); |
|
} |
|
|
|
function normaliseArguments(args) { |
|
var len = args.length; |
|
|
|
var buildingPath = true; |
|
var pathargs = []; |
|
var normalised = [null]; |
|
var i = undefined; |
|
|
|
for (i = 0; i < len; i += 1) { |
|
if (buildingPath && typeof args[i] === 'string') { |
|
pathargs[i] = args[i]; |
|
} else { |
|
buildingPath = false; |
|
normalised.push(args[i]); |
|
} |
|
} |
|
|
|
normalised[0] = resolvePath(pathargs); |
|
|
|
return normalised; |
|
} |
|
|
|
function asyncMethod(methodName) { |
|
return function () { |
|
var args = normaliseArguments(arguments); |
|
|
|
return new Promise(function (fulfil, reject) { |
|
args.push(function (err, result) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(result); |
|
} |
|
}); |
|
|
|
fs[methodName].apply(fs, args); |
|
}); |
|
}; |
|
} |
|
|
|
function syncMethod(methodName) { |
|
return function () { |
|
var args = normaliseArguments(arguments); |
|
return fs[methodName].apply(fs, args); |
|
}; |
|
} |
|
|
|
function asyncFileDescriptorMethod(methodName) { |
|
return function () { |
|
var args = []; |
|
var i = arguments.length; |
|
|
|
while (i--) { |
|
args[i] = arguments[i]; |
|
} |
|
|
|
return new Promise(function (fulfil, reject) { |
|
args.push(function (err, result) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(result); |
|
} |
|
}); |
|
|
|
fs[methodName].apply(fs, args); |
|
}); |
|
}; |
|
} |
|
|
|
function resolvePathAndOptions(args) { |
|
var options = undefined; |
|
var pathargs = undefined; |
|
|
|
if (typeof args[args.length - 1] === 'object') { |
|
options = args[args.length - 1]; |
|
|
|
var i = args.length - 1; |
|
pathargs = new Array(i); |
|
|
|
while (i--) { |
|
pathargs[i] = args[i]; |
|
} |
|
} else { |
|
options = {}; |
|
pathargs = args; |
|
} |
|
|
|
var resolvedPath = resolve.apply(null, pathargs); |
|
|
|
return { options: options, resolvedPath: resolvedPath }; |
|
} |
|
|
|
function createReadStream$1() { |
|
var _resolvePathAndOptions = resolvePathAndOptions(arguments); |
|
|
|
var resolvedPath = _resolvePathAndOptions.resolvedPath; |
|
var options = _resolvePathAndOptions.options; |
|
|
|
return fs.createReadStream(resolvedPath, options); |
|
} |
|
|
|
function createWriteStream$1() { |
|
var _resolvePathAndOptions2 = resolvePathAndOptions(arguments); |
|
|
|
var resolvedPath = _resolvePathAndOptions2.resolvedPath; |
|
var options = _resolvePathAndOptions2.options; |
|
|
|
mkdirp.sync(dirname(resolvedPath)); |
|
return fs.createWriteStream(resolvedPath, options); |
|
} |
|
|
|
function exists$1() { |
|
var target = resolvePath(arguments); |
|
|
|
return new Promise(function (fulfil) { |
|
fs.exists(target, function (exists) { |
|
return fulfil(exists); |
|
}); |
|
}); |
|
} |
|
|
|
function existsSync$1() { |
|
return fs.existsSync(resolvePath(arguments)); |
|
} |
|
|
|
var rename$1 = asyncMethod$1('rename'); |
|
var link$1 = asyncMethod$1('link'); |
|
|
|
var renameSync$1 = syncMethod$1('renameSync'); |
|
var linkSync$1 = syncMethod$1('linkSync'); |
|
|
|
function asyncMethod$1(methodName) { |
|
return function () { |
|
var src = resolvePath(arguments); |
|
|
|
return { |
|
to: function () { |
|
var dest = resolvePath(arguments); |
|
|
|
return new Promise(function (fulfil, reject) { |
|
mkdirp(dirname(dest), function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fs[methodName](src, dest, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(); |
|
} |
|
}); |
|
} |
|
}); |
|
}); |
|
} |
|
}; |
|
}; |
|
} |
|
|
|
function syncMethod$1(methodName) { |
|
return function () { |
|
var src = resolvePath(arguments); |
|
|
|
return { |
|
to: function () { |
|
var dest = resolvePath(arguments); |
|
|
|
mkdirp.sync(dirname(dest)); |
|
return fs[methodName](src, dest); |
|
} |
|
}; |
|
}; |
|
} |
|
|
|
function mkdir$1() { |
|
var dir = resolvePath(arguments); |
|
|
|
return new Promise(function (fulfil, reject) { |
|
mkdirp(dir, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(); |
|
} |
|
}); |
|
}); |
|
} |
|
|
|
function mkdirSync$1() { |
|
var dir = resolvePath(arguments); |
|
mkdirp.sync(dir); |
|
} |
|
|
|
function normaliseArguments$1(args) { |
|
var options = undefined; |
|
var flags = undefined; |
|
var i = undefined; |
|
|
|
if (typeof args[args.length - 1] === 'object') { |
|
options = args[args.length - 1]; |
|
flags = args[args.length - 2]; |
|
i = args.length - 2; |
|
} else { |
|
options = {}; |
|
flags = args[args.length - 1]; |
|
i = args.length - 1; |
|
} |
|
|
|
var pathargs = new Array(i); |
|
while (i--) { |
|
pathargs[i] = args[i]; |
|
} |
|
|
|
var resolvedPath = resolvePath(pathargs); |
|
|
|
return { resolvedPath: resolvedPath, options: options, flags: flags }; |
|
} |
|
|
|
function bailIfExists(src, flags, mode) { |
|
var alreadyExists = undefined; |
|
|
|
try { |
|
fs.statSync(src); |
|
alreadyExists = true; |
|
} catch (err) { |
|
if (err.code !== 'ENOENT') { |
|
throw err; |
|
} |
|
} |
|
|
|
if (alreadyExists) { |
|
|
|
|
|
fs.openSync(src, flags, mode); |
|
} |
|
} |
|
|
|
function open$1() { |
|
var _normaliseArguments = normaliseArguments$1(arguments); |
|
|
|
var src = _normaliseArguments.resolvedPath; |
|
var options = _normaliseArguments.options; |
|
var flags = _normaliseArguments.flags; |
|
|
|
if (/^.x/.test(flags)) { |
|
bailIfExists(src, flags, options.mode); |
|
} |
|
|
|
return new Promise(function (fulfil, reject) { |
|
function open() { |
|
fs.open(src, flags, options.mode, function (err, fd) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(fd); |
|
} |
|
}); |
|
} |
|
|
|
|
|
if (/^[wa]/.test(flags)) { |
|
mkdirp(dirname(src), function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
open(); |
|
} |
|
}); |
|
} else { |
|
open(); |
|
} |
|
}); |
|
} |
|
|
|
function openSync$1() { |
|
var _normaliseArguments2 = normaliseArguments$1(arguments); |
|
|
|
var src = _normaliseArguments2.resolvedPath; |
|
var options = _normaliseArguments2.options; |
|
var flags = _normaliseArguments2.flags; |
|
|
|
if (/^.x/.test(flags)) { |
|
bailIfExists(src, flags, options.mode); |
|
} |
|
|
|
|
|
if (/^[wa]/.test(flags)) { |
|
mkdirp.sync(dirname(src)); |
|
} |
|
|
|
return fs.openSync(src, flags, options.mode); |
|
} |
|
|
|
function symlink$1() { |
|
var src = resolvePath(arguments); |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions = resolvePathAndOptions(arguments); |
|
|
|
var options = _resolvePathAndOptions.options; |
|
var dest = _resolvePathAndOptions.resolvedPath; |
|
|
|
return new Promise(function (fulfil, reject) { |
|
mkdirp(dirname(dest), function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fs.symlink(src, dest, options.type, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(); |
|
} |
|
}); |
|
} |
|
}); |
|
}); |
|
} |
|
}; |
|
} |
|
|
|
function symlinkSync$1() { |
|
var src = resolvePath(arguments); |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions2 = resolvePathAndOptions(arguments); |
|
|
|
var options = _resolvePathAndOptions2.options; |
|
var dest = _resolvePathAndOptions2.resolvedPath; |
|
|
|
mkdirp.sync(dirname(dest)); |
|
return fs.symlinkSync(src, dest, options.type); |
|
} |
|
}; |
|
} |
|
|
|
var writeFile$1 = asyncMethod$2('writeFile'); |
|
var appendFile$1 = asyncMethod$2('appendFile'); |
|
|
|
var writeFileSync$1 = syncMethod$2('writeFileSync'); |
|
var appendFileSync$1 = syncMethod$2('appendFileSync'); |
|
|
|
function normaliseArguments$2(args) { |
|
args = Array.prototype.slice.call(args, 0); |
|
var opts = {}; |
|
|
|
if (typeof args[args.length - 1] === 'object' && !(args[args.length - 1] instanceof Buffer)) { |
|
opts = args.pop(); |
|
} |
|
|
|
return { opts: opts, data: args.pop(), dest: resolvePath(args) }; |
|
} |
|
|
|
function asyncMethod$2(methodName) { |
|
return function () { |
|
var _normaliseArguments = normaliseArguments$2(arguments); |
|
|
|
var dest = _normaliseArguments.dest; |
|
var data = _normaliseArguments.data; |
|
var opts = _normaliseArguments.opts; |
|
|
|
return new Promise(function (fulfil, reject) { |
|
mkdirp(dirname(dest), function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fs[methodName](dest, data, opts, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(data); |
|
} |
|
}); |
|
} |
|
}); |
|
}); |
|
}; |
|
} |
|
|
|
function syncMethod$2(methodName) { |
|
return function () { |
|
var _normaliseArguments2 = normaliseArguments$2(arguments); |
|
|
|
var dest = _normaliseArguments2.dest; |
|
var data = _normaliseArguments2.data; |
|
|
|
mkdirp.sync(dirname(dest)); |
|
return fs[methodName](dest, data); |
|
}; |
|
} |
|
|
|
function copydir$1() { |
|
var _resolvePathAndOptions = resolvePathAndOptions(arguments); |
|
|
|
var src = _resolvePathAndOptions.resolvedPath; |
|
var readOptions = _resolvePathAndOptions.options; |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions2 = resolvePathAndOptions(arguments); |
|
|
|
var dest = _resolvePathAndOptions2.resolvedPath; |
|
var writeOptions = _resolvePathAndOptions2.options; |
|
|
|
function copydir(src, dest, cb) { |
|
mkdirp(dest, function (err) { |
|
if (err) return cb(err); |
|
|
|
fs.readdir(src, function (err, files) { |
|
if (err) return cb(err); |
|
|
|
var remaining = files.length; |
|
|
|
if (!remaining) return cb(); |
|
|
|
function check(err) { |
|
if (err) { |
|
return cb(err); |
|
} |
|
|
|
if (! --remaining) { |
|
cb(); |
|
} |
|
} |
|
|
|
files.forEach(function (filename) { |
|
var srcpath = src + sep + filename; |
|
var destpath = dest + sep + filename; |
|
|
|
fs.stat(srcpath, function (err, stats) { |
|
var readStream, writeStream; |
|
|
|
if (stats.isDirectory()) { |
|
return copydir(srcpath, destpath, check); |
|
} |
|
|
|
readStream = fs.createReadStream(srcpath, readOptions); |
|
writeStream = fs.createWriteStream(destpath, writeOptions); |
|
|
|
readStream.on('error', cb); |
|
writeStream.on('error', cb); |
|
|
|
writeStream.on('close', check); |
|
|
|
readStream.pipe(writeStream); |
|
}); |
|
}); |
|
}); |
|
}); |
|
} |
|
|
|
return new Promise(function (fulfil, reject) { |
|
copydir(src, dest, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(); |
|
} |
|
}); |
|
}); |
|
} |
|
}; |
|
} |
|
|
|
function copydirSync$1() { |
|
var _resolvePathAndOptions3 = resolvePathAndOptions(arguments); |
|
|
|
var src = _resolvePathAndOptions3.resolvedPath; |
|
var readOptions = _resolvePathAndOptions3.options; |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions4 = resolvePathAndOptions(arguments); |
|
|
|
var dest = _resolvePathAndOptions4.resolvedPath; |
|
var writeOptions = _resolvePathAndOptions4.options; |
|
|
|
function copydir(src, dest) { |
|
mkdirp.sync(dest); |
|
|
|
fs.readdirSync(src).forEach(function (filename) { |
|
var srcpath = src + sep + filename; |
|
var destpath = dest + sep + filename; |
|
|
|
if (fs.statSync(srcpath).isDirectory()) { |
|
return copydir(srcpath, destpath); |
|
} |
|
|
|
var data = fs.readFileSync(srcpath, readOptions); |
|
fs.writeFileSync(destpath, data, writeOptions); |
|
}); |
|
} |
|
|
|
copydir(src, dest); |
|
} |
|
}; |
|
} |
|
|
|
function copyFile$1() { |
|
var _resolvePathAndOptions = resolvePathAndOptions(arguments); |
|
|
|
var src = _resolvePathAndOptions.resolvedPath; |
|
var readOptions = _resolvePathAndOptions.options; |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions2 = resolvePathAndOptions(arguments); |
|
|
|
var dest = _resolvePathAndOptions2.resolvedPath; |
|
var writeOptions = _resolvePathAndOptions2.options; |
|
|
|
return new Promise(function (fulfil, reject) { |
|
mkdirp(dirname(dest), function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
var readStream = fs.createReadStream(src, readOptions); |
|
var writeStream = fs.createWriteStream(dest, writeOptions); |
|
|
|
readStream.on('error', reject); |
|
writeStream.on('error', reject); |
|
|
|
writeStream.on('close', fulfil); |
|
|
|
readStream.pipe(writeStream); |
|
} |
|
}); |
|
}); |
|
} |
|
}; |
|
} |
|
|
|
function copyFileSync$1() { |
|
var _resolvePathAndOptions3 = resolvePathAndOptions(arguments); |
|
|
|
var src = _resolvePathAndOptions3.resolvedPath; |
|
var readOptions = _resolvePathAndOptions3.options; |
|
|
|
return { |
|
to: function () { |
|
var _resolvePathAndOptions4 = resolvePathAndOptions(arguments); |
|
|
|
var dest = _resolvePathAndOptions4.resolvedPath; |
|
var writeOptions = _resolvePathAndOptions4.options; |
|
|
|
var data = fs.readFileSync(src, readOptions); |
|
|
|
mkdirp.sync(dirname(dest)); |
|
fs.writeFileSync(dest, data, writeOptions); |
|
} |
|
}; |
|
} |
|
|
|
function walk(dir, callback) { |
|
var results = []; |
|
|
|
fs$1.readdir(dir, function (err, files) { |
|
if (err) return callback(err); |
|
|
|
var pending = files.length; |
|
if (!pending) return callback(null, results); |
|
|
|
files.forEach(function (file) { |
|
file = resolve(dir, file); |
|
|
|
fs$1.stat(file, function (err, stats) { |
|
if (stats && stats.isDirectory()) { |
|
walk(file, function (err, res) { |
|
results = results.concat(res); |
|
if (! --pending) callback(null, results); |
|
}); |
|
} else { |
|
results.push(file); |
|
if (! --pending) callback(null, results); |
|
} |
|
}); |
|
}); |
|
}); |
|
}; |
|
|
|
function lsr$1() { |
|
var basedir = resolvePath(arguments); |
|
|
|
return new Promise(function (fulfil, reject) { |
|
walk(basedir, function (err, result) { |
|
if (err) return reject(err); |
|
|
|
|
|
var index = basedir.length + 1; |
|
var i = result.length; |
|
while (i--) { |
|
result[i] = result[i].substring(index); |
|
} |
|
|
|
fulfil(result); |
|
}); |
|
}); |
|
} |
|
|
|
function lsrSync$1() { |
|
var basedir = resolvePath(arguments); |
|
|
|
var result = []; |
|
|
|
function processdir(dir) { |
|
fs$1.readdirSync(dir).forEach(function (file) { |
|
var filepath = dir + sep + file; |
|
|
|
if (fs$1.statSync(filepath).isDirectory()) { |
|
processdir(filepath); |
|
} else { |
|
result.push(filepath.replace(basedir + sep, '')); |
|
} |
|
}); |
|
} |
|
|
|
processdir(basedir); |
|
return result; |
|
} |
|
|
|
function rimraf$1() { |
|
var target = resolvePath(arguments); |
|
|
|
return new Promise(function (fulfil, reject) { |
|
_rimraf(target, function (err) { |
|
if (err) { |
|
reject(err); |
|
} else { |
|
fulfil(); |
|
} |
|
}); |
|
}); |
|
} |
|
|
|
function rimrafSync$1() { |
|
_rimraf.sync(resolvePath(arguments)); |
|
} |
|
|
|
var isWindows = process.platform === 'win32'; |
|
|
|
function symlinkOrCopy$1() { |
|
var _arguments = arguments; |
|
|
|
if (isWindows) { |
|
var _ret = (function () { |
|
var _resolvePathAndOptions = resolvePathAndOptions(_arguments); |
|
|
|
var src = _resolvePathAndOptions.resolvedPath; |
|
var readOptions = _resolvePathAndOptions.options; |
|
|
|
var copyDirOrFileTo = stat(src).then(function (stats) { |
|
return (stats.isDirectory() ? copydir$1 : copyFile$1).apply(null, _arguments).to; |
|
}); |
|
|
|
return { |
|
v: { |
|
to: function () { |
|
var _arguments2 = arguments; |
|
|
|
return copyDirOrFileTo.then(function (fn) { |
|
return fn.apply(null, _arguments2); |
|
}); |
|
} |
|
} |
|
}; |
|
})(); |
|
|
|
if (typeof _ret === 'object') return _ret.v; |
|
} |
|
|
|
return symlink$1.apply(null, arguments); |
|
} |
|
|
|
function symlinkOrCopySync$1() { |
|
if (isWindows) { |
|
var _resolvePathAndOptions2 = resolvePathAndOptions(arguments); |
|
|
|
var src = _resolvePathAndOptions2.resolvedPath; |
|
var readOptions = _resolvePathAndOptions2.options; |
|
|
|
return (statSync(src).isDirectory() ? copydirSync$1 : copyFileSync$1).apply(null, arguments); |
|
} |
|
|
|
return symlinkSync$1.apply(null, arguments); |
|
} |
|
|
|
|
|
var chmod = asyncMethod('chmod'); |
|
var chown = asyncMethod('chown'); |
|
var createReadStream = asyncMethod('createReadStream'); |
|
var createWriteStream = asyncMethod('createWriteStream'); |
|
var lchmod = asyncMethod('lchmod'); |
|
var lchown = asyncMethod('lchown'); |
|
var lstat = asyncMethod('lstat'); |
|
var readdir = asyncMethod('readdir'); |
|
var readFile = asyncMethod('readFile'); |
|
var readlink = asyncMethod('readlink'); |
|
var realpath = asyncMethod('realpath'); |
|
var rmdir = asyncMethod('rmdir'); |
|
var stat = asyncMethod('stat'); |
|
var truncate = asyncMethod('truncate'); |
|
var unlink = asyncMethod('unlink'); |
|
var utimes = asyncMethod('utimes'); |
|
var unwatchFile = asyncMethod('unwatchFile'); |
|
var watch = asyncMethod('watch'); |
|
var watchFile = asyncMethod('watchFile'); |
|
|
|
|
|
var chmodSync = syncMethod('chmodSync'); |
|
var chownSync = syncMethod('chownSync'); |
|
var lchmodSync = syncMethod('lchmodSync'); |
|
var lchownSync = syncMethod('lchownSync'); |
|
var lstatSync = syncMethod('lstatSync'); |
|
var readdirSync = syncMethod('readdirSync'); |
|
var readFileSync = syncMethod('readFileSync'); |
|
var readlinkSync = syncMethod('readlinkSync'); |
|
var realpathSync = syncMethod('realpathSync'); |
|
var rmdirSync = syncMethod('rmdirSync'); |
|
var statSync = syncMethod('statSync'); |
|
var truncateSync = syncMethod('truncateSync'); |
|
var unlinkSync = syncMethod('unlinkSync'); |
|
var utimesSync = syncMethod('utimesSync'); |
|
|
|
|
|
var close = asyncFileDescriptorMethod('close'); |
|
var fchmod = asyncFileDescriptorMethod('fchmod'); |
|
var fchown = asyncFileDescriptorMethod('fchown'); |
|
var fstat = asyncFileDescriptorMethod('fstat'); |
|
var fsync = asyncFileDescriptorMethod('fsync'); |
|
var ftruncate = asyncFileDescriptorMethod('ftruncate'); |
|
var futimes = asyncFileDescriptorMethod('futimes'); |
|
var read = asyncFileDescriptorMethod('read'); |
|
|
|
|
|
var closeSync = fs.closeSync; |
|
var fchmodSync = fs.fchmodSync; |
|
var fchownSync = fs.fchownSync; |
|
var fstatSync = fs.fstatSync; |
|
var fsyncSync = fs.fsyncSync; |
|
var ftruncateSync = fs.ftruncateSync; |
|
var futimesSync = fs.futimesSync; |
|
var readSync = fs.readSync; |
|
|
|
|
|
|
|
var Promise$1 = es6Promise.Promise; |
|
|
|
export { chmod, chown, createReadStream$1 as createReadStream, createWriteStream$1 as createWriteStream, lchmod, lchown, lstat, readdir, readFile, readlink, realpath, rmdir, stat, truncate, unlink, utimes, unwatchFile, watch, watchFile, chmodSync, chownSync, lchmodSync, lchownSync, lstatSync, readdirSync, readFileSync, readlinkSync, realpathSync, rmdirSync, statSync, truncateSync, unlinkSync, utimesSync, close, fchmod, fchown, fstat, fsync, ftruncate, futimes, read, closeSync, fchmodSync, fchownSync, fstatSync, fsyncSync, ftruncateSync, futimesSync, readSync, Promise$1 as Promise, exists$1 as exists, existsSync$1 as existsSync, link$1 as link, linkSync$1 as linkSync, rename$1 as rename, renameSync$1 as renameSync, mkdir$1 as mkdir, mkdirSync$1 as mkdirSync, open$1 as open, openSync$1 as openSync, symlink$1 as symlink, symlinkSync$1 as symlinkSync, writeFile$1 as writeFile, writeFileSync$1 as writeFileSync, appendFile$1 as appendFile, appendFileSync$1 as appendFileSync, copydir$1 as copydir, copydirSync$1 as copydirSync, copyFile$1 as copyFile, copyFileSync$1 as copyFileSync, lsr$1 as lsr, lsrSync$1 as lsrSync, rimraf$1 as rimraf, rimrafSync$1 as rimrafSync, symlinkOrCopy$1 as symlinkOrCopy, symlinkOrCopySync$1 as symlinkOrCopySync }; |
|
|
|
|