module.exports = (function() { var __MODS__ = {}; var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; }; var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; }; var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } }; var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; }; __DEFINE__(1721263118827, function(require, module, exports) { module.exports = Object.assign( {}, // Export promiseified graceful-fs: require('./fs'), // Export extra methods: require('./copy-sync'), require('./copy'), require('./empty'), require('./ensure'), require('./json'), require('./mkdirs'), require('./move-sync'), require('./move'), require('./output'), require('./path-exists'), require('./remove') ) // Export fs.promises as a getter property so that we don't trigger // ExperimentalWarning before fs.promises is actually accessed. const fs = require('fs') if (Object.getOwnPropertyDescriptor(fs, 'promises')) { Object.defineProperty(module.exports, 'promises', { get () { return fs.promises } }) } }, function(modId) {var map = {"./fs":1721263118828,"./copy-sync":1721263118829,"./copy":1721263118838,"./empty":1721263118841,"./ensure":1721263118844,"./json":1721263118850,"./mkdirs":1721263118831,"./move-sync":1721263118854,"./move":1721263118856,"./output":1721263118858,"./path-exists":1721263118840,"./remove":1721263118842,"fs":1721263118828}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118828, function(require, module, exports) { // 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 }) }) }) } // fs.realpath.native only available in Node v9.2+ if (typeof fs.realpath.native === 'function') { exports.realpath.native = u(fs.realpath.native) } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118829, function(require, module, exports) { module.exports = { copySync: require('./copy-sync') } }, function(modId) { var map = {"./copy-sync":1721263118830}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118830, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const mkdirpSync = require('../mkdirs').mkdirsSync const utimesSync = require('../util/utimes.js').utimesMillisSync const stat = require('../util/stat') function copySync (src, dest, opts) { if (typeof opts === 'function') { opts = { filter: opts } } opts = opts || {} opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber // Warn about using preserveTimestamps on 32-bit node if (opts.preserveTimestamps && process.arch === 'ia32') { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n see https://github.com/jprichardson/node-fs-extra/issues/269`) } const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy') stat.checkParentPathsSync(src, srcStat, dest, 'copy') return handleFilterAndCopy(destStat, src, dest, opts) } function handleFilterAndCopy (destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return const destParent = path.dirname(dest) if (!fs.existsSync(destParent)) mkdirpSync(destParent) return startCopy(destStat, src, dest, opts) } function startCopy (destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return return getStats(destStat, src, dest, opts) } function getStats (destStat, src, dest, opts) { const statSync = opts.dereference ? fs.statSync : fs.lstatSync const srcStat = statSync(src) if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts) else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts) else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts) } function onFile (srcStat, destStat, src, dest, opts) { if (!destStat) return copyFile(srcStat, src, dest, opts) return mayCopyFile(srcStat, src, dest, opts) } function mayCopyFile (srcStat, src, dest, opts) { if (opts.overwrite) { fs.unlinkSync(dest) return copyFile(srcStat, src, dest, opts) } else if (opts.errorOnExist) { throw new Error(`'${dest}' already exists`) } } function copyFile (srcStat, src, dest, opts) { if (typeof fs.copyFileSync === 'function') { fs.copyFileSync(src, dest) fs.chmodSync(dest, srcStat.mode) if (opts.preserveTimestamps) { return utimesSync(dest, srcStat.atime, srcStat.mtime) } return } return copyFileFallback(srcStat, src, dest, opts) } function copyFileFallback (srcStat, src, dest, opts) { const BUF_LENGTH = 64 * 1024 const _buff = require('../util/buffer')(BUF_LENGTH) const fdr = fs.openSync(src, 'r') const fdw = fs.openSync(dest, 'w', srcStat.mode) let pos = 0 while (pos < srcStat.size) { const bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) fs.writeSync(fdw, _buff, 0, bytesRead) pos += bytesRead } if (opts.preserveTimestamps) fs.futimesSync(fdw, srcStat.atime, srcStat.mtime) fs.closeSync(fdr) fs.closeSync(fdw) } function onDir (srcStat, destStat, src, dest, opts) { if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts) if (destStat && !destStat.isDirectory()) { throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`) } return copyDir(src, dest, opts) } function mkDirAndCopy (srcStat, src, dest, opts) { fs.mkdirSync(dest) copyDir(src, dest, opts) return fs.chmodSync(dest, srcStat.mode) } function copyDir (src, dest, opts) { fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts)) } function copyDirItem (item, src, dest, opts) { const srcItem = path.join(src, item) const destItem = path.join(dest, item) const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy') return startCopy(destStat, srcItem, destItem, opts) } function onLink (destStat, src, dest, opts) { let resolvedSrc = fs.readlinkSync(src) if (opts.dereference) { resolvedSrc = path.resolve(process.cwd(), resolvedSrc) } if (!destStat) { return fs.symlinkSync(resolvedSrc, dest) } else { let resolvedDest try { resolvedDest = fs.readlinkSync(dest) } catch (err) { // dest exists and is a regular file or directory, // Windows may throw UNKNOWN error. If dest already exists, // fs throws error anyway, so no need to guard against it here. if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest) throw err } if (opts.dereference) { resolvedDest = path.resolve(process.cwd(), resolvedDest) } if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`) } // prevent copy if src is a subdir of dest since unlinking // dest in this case would result in removing src contents // and therefore a broken symlink would be created. if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) { throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`) } return copyLink(resolvedSrc, dest) } } function copyLink (resolvedSrc, dest) { fs.unlinkSync(dest) return fs.symlinkSync(resolvedSrc, dest) } module.exports = copySync }, function(modId) { var map = {"../mkdirs":1721263118831,"../util/utimes.js":1721263118835,"../util/stat":1721263118836,"../util/buffer":1721263118837}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118831, function(require, module, exports) { const u = require('universalify').fromCallback const mkdirs = u(require('./mkdirs')) const mkdirsSync = require('./mkdirs-sync') module.exports = { mkdirs, mkdirsSync, // alias mkdirp: mkdirs, mkdirpSync: mkdirsSync, ensureDir: mkdirs, ensureDirSync: mkdirsSync } }, function(modId) { var map = {"./mkdirs":1721263118832,"./mkdirs-sync":1721263118834}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118832, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const invalidWin32Path = require('./win32').invalidWin32Path const o777 = parseInt('0777', 8) function mkdirs (p, opts, callback, made) { if (typeof opts === 'function') { callback = opts opts = {} } else if (!opts || typeof opts !== 'object') { opts = { mode: opts } } if (process.platform === 'win32' && invalidWin32Path(p)) { const errInval = new Error(p + ' contains invalid WIN32 path characters.') errInval.code = 'EINVAL' return callback(errInval) } let mode = opts.mode const xfs = opts.fs || fs if (mode === undefined) { mode = o777 & (~process.umask()) } if (!made) made = null callback = callback || function () {} p = path.resolve(p) xfs.mkdir(p, mode, er => { if (!er) { made = made || p return callback(null, made) } switch (er.code) { case 'ENOENT': if (path.dirname(p) === p) return callback(er) mkdirs(path.dirname(p), opts, (er, made) => { if (er) callback(er, made) else mkdirs(p, opts, callback, made) }) break // In the case of any other error, just see if there's a dir // there already. If so, then hooray! If not, then something // is borked. default: xfs.stat(p, (er2, stat) => { // if the stat fails, then that's super weird. // let the original error be the failure reason. if (er2 || !stat.isDirectory()) callback(er, made) else callback(null, made) }) break } }) } module.exports = mkdirs }, function(modId) { var map = {"./win32":1721263118833}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118833, function(require, module, exports) { const path = require('path') // get drive on windows function getRootPath (p) { p = path.normalize(path.resolve(p)).split(path.sep) if (p.length > 0) return p[0] return null } // http://stackoverflow.com/a/62888/10333 contains more accurate // TODO: expand to include the rest const INVALID_PATH_CHARS = /[<>:"|?*]/ function invalidWin32Path (p) { const rp = getRootPath(p) p = p.replace(rp, '') return INVALID_PATH_CHARS.test(p) } module.exports = { getRootPath, invalidWin32Path } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118834, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const invalidWin32Path = require('./win32').invalidWin32Path const o777 = parseInt('0777', 8) function mkdirsSync (p, opts, made) { if (!opts || typeof opts !== 'object') { opts = { mode: opts } } let mode = opts.mode const xfs = opts.fs || fs if (process.platform === 'win32' && invalidWin32Path(p)) { const errInval = new Error(p + ' contains invalid WIN32 path characters.') errInval.code = 'EINVAL' throw errInval } if (mode === undefined) { mode = o777 & (~process.umask()) } if (!made) made = null p = path.resolve(p) try { xfs.mkdirSync(p, mode) made = made || p } catch (err0) { if (err0.code === 'ENOENT') { if (path.dirname(p) === p) throw err0 made = mkdirsSync(path.dirname(p), opts, made) mkdirsSync(p, opts, made) } else { // In the case of any other error, just see if there's a dir there // already. If so, then hooray! If not, then something is borked. let stat try { stat = xfs.statSync(p) } catch (err1) { throw err0 } if (!stat.isDirectory()) throw err0 } } return made } module.exports = mkdirsSync }, function(modId) { var map = {"./win32":1721263118833}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118835, function(require, module, exports) { const fs = require('graceful-fs') const os = require('os') const path = require('path') // HFS, ext{2,3}, FAT do not, Node.js v0.10 does not function hasMillisResSync () { let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2)) tmpfile = path.join(os.tmpdir(), tmpfile) // 550 millis past UNIX epoch const d = new Date(1435410243862) fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141') const fd = fs.openSync(tmpfile, 'r+') fs.futimesSync(fd, d, d) fs.closeSync(fd) return fs.statSync(tmpfile).mtime > 1435410243000 } function hasMillisRes (callback) { let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2)) tmpfile = path.join(os.tmpdir(), tmpfile) // 550 millis past UNIX epoch const d = new Date(1435410243862) fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => { if (err) return callback(err) fs.open(tmpfile, 'r+', (err, fd) => { if (err) return callback(err) fs.futimes(fd, d, d, err => { if (err) return callback(err) fs.close(fd, err => { if (err) return callback(err) fs.stat(tmpfile, (err, stats) => { if (err) return callback(err) callback(null, stats.mtime > 1435410243000) }) }) }) }) }) } function timeRemoveMillis (timestamp) { if (typeof timestamp === 'number') { return Math.floor(timestamp / 1000) * 1000 } else if (timestamp instanceof Date) { return new Date(Math.floor(timestamp.getTime() / 1000) * 1000) } else { throw new Error('fs-extra: timeRemoveMillis() unknown parameter type') } } function utimesMillis (path, atime, mtime, callback) { // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) fs.open(path, 'r+', (err, fd) => { if (err) return callback(err) fs.futimes(fd, atime, mtime, futimesErr => { fs.close(fd, closeErr => { if (callback) callback(futimesErr || closeErr) }) }) }) } function utimesMillisSync (path, atime, mtime) { const fd = fs.openSync(path, 'r+') fs.futimesSync(fd, atime, mtime) return fs.closeSync(fd) } module.exports = { hasMillisRes, hasMillisResSync, timeRemoveMillis, utimesMillis, utimesMillisSync } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118836, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const NODE_VERSION_MAJOR_WITH_BIGINT = 10 const NODE_VERSION_MINOR_WITH_BIGINT = 5 const NODE_VERSION_PATCH_WITH_BIGINT = 0 const nodeVersion = process.versions.node.split('.') const nodeVersionMajor = Number.parseInt(nodeVersion[0], 10) const nodeVersionMinor = Number.parseInt(nodeVersion[1], 10) const nodeVersionPatch = Number.parseInt(nodeVersion[2], 10) function nodeSupportsBigInt () { if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) { return true } else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) { if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) { return true } else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) { if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) { return true } } } return false } function getStats (src, dest, cb) { if (nodeSupportsBigInt()) { fs.stat(src, { bigint: true }, (err, srcStat) => { if (err) return cb(err) fs.stat(dest, { bigint: true }, (err, destStat) => { if (err) { if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null }) return cb(err) } return cb(null, { srcStat, destStat }) }) }) } else { fs.stat(src, (err, srcStat) => { if (err) return cb(err) fs.stat(dest, (err, destStat) => { if (err) { if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null }) return cb(err) } return cb(null, { srcStat, destStat }) }) }) } } function getStatsSync (src, dest) { let srcStat, destStat if (nodeSupportsBigInt()) { srcStat = fs.statSync(src, { bigint: true }) } else { srcStat = fs.statSync(src) } try { if (nodeSupportsBigInt()) { destStat = fs.statSync(dest, { bigint: true }) } else { destStat = fs.statSync(dest) } } catch (err) { if (err.code === 'ENOENT') return { srcStat, destStat: null } throw err } return { srcStat, destStat } } function checkPaths (src, dest, funcName, cb) { getStats(src, dest, (err, stats) => { if (err) return cb(err) const { srcStat, destStat } = stats if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error('Source and destination must not be the same.')) } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { return cb(new Error(errMsg(src, dest, funcName))) } return cb(null, { srcStat, destStat }) }) } function checkPathsSync (src, dest, funcName) { const { srcStat, destStat } = getStatsSync(src, dest) if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { throw new Error('Source and destination must not be the same.') } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { throw new Error(errMsg(src, dest, funcName)) } return { srcStat, destStat } } // recursively check if dest parent is a subdirectory of src. // It works for all file types including symlinks since it // checks the src and dest inodes. It starts from the deepest // parent and stops once it reaches the src parent or the root path. function checkParentPaths (src, srcStat, dest, funcName, cb) { const srcParent = path.resolve(path.dirname(src)) const destParent = path.resolve(path.dirname(dest)) if (destParent === srcParent || destParent === path.parse(destParent).root) return cb() if (nodeSupportsBigInt()) { fs.stat(destParent, { bigint: true }, (err, destStat) => { if (err) { if (err.code === 'ENOENT') return cb() return cb(err) } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error(errMsg(src, dest, funcName))) } return checkParentPaths(src, srcStat, destParent, funcName, cb) }) } else { fs.stat(destParent, (err, destStat) => { if (err) { if (err.code === 'ENOENT') return cb() return cb(err) } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error(errMsg(src, dest, funcName))) } return checkParentPaths(src, srcStat, destParent, funcName, cb) }) } } function checkParentPathsSync (src, srcStat, dest, funcName) { const srcParent = path.resolve(path.dirname(src)) const destParent = path.resolve(path.dirname(dest)) if (destParent === srcParent || destParent === path.parse(destParent).root) return let destStat try { if (nodeSupportsBigInt()) { destStat = fs.statSync(destParent, { bigint: true }) } else { destStat = fs.statSync(destParent) } } catch (err) { if (err.code === 'ENOENT') return throw err } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { throw new Error(errMsg(src, dest, funcName)) } return checkParentPathsSync(src, srcStat, destParent, funcName) } // return true if dest is a subdir of src, otherwise false. // It only checks the path strings. function isSrcSubdir (src, dest) { const srcArr = path.resolve(src).split(path.sep).filter(i => i) const destArr = path.resolve(dest).split(path.sep).filter(i => i) return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true) } function errMsg (src, dest, funcName) { return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.` } module.exports = { checkPaths, checkPathsSync, checkParentPaths, checkParentPathsSync, isSrcSubdir } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118837, function(require, module, exports) { /* eslint-disable node/no-deprecated-api */ module.exports = function (size) { if (typeof Buffer.allocUnsafe === 'function') { try { return Buffer.allocUnsafe(size) } catch (e) { return new Buffer(size) } } return new Buffer(size) } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118838, function(require, module, exports) { const u = require('universalify').fromCallback module.exports = { copy: u(require('./copy')) } }, function(modId) { var map = {"./copy":1721263118839}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118839, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const mkdirp = require('../mkdirs').mkdirs const pathExists = require('../path-exists').pathExists const utimes = require('../util/utimes').utimesMillis const stat = require('../util/stat') function copy (src, dest, opts, cb) { if (typeof opts === 'function' && !cb) { cb = opts opts = {} } else if (typeof opts === 'function') { opts = { filter: opts } } cb = cb || function () {} opts = opts || {} opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber // Warn about using preserveTimestamps on 32-bit node if (opts.preserveTimestamps && process.arch === 'ia32') { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n see https://github.com/jprichardson/node-fs-extra/issues/269`) } stat.checkPaths(src, dest, 'copy', (err, stats) => { if (err) return cb(err) const { srcStat, destStat } = stats stat.checkParentPaths(src, srcStat, dest, 'copy', err => { if (err) return cb(err) if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb) return checkParentDir(destStat, src, dest, opts, cb) }) }) } function checkParentDir (destStat, src, dest, opts, cb) { const destParent = path.dirname(dest) pathExists(destParent, (err, dirExists) => { if (err) return cb(err) if (dirExists) return startCopy(destStat, src, dest, opts, cb) mkdirp(destParent, err => { if (err) return cb(err) return startCopy(destStat, src, dest, opts, cb) }) }) } function handleFilter (onInclude, destStat, src, dest, opts, cb) { Promise.resolve(opts.filter(src, dest)).then(include => { if (include) return onInclude(destStat, src, dest, opts, cb) return cb() }, error => cb(error)) } function startCopy (destStat, src, dest, opts, cb) { if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb) return getStats(destStat, src, dest, opts, cb) } function getStats (destStat, src, dest, opts, cb) { const stat = opts.dereference ? fs.stat : fs.lstat stat(src, (err, srcStat) => { if (err) return cb(err) if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb) else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb) else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb) }) } function onFile (srcStat, destStat, src, dest, opts, cb) { if (!destStat) return copyFile(srcStat, src, dest, opts, cb) return mayCopyFile(srcStat, src, dest, opts, cb) } function mayCopyFile (srcStat, src, dest, opts, cb) { if (opts.overwrite) { fs.unlink(dest, err => { if (err) return cb(err) return copyFile(srcStat, src, dest, opts, cb) }) } else if (opts.errorOnExist) { return cb(new Error(`'${dest}' already exists`)) } else return cb() } function copyFile (srcStat, src, dest, opts, cb) { if (typeof fs.copyFile === 'function') { return fs.copyFile(src, dest, err => { if (err) return cb(err) return setDestModeAndTimestamps(srcStat, dest, opts, cb) }) } return copyFileFallback(srcStat, src, dest, opts, cb) } function copyFileFallback (srcStat, src, dest, opts, cb) { const rs = fs.createReadStream(src) rs.on('error', err => cb(err)).once('open', () => { const ws = fs.createWriteStream(dest, { mode: srcStat.mode }) ws.on('error', err => cb(err)) .on('open', () => rs.pipe(ws)) .once('close', () => setDestModeAndTimestamps(srcStat, dest, opts, cb)) }) } function setDestModeAndTimestamps (srcStat, dest, opts, cb) { fs.chmod(dest, srcStat.mode, err => { if (err) return cb(err) if (opts.preserveTimestamps) { return utimes(dest, srcStat.atime, srcStat.mtime, cb) } return cb() }) } function onDir (srcStat, destStat, src, dest, opts, cb) { if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts, cb) if (destStat && !destStat.isDirectory()) { return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)) } return copyDir(src, dest, opts, cb) } function mkDirAndCopy (srcStat, src, dest, opts, cb) { fs.mkdir(dest, err => { if (err) return cb(err) copyDir(src, dest, opts, err => { if (err) return cb(err) return fs.chmod(dest, srcStat.mode, cb) }) }) } function copyDir (src, dest, opts, cb) { fs.readdir(src, (err, items) => { if (err) return cb(err) return copyDirItems(items, src, dest, opts, cb) }) } function copyDirItems (items, src, dest, opts, cb) { const item = items.pop() if (!item) return cb() return copyDirItem(items, item, src, dest, opts, cb) } function copyDirItem (items, item, src, dest, opts, cb) { const srcItem = path.join(src, item) const destItem = path.join(dest, item) stat.checkPaths(srcItem, destItem, 'copy', (err, stats) => { if (err) return cb(err) const { destStat } = stats startCopy(destStat, srcItem, destItem, opts, err => { if (err) return cb(err) return copyDirItems(items, src, dest, opts, cb) }) }) } function onLink (destStat, src, dest, opts, cb) { fs.readlink(src, (err, resolvedSrc) => { if (err) return cb(err) if (opts.dereference) { resolvedSrc = path.resolve(process.cwd(), resolvedSrc) } if (!destStat) { return fs.symlink(resolvedSrc, dest, cb) } else { fs.readlink(dest, (err, resolvedDest) => { if (err) { // dest exists and is a regular file or directory, // Windows may throw UNKNOWN error. If dest already exists, // fs throws error anyway, so no need to guard against it here. if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb) return cb(err) } if (opts.dereference) { resolvedDest = path.resolve(process.cwd(), resolvedDest) } if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)) } // do not copy if src is a subdir of dest since unlinking // dest in this case would result in removing src contents // and therefore a broken symlink would be created. if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) { return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)) } return copyLink(resolvedSrc, dest, cb) }) } }) } function copyLink (resolvedSrc, dest, cb) { fs.unlink(dest, err => { if (err) return cb(err) return fs.symlink(resolvedSrc, dest, cb) }) } module.exports = copy }, function(modId) { var map = {"../mkdirs":1721263118831,"../path-exists":1721263118840,"../util/utimes":1721263118835,"../util/stat":1721263118836}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118840, function(require, module, exports) { const u = require('universalify').fromPromise const fs = require('../fs') function pathExists (path) { return fs.access(path).then(() => true).catch(() => false) } module.exports = { pathExists: u(pathExists), pathExistsSync: fs.existsSync } }, function(modId) { var map = {"../fs":1721263118828}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118841, function(require, module, exports) { const u = require('universalify').fromCallback const fs = require('graceful-fs') const path = require('path') const mkdir = require('../mkdirs') const remove = require('../remove') const emptyDir = u(function emptyDir (dir, callback) { callback = callback || function () {} fs.readdir(dir, (err, items) => { if (err) return mkdir.mkdirs(dir, callback) items = items.map(item => path.join(dir, item)) deleteItem() function deleteItem () { const item = items.pop() if (!item) return callback() remove.remove(item, err => { if (err) return callback(err) deleteItem() }) } }) }) function emptyDirSync (dir) { let items try { items = fs.readdirSync(dir) } catch (err) { return mkdir.mkdirsSync(dir) } items.forEach(item => { item = path.join(dir, item) remove.removeSync(item) }) } module.exports = { emptyDirSync, emptydirSync: emptyDirSync, emptyDir, emptydir: emptyDir } }, function(modId) { var map = {"../mkdirs":1721263118831,"../remove":1721263118842}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118842, function(require, module, exports) { const u = require('universalify').fromCallback const rimraf = require('./rimraf') module.exports = { remove: u(rimraf), removeSync: rimraf.sync } }, function(modId) { var map = {"./rimraf":1721263118843}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118843, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const assert = require('assert') const isWindows = (process.platform === 'win32') function defaults (options) { const methods = [ 'unlink', 'chmod', 'stat', 'lstat', 'rmdir', 'readdir' ] methods.forEach(m => { options[m] = options[m] || fs[m] m = m + 'Sync' options[m] = options[m] || fs[m] }) options.maxBusyTries = options.maxBusyTries || 3 } function rimraf (p, options, cb) { let busyTries = 0 if (typeof options === 'function') { cb = options options = {} } assert(p, 'rimraf: missing path') assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string') assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required') assert(options, 'rimraf: invalid options argument provided') assert.strictEqual(typeof options, 'object', 'rimraf: options should be object') defaults(options) rimraf_(p, options, function CB (er) { if (er) { if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') && busyTries < options.maxBusyTries) { busyTries++ const time = busyTries * 100 // try again, with the same exact callback as this one. return setTimeout(() => rimraf_(p, options, CB), time) } // already gone if (er.code === 'ENOENT') er = null } cb(er) }) } // Two possible strategies. // 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR // 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR // // Both result in an extra syscall when you guess wrong. However, there // are likely far more normal files in the world than directories. This // is based on the assumption that a the average number of files per // directory is >= 1. // // If anyone ever complains about this, then I guess the strategy could // be made configurable somehow. But until then, YAGNI. function rimraf_ (p, options, cb) { assert(p) assert(options) assert(typeof cb === 'function') // sunos lets the root user unlink directories, which is... weird. // so we have to lstat here and make sure it's not a dir. options.lstat(p, (er, st) => { if (er && er.code === 'ENOENT') { return cb(null) } // Windows can EPERM on stat. Life is suffering. if (er && er.code === 'EPERM' && isWindows) { return fixWinEPERM(p, options, er, cb) } if (st && st.isDirectory()) { return rmdir(p, options, er, cb) } options.unlink(p, er => { if (er) { if (er.code === 'ENOENT') { return cb(null) } if (er.code === 'EPERM') { return (isWindows) ? fixWinEPERM(p, options, er, cb) : rmdir(p, options, er, cb) } if (er.code === 'EISDIR') { return rmdir(p, options, er, cb) } } return cb(er) }) }) } function fixWinEPERM (p, options, er, cb) { assert(p) assert(options) assert(typeof cb === 'function') if (er) { assert(er instanceof Error) } options.chmod(p, 0o666, er2 => { if (er2) { cb(er2.code === 'ENOENT' ? null : er) } else { options.stat(p, (er3, stats) => { if (er3) { cb(er3.code === 'ENOENT' ? null : er) } else if (stats.isDirectory()) { rmdir(p, options, er, cb) } else { options.unlink(p, cb) } }) } }) } function fixWinEPERMSync (p, options, er) { let stats assert(p) assert(options) if (er) { assert(er instanceof Error) } try { options.chmodSync(p, 0o666) } catch (er2) { if (er2.code === 'ENOENT') { return } else { throw er } } try { stats = options.statSync(p) } catch (er3) { if (er3.code === 'ENOENT') { return } else { throw er } } if (stats.isDirectory()) { rmdirSync(p, options, er) } else { options.unlinkSync(p) } } function rmdir (p, options, originalEr, cb) { assert(p) assert(options) if (originalEr) { assert(originalEr instanceof Error) } assert(typeof cb === 'function') // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) // if we guessed wrong, and it's not a directory, then // raise the original error. options.rmdir(p, er => { if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) { rmkids(p, options, cb) } else if (er && er.code === 'ENOTDIR') { cb(originalEr) } else { cb(er) } }) } function rmkids (p, options, cb) { assert(p) assert(options) assert(typeof cb === 'function') options.readdir(p, (er, files) => { if (er) return cb(er) let n = files.length let errState if (n === 0) return options.rmdir(p, cb) files.forEach(f => { rimraf(path.join(p, f), options, er => { if (errState) { return } if (er) return cb(errState = er) if (--n === 0) { options.rmdir(p, cb) } }) }) }) } // this looks simpler, and is strictly *faster*, but will // tie up the JavaScript thread and fail on excessively // deep directory trees. function rimrafSync (p, options) { let st options = options || {} defaults(options) assert(p, 'rimraf: missing path') assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string') assert(options, 'rimraf: missing options') assert.strictEqual(typeof options, 'object', 'rimraf: options should be object') try { st = options.lstatSync(p) } catch (er) { if (er.code === 'ENOENT') { return } // Windows can EPERM on stat. Life is suffering. if (er.code === 'EPERM' && isWindows) { fixWinEPERMSync(p, options, er) } } try { // sunos lets the root user unlink directories, which is... weird. if (st && st.isDirectory()) { rmdirSync(p, options, null) } else { options.unlinkSync(p) } } catch (er) { if (er.code === 'ENOENT') { return } else if (er.code === 'EPERM') { return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) } else if (er.code !== 'EISDIR') { throw er } rmdirSync(p, options, er) } } function rmdirSync (p, options, originalEr) { assert(p) assert(options) if (originalEr) { assert(originalEr instanceof Error) } try { options.rmdirSync(p) } catch (er) { if (er.code === 'ENOTDIR') { throw originalEr } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { rmkidsSync(p, options) } else if (er.code !== 'ENOENT') { throw er } } } function rmkidsSync (p, options) { assert(p) assert(options) options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) if (isWindows) { // We only end up here once we got ENOTEMPTY at least once, and // at this point, we are guaranteed to have removed all the kids. // So, we know that it won't be ENOENT or ENOTDIR or anything else. // try really hard to delete stuff on windows, because it has a // PROFOUNDLY annoying habit of not closing handles promptly when // files are deleted, resulting in spurious ENOTEMPTY errors. const startTime = Date.now() do { try { const ret = options.rmdirSync(p, options) return ret } catch (er) { } } while (Date.now() - startTime < 500) // give up after 500ms } else { const ret = options.rmdirSync(p, options) return ret } } module.exports = rimraf rimraf.sync = rimrafSync }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118844, function(require, module, exports) { const file = require('./file') const link = require('./link') const symlink = require('./symlink') module.exports = { // file createFile: file.createFile, createFileSync: file.createFileSync, ensureFile: file.createFile, ensureFileSync: file.createFileSync, // link createLink: link.createLink, createLinkSync: link.createLinkSync, ensureLink: link.createLink, ensureLinkSync: link.createLinkSync, // symlink createSymlink: symlink.createSymlink, createSymlinkSync: symlink.createSymlinkSync, ensureSymlink: symlink.createSymlink, ensureSymlinkSync: symlink.createSymlinkSync } }, function(modId) { var map = {"./file":1721263118845,"./link":1721263118846,"./symlink":1721263118847}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118845, function(require, module, exports) { const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const mkdir = require('../mkdirs') const pathExists = require('../path-exists').pathExists function createFile (file, callback) { function makeFile () { fs.writeFile(file, '', err => { if (err) return callback(err) callback() }) } fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err if (!err && stats.isFile()) return callback() const dir = path.dirname(file) pathExists(dir, (err, dirExists) => { if (err) return callback(err) if (dirExists) return makeFile() mkdir.mkdirs(dir, err => { if (err) return callback(err) makeFile() }) }) }) } function createFileSync (file) { let stats try { stats = fs.statSync(file) } catch (e) {} if (stats && stats.isFile()) return const dir = path.dirname(file) if (!fs.existsSync(dir)) { mkdir.mkdirsSync(dir) } fs.writeFileSync(file, '') } module.exports = { createFile: u(createFile), createFileSync } }, function(modId) { var map = {"../mkdirs":1721263118831,"../path-exists":1721263118840}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118846, function(require, module, exports) { const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const mkdir = require('../mkdirs') const pathExists = require('../path-exists').pathExists function createLink (srcpath, dstpath, callback) { function makeLink (srcpath, dstpath) { fs.link(srcpath, dstpath, err => { if (err) return callback(err) callback(null) }) } pathExists(dstpath, (err, destinationExists) => { if (err) return callback(err) if (destinationExists) return callback(null) fs.lstat(srcpath, (err) => { if (err) { err.message = err.message.replace('lstat', 'ensureLink') return callback(err) } const dir = path.dirname(dstpath) pathExists(dir, (err, dirExists) => { if (err) return callback(err) if (dirExists) return makeLink(srcpath, dstpath) mkdir.mkdirs(dir, err => { if (err) return callback(err) makeLink(srcpath, dstpath) }) }) }) }) } function createLinkSync (srcpath, dstpath) { const destinationExists = fs.existsSync(dstpath) if (destinationExists) return undefined try { fs.lstatSync(srcpath) } catch (err) { err.message = err.message.replace('lstat', 'ensureLink') throw err } const dir = path.dirname(dstpath) const dirExists = fs.existsSync(dir) if (dirExists) return fs.linkSync(srcpath, dstpath) mkdir.mkdirsSync(dir) return fs.linkSync(srcpath, dstpath) } module.exports = { createLink: u(createLink), createLinkSync } }, function(modId) { var map = {"../mkdirs":1721263118831,"../path-exists":1721263118840}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118847, function(require, module, exports) { const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const _mkdirs = require('../mkdirs') const mkdirs = _mkdirs.mkdirs const mkdirsSync = _mkdirs.mkdirsSync const _symlinkPaths = require('./symlink-paths') const symlinkPaths = _symlinkPaths.symlinkPaths const symlinkPathsSync = _symlinkPaths.symlinkPathsSync const _symlinkType = require('./symlink-type') const symlinkType = _symlinkType.symlinkType const symlinkTypeSync = _symlinkType.symlinkTypeSync const pathExists = require('../path-exists').pathExists function createSymlink (srcpath, dstpath, type, callback) { callback = (typeof type === 'function') ? type : callback type = (typeof type === 'function') ? false : type pathExists(dstpath, (err, destinationExists) => { if (err) return callback(err) if (destinationExists) return callback(null) symlinkPaths(srcpath, dstpath, (err, relative) => { if (err) return callback(err) srcpath = relative.toDst symlinkType(relative.toCwd, type, (err, type) => { if (err) return callback(err) const dir = path.dirname(dstpath) pathExists(dir, (err, dirExists) => { if (err) return callback(err) if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) mkdirs(dir, err => { if (err) return callback(err) fs.symlink(srcpath, dstpath, type, callback) }) }) }) }) }) } function createSymlinkSync (srcpath, dstpath, type) { const destinationExists = fs.existsSync(dstpath) if (destinationExists) return undefined const relative = symlinkPathsSync(srcpath, dstpath) srcpath = relative.toDst type = symlinkTypeSync(relative.toCwd, type) const dir = path.dirname(dstpath) const exists = fs.existsSync(dir) if (exists) return fs.symlinkSync(srcpath, dstpath, type) mkdirsSync(dir) return fs.symlinkSync(srcpath, dstpath, type) } module.exports = { createSymlink: u(createSymlink), createSymlinkSync } }, function(modId) { var map = {"../mkdirs":1721263118831,"./symlink-paths":1721263118848,"./symlink-type":1721263118849,"../path-exists":1721263118840}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118848, function(require, module, exports) { const path = require('path') const fs = require('graceful-fs') const pathExists = require('../path-exists').pathExists /** * Function that returns two types of paths, one relative to symlink, and one * relative to the current working directory. Checks if path is absolute or * relative. If the path is relative, this function checks if the path is * relative to symlink or relative to current working directory. This is an * initiative to find a smarter `srcpath` to supply when building symlinks. * This allows you to determine which path to use out of one of three possible * types of source paths. The first is an absolute path. This is detected by * `path.isAbsolute()`. When an absolute path is provided, it is checked to * see if it exists. If it does it's used, if not an error is returned * (callback)/ thrown (sync). The other two options for `srcpath` are a * relative url. By default Node's `fs.symlink` works by creating a symlink * using `dstpath` and expects the `srcpath` to be relative to the newly * created symlink. If you provide a `srcpath` that does not exist on the file * system it results in a broken symlink. To minimize this, the function * checks to see if the 'relative to symlink' source file exists, and if it * does it will use it. If it does not, it checks if there's a file that * exists that is relative to the current working directory, if does its used. * This preserves the expectations of the original fs.symlink spec and adds * the ability to pass in `relative to current working direcotry` paths. */ function symlinkPaths (srcpath, dstpath, callback) { if (path.isAbsolute(srcpath)) { return fs.lstat(srcpath, (err) => { if (err) { err.message = err.message.replace('lstat', 'ensureSymlink') return callback(err) } return callback(null, { 'toCwd': srcpath, 'toDst': srcpath }) }) } else { const dstdir = path.dirname(dstpath) const relativeToDst = path.join(dstdir, srcpath) return pathExists(relativeToDst, (err, exists) => { if (err) return callback(err) if (exists) { return callback(null, { 'toCwd': relativeToDst, 'toDst': srcpath }) } else { return fs.lstat(srcpath, (err) => { if (err) { err.message = err.message.replace('lstat', 'ensureSymlink') return callback(err) } return callback(null, { 'toCwd': srcpath, 'toDst': path.relative(dstdir, srcpath) }) }) } }) } } function symlinkPathsSync (srcpath, dstpath) { let exists if (path.isAbsolute(srcpath)) { exists = fs.existsSync(srcpath) if (!exists) throw new Error('absolute srcpath does not exist') return { 'toCwd': srcpath, 'toDst': srcpath } } else { const dstdir = path.dirname(dstpath) const relativeToDst = path.join(dstdir, srcpath) exists = fs.existsSync(relativeToDst) if (exists) { return { 'toCwd': relativeToDst, 'toDst': srcpath } } else { exists = fs.existsSync(srcpath) if (!exists) throw new Error('relative srcpath does not exist') return { 'toCwd': srcpath, 'toDst': path.relative(dstdir, srcpath) } } } } module.exports = { symlinkPaths, symlinkPathsSync } }, function(modId) { var map = {"../path-exists":1721263118840}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118849, function(require, module, exports) { const fs = require('graceful-fs') function symlinkType (srcpath, type, callback) { callback = (typeof type === 'function') ? type : callback type = (typeof type === 'function') ? false : type if (type) return callback(null, type) fs.lstat(srcpath, (err, stats) => { if (err) return callback(null, 'file') type = (stats && stats.isDirectory()) ? 'dir' : 'file' callback(null, type) }) } function symlinkTypeSync (srcpath, type) { let stats if (type) return type try { stats = fs.lstatSync(srcpath) } catch (e) { return 'file' } return (stats && stats.isDirectory()) ? 'dir' : 'file' } module.exports = { symlinkType, symlinkTypeSync } }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118850, function(require, module, exports) { const u = require('universalify').fromCallback const jsonFile = require('./jsonfile') jsonFile.outputJson = u(require('./output-json')) jsonFile.outputJsonSync = require('./output-json-sync') // aliases jsonFile.outputJSON = jsonFile.outputJson jsonFile.outputJSONSync = jsonFile.outputJsonSync jsonFile.writeJSON = jsonFile.writeJson jsonFile.writeJSONSync = jsonFile.writeJsonSync jsonFile.readJSON = jsonFile.readJson jsonFile.readJSONSync = jsonFile.readJsonSync module.exports = jsonFile }, function(modId) { var map = {"./jsonfile":1721263118851,"./output-json":1721263118852,"./output-json-sync":1721263118853}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118851, function(require, module, exports) { const u = require('universalify').fromCallback const jsonFile = require('jsonfile') module.exports = { // jsonfile exports readJson: u(jsonFile.readFile), readJsonSync: jsonFile.readFileSync, writeJson: u(jsonFile.writeFile), writeJsonSync: jsonFile.writeFileSync } }, function(modId) { var map = {"jsonfile":1721263118851}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118852, function(require, module, exports) { const path = require('path') const mkdir = require('../mkdirs') const pathExists = require('../path-exists').pathExists const jsonFile = require('./jsonfile') function outputJson (file, data, options, callback) { if (typeof options === 'function') { callback = options options = {} } const dir = path.dirname(file) pathExists(dir, (err, itDoes) => { if (err) return callback(err) if (itDoes) return jsonFile.writeJson(file, data, options, callback) mkdir.mkdirs(dir, err => { if (err) return callback(err) jsonFile.writeJson(file, data, options, callback) }) }) } module.exports = outputJson }, function(modId) { var map = {"../mkdirs":1721263118831,"../path-exists":1721263118840,"./jsonfile":1721263118851}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118853, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const mkdir = require('../mkdirs') const jsonFile = require('./jsonfile') function outputJsonSync (file, data, options) { const dir = path.dirname(file) if (!fs.existsSync(dir)) { mkdir.mkdirsSync(dir) } jsonFile.writeJsonSync(file, data, options) } module.exports = outputJsonSync }, function(modId) { var map = {"../mkdirs":1721263118831,"./jsonfile":1721263118851}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118854, function(require, module, exports) { module.exports = { moveSync: require('./move-sync') } }, function(modId) { var map = {"./move-sync":1721263118855}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118855, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const copySync = require('../copy-sync').copySync const removeSync = require('../remove').removeSync const mkdirpSync = require('../mkdirs').mkdirpSync const stat = require('../util/stat') function moveSync (src, dest, opts) { opts = opts || {} const overwrite = opts.overwrite || opts.clobber || false const { srcStat } = stat.checkPathsSync(src, dest, 'move') stat.checkParentPathsSync(src, srcStat, dest, 'move') mkdirpSync(path.dirname(dest)) return doRename(src, dest, overwrite) } function doRename (src, dest, overwrite) { if (overwrite) { removeSync(dest) return rename(src, dest, overwrite) } if (fs.existsSync(dest)) throw new Error('dest already exists.') return rename(src, dest, overwrite) } function rename (src, dest, overwrite) { try { fs.renameSync(src, dest) } catch (err) { if (err.code !== 'EXDEV') throw err return moveAcrossDevice(src, dest, overwrite) } } function moveAcrossDevice (src, dest, overwrite) { const opts = { overwrite, errorOnExist: true } copySync(src, dest, opts) return removeSync(src) } module.exports = moveSync }, function(modId) { var map = {"../copy-sync":1721263118829,"../remove":1721263118842,"../mkdirs":1721263118831,"../util/stat":1721263118836}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118856, function(require, module, exports) { const u = require('universalify').fromCallback module.exports = { move: u(require('./move')) } }, function(modId) { var map = {"./move":1721263118857}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118857, function(require, module, exports) { const fs = require('graceful-fs') const path = require('path') const copy = require('../copy').copy const remove = require('../remove').remove const mkdirp = require('../mkdirs').mkdirp const pathExists = require('../path-exists').pathExists const stat = require('../util/stat') function move (src, dest, opts, cb) { if (typeof opts === 'function') { cb = opts opts = {} } const overwrite = opts.overwrite || opts.clobber || false stat.checkPaths(src, dest, 'move', (err, stats) => { if (err) return cb(err) const { srcStat } = stats stat.checkParentPaths(src, srcStat, dest, 'move', err => { if (err) return cb(err) mkdirp(path.dirname(dest), err => { if (err) return cb(err) return doRename(src, dest, overwrite, cb) }) }) }) } function doRename (src, dest, overwrite, cb) { if (overwrite) { return remove(dest, err => { if (err) return cb(err) return rename(src, dest, overwrite, cb) }) } pathExists(dest, (err, destExists) => { if (err) return cb(err) if (destExists) return cb(new Error('dest already exists.')) return rename(src, dest, overwrite, cb) }) } function rename (src, dest, overwrite, cb) { fs.rename(src, dest, err => { if (!err) return cb() if (err.code !== 'EXDEV') return cb(err) return moveAcrossDevice(src, dest, overwrite, cb) }) } function moveAcrossDevice (src, dest, overwrite, cb) { const opts = { overwrite, errorOnExist: true } copy(src, dest, opts, err => { if (err) return cb(err) return remove(src, cb) }) } module.exports = move }, function(modId) { var map = {"../copy":1721263118838,"../remove":1721263118842,"../mkdirs":1721263118831,"../path-exists":1721263118840,"../util/stat":1721263118836}; return __REQUIRE__(map[modId], modId); }) __DEFINE__(1721263118858, function(require, module, exports) { const u = require('universalify').fromCallback const fs = require('graceful-fs') const path = require('path') const mkdir = require('../mkdirs') const pathExists = require('../path-exists').pathExists function outputFile (file, data, encoding, callback) { if (typeof encoding === 'function') { callback = encoding encoding = 'utf8' } const dir = path.dirname(file) pathExists(dir, (err, itDoes) => { if (err) return callback(err) if (itDoes) return fs.writeFile(file, data, encoding, callback) mkdir.mkdirs(dir, err => { if (err) return callback(err) fs.writeFile(file, data, encoding, callback) }) }) } function outputFileSync (file, ...args) { const dir = path.dirname(file) if (fs.existsSync(dir)) { return fs.writeFileSync(file, ...args) } mkdir.mkdirsSync(dir) fs.writeFileSync(file, ...args) } module.exports = { outputFile: u(outputFile), outputFileSync } }, function(modId) { var map = {"../mkdirs":1721263118831,"../path-exists":1721263118840}; return __REQUIRE__(map[modId], modId); }) return __REQUIRE__(1721263118827); })() //miniprogram-npm-outsideDeps=["universalify","graceful-fs","path","os","assert"] //# sourceMappingURL=index.js.map