{"version":3,"sources":["jsdelivr-header.js","/npm/walk@2.3.15/lib/walk.js"],"names":[],"mappings":"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","file":"/npm/walk@2.3.15/lib/walk.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/walk@2.3.15/lib/walk.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Adapted from work by jorge@jorgechamorro.com on 2010-11-25\n(function () {\n  \"use strict\";\n\n  function noop() {}\n\n  var fs = require('fs')\n    , forEachAsync = require('foreachasync').forEachAsync\n    , EventEmitter = require('events').EventEmitter\n    , TypeEmitter = require('./node-type-emitter')\n    , util = require('util')\n    , path = require('path')\n    ;\n\n  function appendToDirs(stat) {\n    /*jshint validthis:true*/\n    if(stat.flag && stat.flag === NO_DESCEND) { return; }\n    this.push(stat.name);\n  }\n\n  function wFilesHandlerWrapper(items) {\n    /*jshint validthis:true*/\n    this._wFilesHandler(noop, items);\n  }\n\n  function Walker(pathname, options, sync) {\n    EventEmitter.call(this);\n\n    var me = this\n      ;\n\n    options = options || {};\n    me._wStat = options.followLinks && 'stat' || 'lstat';\n    me._wStatSync = me._wStat + 'Sync';\n    me._wsync = sync;\n    me._wq = [];\n    me._wqueue = [me._wq];\n    me._wcurpath = undefined;\n    me._wfilters = options.filters || [];\n    me._wfirstrun = true;\n    me._wcurpath = pathname;\n\n    if (me._wsync) {\n      //console.log('_walkSync');\n      me._wWalk = me._wWalkSync;\n    } else {\n      //console.log('_walkASync');\n      me._wWalk = me._wWalkAsync;\n    }\n\n    options.listeners = options.listeners || {};\n    Object.keys(options.listeners).forEach(function (event) {\n      var callbacks = options.listeners[event]\n        ;\n\n      if ('function' === typeof callbacks) {\n        callbacks = [callbacks];\n      }\n\n      callbacks.forEach(function (callback) {\n        me.on(event, callback);\n      });\n    });\n\n    me._wWalk();\n  }\n\n  // Inherits must come before prototype additions\n  util.inherits(Walker, EventEmitter);\n\n  Walker.prototype._wLstatHandler = function (err, stat) {\n    var me = this\n      ;\n\n    stat = stat || {};\n    stat.name = me._wcurfile;\n\n    if (err) {\n      stat.error = err;\n      //me.emit('error', curpath, stat);\n      // TODO v3.0 (don't noop the next if there are listeners)\n      me.emit('nodeError', me._wcurpath, stat, noop);\n      me._wfnodegroups.errors.push(stat);\n      me._wCurFileCallback();\n    } else {\n      TypeEmitter.sortFnodesByType(stat, me._wfnodegroups);\n      // NOTE: wCurFileCallback doesn't need thisness, so this is okay\n      TypeEmitter.emitNodeType(me, me._wcurpath, stat, me._wCurFileCallback, me);\n    }\n  };\n  Walker.prototype._wFilesHandler = function (cont, file) {\n    var statPath\n      , me = this\n      ;\n\n\n    me._wcurfile = file;\n    me._wCurFileCallback = cont;\n    me.emit('name', me._wcurpath, file, noop);\n\n    statPath = me._wcurpath + path.sep + file;\n\n    if (!me._wsync) {\n      // TODO how to remove this anony?\n      fs[me._wStat](statPath, function (err, stat) {\n        me._wLstatHandler(err, stat);\n      });\n      return;\n    }\n\n    try {\n      me._wLstatHandler(null, fs[me._wStatSync](statPath));\n    } catch(e) {\n      me._wLstatHandler(e);\n    }\n  };\n  Walker.prototype._wOnEmitDone = function () {\n    var me = this\n      , dirs = []\n      ;\n\n    me._wfnodegroups.directories.forEach(appendToDirs, dirs);\n    dirs.forEach(me._wJoinPath, me);\n    me._wqueue.push(me._wq = dirs);\n    me._wNext();\n  };\n  Walker.prototype._wPostFilesHandler = function () {\n    var me = this\n      ;\n\n    if (me._wfnodegroups.errors.length) {\n      // TODO v3.0 (don't noop the next)\n      // .errors is an array of stats with { name: name, error: error }\n      me.emit('errors', me._wcurpath, me._wfnodegroups.errors, noop);\n    }\n    // XXX emitNodeTypes still needs refactor\n    TypeEmitter.emitNodeTypeGroups(me, me._wcurpath, me._wfnodegroups, me._wOnEmitDone, me);\n  };\n  Walker.prototype._wReadFiles = function () {\n    var me = this\n      ;\n\n    if (!me._wcurfiles || 0 === me._wcurfiles.length) {\n      return me._wNext();\n    }\n\n    // TODO could allow user to selectively stat\n    // and don't stat if there are no stat listeners\n    me.emit('names', me._wcurpath, me._wcurfiles, noop);\n\n    if (me._wsync) {\n      me._wcurfiles.forEach(wFilesHandlerWrapper, me);\n      me._wPostFilesHandler();\n    } else {\n      forEachAsync(me._wcurfiles, me._wFilesHandler, me).then(me._wPostFilesHandler);\n    }\n  };\n  Walker.prototype._wReaddirHandler = function (err, files) {\n    var fnodeGroups = TypeEmitter.createNodeGroups()\n      , me = this\n      , parent\n      , child\n      ;\n\n    me._wfnodegroups = fnodeGroups;\n    me._wcurfiles = files;\n\n    // no error, great\n    if (!err) {\n      me._wReadFiles();\n      return;\n    }\n\n    // TODO path.sep\n    me._wcurpath = me._wcurpath.replace(/\\/$/, '');\n\n    // error? not first run? => directory error\n    if (!me._wfirstrun) {\n      // TODO v3.0 (don't noop the next if there are listeners)\n      me.emit('directoryError', me._wcurpath, { error: err }, noop);\n      // TODO v3.0\n      //me.emit('directoryError', me._wcurpath.replace(/^(.*)\\/.*$/, '$1'), { name: me._wcurpath.replace(/^.*\\/(.*)/, '$1'), error: err }, noop);\n      me._wReadFiles();\n      return;\n    }\n\n    // error? first run? => maybe a file, maybe a true error\n    me._wfirstrun = false;\n\n    // readdir failed (might be a file), try a stat on the parent\n    parent = me._wcurpath.replace(/^(.*)\\/.*$/, '$1');\n    fs[me._wStat](parent, function (e, stat) {\n\n      if (stat) {\n        // success\n        // now try stat on this as a child of the parent directory\n        child = me._wcurpath.replace(/^.*\\/(.*)$/, '$1');\n        me._wcurfiles = [child];\n        me._wcurpath = parent;\n      } else {\n        // TODO v3.0\n        //me.emit('directoryError', me._wcurpath.replace(/^(.*)\\/.*$/, '$1'), { name: me._wcurpath.replace(/^.*\\/(.*)/, '$1'), error: err }, noop);\n        // TODO v3.0 (don't noop the next)\n        // the original readdir error, not the parent stat error\n        me.emit('nodeError', me._wcurpath, { error: err }, noop);\n      }\n\n      me._wReadFiles();\n    });\n  };\n  Walker.prototype._wFilter = function () {\n    var me = this\n      , exclude\n      ;\n\n    // Stop directories that contain filter keywords\n    // from continuing through the walk process\n    exclude = me._wfilters.some(function (filter) {\n      if (me._wcurpath.match(filter)) {\n        return true;\n      }\n    });\n\n    return exclude;\n  };\n  Walker.prototype._wWalkSync = function () {\n    //console.log('walkSync');\n    var err\n      , files\n      , me = this\n      ;\n\n    try {\n      files = fs.readdirSync(me._wcurpath);\n    } catch(e) {\n      err = e;\n    }\n\n    me._wReaddirHandler(err, files);\n  };\n  Walker.prototype._wWalkAsync = function () {\n    //console.log('walkAsync');\n    var me = this\n      ;\n\n    // TODO how to remove this anony?\n    fs.readdir(me._wcurpath, function (err, files) {\n      me._wReaddirHandler(err, files);\n    });\n  };\n  Walker.prototype._wNext = function () {\n    var me = this\n      ;\n\n    if (me._paused) {\n      return;\n    }\n    if (me._wq.length) {\n      me._wcurpath = me._wq.pop();\n      while (me._wq.length && me._wFilter()) {\n        me._wcurpath = me._wq.pop();\n      }\n      if (me._wcurpath && !me._wFilter()) {\n        me._wWalk();\n      } else {\n        me._wNext();\n      }\n      return;\n    }\n    me._wqueue.length -= 1;\n    if (me._wqueue.length) {\n      me._wq = me._wqueue[me._wqueue.length - 1];\n      return me._wNext();\n    }\n\n    // To not break compatibility\n    //process.nextTick(function () {\n      me.emit('end');\n    //});\n  };\n  Walker.prototype._wJoinPath = function (v, i, o) {\n    var me = this\n      ;\n\n    o[i] = [me._wcurpath, path.sep, v].join('');\n  };\n  Walker.prototype.pause = function () {\n    this._paused = true;\n  };\n  Walker.prototype.resume = function () {\n    this._paused = false;\n    this._wNext();\n  };\n\n  exports.walk = function (path, opts) {\n    return new Walker(path, opts, false);\n  };\n\n  exports.walkSync = function (path, opts) {\n    return new Walker(path, opts, true);\n  };\n}());\n"]}