{"version":3,"sources":["jsdelivr-header.js","/npm/dir_tree@4.2.6/dir_tree.js"],"names":[],"mappings":"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","file":"/npm/dir_tree@4.2.6/dir_tree.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/dir_tree@4.2.6/dir_tree.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","﻿var fs = require('fs');\nvar p = require('path');\nvar EventEmitter = require('events').EventEmitter;\nvar util = require('util');\nfunction DirTreeNode(dtn) {\n  this.hide = false;\n  this.name;\n  this.path;\n  this.path_from_root;\n  this.created_on;\n  this.modified_on;\n  this.is_a_dir;\n  this.size;\n  this.size_of_files;\n  this.dirs;\n  this.files;\n  this.no_of_total_dirs;\n  this.no_of_total_files;\n  this.parent;\n  this.unread_paths;\n  this.no_of_total_unread_paths;\n  if (dtn instanceof DirTreeNode) {\n    this.name = dtn.name;\n    this.path = dtn.path;\n    this.path_from_root = dtn.path_from_root;\n    this.created_on = dtn.created_on;\n    this.modified_on = dtn.modified_on;\n    if (this.is_a_dir = dtn.is_a_dir) {\n      this.size = 0;\n      this.size_of_files = 0;\n      this.dirs = [];\n      this.files = [];\n      this.no_of_total_dirs = 0;\n      this.no_of_total_files = 0;\n      this.no_of_total_unread_paths = 0;\n    } else\n      this.size = dtn.size;\n  }\n}\nDirTreeNode.alphabetic_comparator = function(e1, e2) {\n  var n1 = e1.path_from_root.toLowerCase();\n  var n2 = e2.path_from_root.toLowerCase();\n  return n1 > n2 ? 1 : n1 < n2 ? -1 : 0;\n};\nDirTreeNode.prototype.dirs_creation_order = function() {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  var extra_length_rel = 1 + this.path_from_root.length;\n  const func = function(dir) {\n    return Array.prototype.concat.apply([dir.path_from_root.substr(extra_length_rel)], dir.dirs.map(func));\n  }\n  var arr = func(this);\n  arr.shift();\n  return arr;\n};\nDirTreeNode.prototype.total_files = function(arr) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  return this.total_files_(arr === undefined ? [] : arr, this.parent ? 1 + this.parent.path_from_root.length : 0).sort(DirTreeNode.alphabetic_comparator);\n};\nDirTreeNode.prototype.total_files_ = function(arr, extra_length_from) {\n  var overview = function(file) {\n    return {\n      path_from_root: file.path_from_root.substr(extra_length_from),\n      path: file.path,\n      name: file.name,\n      size: file.size,\n      created_on: file.created_on,\n      modified_on: file.modified_on\n    };\n  };\n  Array.prototype.push.apply(arr, this.files.map(overview));\n  this.dirs.forEach(function(dir) {\n    dir.total_files_(arr, extra_length_from);\n  });\n  return arr;\n};\nDirTreeNode.prototype.total_dirs = function(arr) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  return this.total_dirs_(arr === undefined ? [] : arr, this.parent ? 1 + this.parent.path_from_root.length : 0).sort(DirTreeNode.alphabetic_comparator);\n};\nDirTreeNode.prototype.total_dirs_ = function(arr, extra_length_from) {\n  var overview = function(dir) {\n    return {\n      path_from_root: dir.path_from_root.substr(extra_length_from),\n      path: dir.path,\n      name: dir.name,\n      size: dir.size,\n      no_of_dirs: dir.dirs.length,\n      no_of_files: dir.files.length,\n      no_of_total_dirs: dir.no_of_total_dirs,\n      no_of_total_files: dir.no_of_total_files,\n      created_on: dir.created_on,\n      modified_on: dir.modified_on\n    };\n  };\n  Array.prototype.push.apply(arr, this.dirs.map(overview));\n  this.dirs.forEach(function(dir) {\n    dir.total_dirs_(arr, extra_length_from);\n  });\n  return arr;\n};\nDirTreeNode.prototype.serial = function() {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  return this.serial_(this.parent ? 1 + this.parent.path_from_root.length : 0);\n};\nDirTreeNode.prototype.serial_ = function(extra_length) {\n  return {\n    path_from_root: this.path_from_root.substr(extra_length),\n    path: this.path,\n    name: this.name,\n    size: this.size,\n    size_of_files: this.size_of_files,\n    no_of_total_files: this.no_of_total_files,\n    no_of_total_dirs: this.no_of_total_dirs,\n    created_on: this.created_on,\n    modified_on: this.modified_on,\n    unread_paths: this.unread_paths,\n    no_of_total_unread_paths: this.no_of_total_unread_paths,\n    files: this.files.map(function(file) {\n      return {\n        path_from_root: file.path_from_root.substr(extra_length),\n        path: file.path,\n        name: file.name,\n        size: file.size,\n        created_on: file.created_on,\n        modified_on: file.modified_on\n      };\n    }),\n    dirs: this.dirs.map(function(dir) {\n      return dir.serial_(extra_length);\n    })\n  };\n};\nDirTreeNode.prototype.tree = function(indent) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  return indent == undefined ? this.tree_('\\n') : indent + this.tree_('\\n' + indent);\n};\nDirTreeNode.prototype.tree_ = function(prefix) {\n  var f = [];\n  var d = [];\n  for (var i = 0, pairs = [[f, d], [this.files, this.dirs]]; i < 2; ++i)\n    pairs[1][i].forEach(function(e) {\n      if (!e.hide)\n        pairs[0][i].push(e);\n    });\n  var nf = f.length;\n  var nd = d.length;\n  if (nf + nd == 0)\n    return this.name;\n  if (nd == 0) {\n    var filenames = f.map(function(f) { return f.name });\n    var lastfilename = filenames.pop();\n    if (nf > 1)\n      return this.name + prefix + '├──' + filenames.join(prefix + '├──') + prefix + '└──' + lastfilename;\n    return this.name + prefix + '└──' + lastfilename;\n  }\n  if (nd == 1) {\n    return this.name + f.map(function(f) { return prefix + '├──' + f.name }).join('') +\n      prefix + '└⌂─' + d[0].tree_(prefix + '   ');\n  }\n  return this.name + f.map(function(f) { return prefix + '├──' + f.name }).join('') +\n    d.slice(0, -1).map(function(d) { return prefix + '├⌂─' + d.tree_(prefix + '│  ') }).join('') +\n    prefix + '└⌂─' + d.slice(-1)[0].tree_(prefix + '   ');\n};\nDirTreeNode.prototype.sort = function(dir_comparator_func, file_comparator_func) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  if (dir_comparator_func == undefined || dir_comparator_func == null)\n    dir_comparator_func = DirTreeNode.alphabetic_comparator;\n  if (file_comparator_func == undefined || file_comparator_func == null)\n    file_comparator_func = DirTreeNode.alphabetic_comparator;\n  this.sort_(dir_comparator_func, file_comparator_func);\n};\nDirTreeNode.prototype.sort_ = function(dir_comparator_func, file_comparator_func) {\n  if (file_comparator_func)\n    this.files.sort(file_comparator_func);\n  if (dir_comparator_func)\n    this.dirs.sort(dir_comparator_func);\n  this.dirs.forEach(function(dir) {\n    dir.sort_(dir_comparator_func, file_comparator_func);\n  });\n};\nDirTreeNode.prototype.filter_files = function(filter) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  var idr;\n  var edr;\n  var ifr;\n  var efr;\n  var max_depth = Number.POSITIVE_INFINITY;\n  if (filter instanceof Object) {\n    idr = filter.idr;\n    edr = filter.edr;\n    ifr = filter.ifr;\n    efr = filter.efr;\n    max_depth = parseInt(filter.max_depth);\n  }\n  if (isNaN(max_depth) || max_depth < 1)\n    max_depth = Number.POSITIVE_INFINITY;\n  switch (idr) {\n    case undefined:\n      idr = null;\n    case null:\n      break;\n    default:\n      if (!(idr instanceof RegExp))\n        throw new Error('Invalid argument: idr should be either undefined or null or a RegExp Object!');\n  }\n  switch (edr) {\n    case undefined:\n      edr = null;\n    case null:\n      break;\n    default:\n      if (!(edr instanceof RegExp))\n        throw new Error('Invalid argument: edr should be either undefined or null or a RegExp Object!');\n  }\n  switch (ifr) {\n    case undefined:\n      ifr = null;\n    case null:\n      break;\n    default:\n      if (!(ifr instanceof RegExp))\n        throw new Error('Invalid argument: ifr should be either undefined or null or a RegExp Object!');\n  }\n  switch (efr) {\n    case undefined:\n      efr = null;\n    case null:\n      break;\n    default:\n      if (!(efr instanceof RegExp))\n        throw new Error('Invalid argument: efr should be either undefined or null or a RegExp Object!');\n  }\n  var dir_obj = new DirTreeNode(this);\n  var extra_length_rel = 1 + this.path_from_root.length;\n  var extra_length_from = this.parent ? 1 + this.parent.path_from_root.length : 0;\n  this.filter_files_choose_files_(ifr, efr, extra_length_rel, extra_length_from, dir_obj);\n  if (max_depth > 1)\n    this.dirs.forEach(function(dir) {\n      dir.filter_files_(idr, edr, ifr, efr, dir_obj, extra_length_rel, extra_length_from, 1, max_depth);\n    });\n  if (dir_obj.no_of_total_files > 0)\n    dir_obj.path_from_root = this.name;\n  return dir_obj.no_of_total_files == 0 ? null : dir_obj;\n};\nDirTreeNode.prototype.filter_files_choose_files_ = function(ifr, efr, extra_length_rel, extra_length_from, dir_obj) {\n  this.files.forEach(function(file) {\n    var file_path_relative_to_root = file.path_from_root.substr(extra_length_rel);\n    if (efr != null) {\n      efr.lastIndex = 0;\n      if (efr.test(file_path_relative_to_root))\n        return;\n    }\n    if (ifr != null) {\n      ifr.lastIndex = 0;\n      if (!ifr.test(file_path_relative_to_root))\n        return;\n    }\n    var file_obj = new DirTreeNode(file);\n    file_obj.path_from_root = file.path_from_root.substr(extra_length_from);\n    dir_obj.files.push(file_obj);\n    file_obj.parent = dir_obj;\n    dir_obj.size_of_files += file.size;\n  });\n  dir_obj.no_of_total_files += dir_obj.files.length;\n  dir_obj.size = dir_obj.size_of_files;\n};\nDirTreeNode.prototype.filter_files_ = function(idr, edr, ifr, efr, parent_obj, extra_length_rel, extra_length_from, depth, max_depth) {\n  var this_path_relative_to_root = this.path_from_root.substr(extra_length_rel);\n  if (edr != null) {\n    edr.lastIndex = 0;\n    if (edr.test(this_path_relative_to_root))\n      return;\n  }\n  var dir_obj;\n  switch (idr) {\n    default: {\n      idr.lastIndex = 0;\n      if (!idr.test(this_path_relative_to_root))\n        return;\n    }\n    case null: {\n      dir_obj = new DirTreeNode(this);\n      dir_obj.unread_paths = this.unread_paths.slice(0);\n      dir_obj.no_of_total_unread_paths = dir_obj.unread_paths.length;\n      this.filter_files_choose_files_(ifr, efr, extra_length_rel, extra_length_from, dir_obj);\n    }\n  }\n  if (++depth < max_depth)\n    this.dirs.forEach(function(dir) {\n      dir.filter_files_(idr, edr, ifr, efr, dir_obj, extra_length_rel, extra_length_from, depth, max_depth);\n    });\n  if (dir_obj.no_of_total_files > 0) {\n    dir_obj.path_from_root = this.path_from_root.substr(extra_length_from);\n    parent_obj.dirs.push(dir_obj);\n    dir_obj.parent = parent_obj;\n    parent_obj.no_of_total_dirs += 1 + dir_obj.no_of_total_dirs;\n    parent_obj.no_of_total_files += dir_obj.no_of_total_files;\n    parent_obj.no_of_total_unread_paths += dir_obj.no_of_total_unread_paths;\n    parent_obj.size += dir_obj.size;\n  }\n};\nDirTreeNode.prototype.fileless_tree = function(indent) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  return indent == undefined ? this.fileless_tree_('\\n') : indent + this.fileless_tree_('\\n' + indent);\n};\nDirTreeNode.prototype.fileless_tree_ = function(prefix) {\n  switch (this.dirs.length) {\n    case 0:\n      return this.name;\n    case 1:\n      return this.name + prefix + '└──' + this.dirs[0].fileless_tree_(prefix + '   ');\n    default:\n      return this.name +\n        this.dirs.slice(0, -1).map(function(d) { return prefix + '├──' + d.fileless_tree_(prefix + '│  ') }).join('') +\n        prefix + '└──' + this.dirs.slice(-1)[0].fileless_tree_(prefix + '   ');\n  }\n};\nDirTreeNode.prototype.filter_dirs = function(idr, edr) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  switch (idr) {\n    case undefined:\n      idr = null;\n    case null:\n      break;\n    default:\n      if (!(idr instanceof RegExp))\n        throw new Error('Invalid argument: idr should be either undefined or null or a RegExp Object!');\n  }\n  switch (edr) {\n    case undefined:\n      edr = null;\n    case null:\n      break;\n    default:\n      if (!(edr instanceof RegExp))\n        throw new Error('Invalid argument: edr should be either undefined or null or a RegExp Object!');\n  }\n  var ret_arr = [];\n  var extra_length = 1 + this.path_from_root.length;\n  this.dirs.forEach(function(dir) {\n    dir.filter_dirs_(idr, edr, ret_arr, extra_length);\n  });\n  return ret_arr;\n};\nDirTreeNode.prototype.filter_dirs_ = function(idr, edr, arr, extra_length) {\n  var this_path_relative_to_root = this.path_from_root.substr(extra_length);\n  if (edr != null) {\n    edr.lastIndex = 0;\n    if (edr.test(this_path_relative_to_root))\n      return;\n  }\n  if (idr != null) {\n    idr.lastIndex = 0;\n    if (idr.test(this_path_relative_to_root))\n      arr.push(this);\n  } else\n    arr.push(this);\n  this.dirs.forEach(function(dir) {\n    dir.filter_dirs_(idr, edr, arr, extra_length);\n  });\n};\nDirTreeNode.prototype.total_unread_paths = function(arr) {\n  if (!this.is_a_dir)\n    throw new Error('Not a Directory!');\n  var arr = [];\n  this.total_unread_paths_(arr);\n  return arr;\n};\nDirTreeNode.prototype.total_unread_paths_ = function(arr) {\n  Array.prototype.push.apply(arr, this.unread_paths);\n  this.dirs.forEach(function(dir) {\n    dir.total_unread_paths_(arr);\n  });\n};\nDirTreeNode.prototype.disjoin = function() {\n  if (!this.parent)\n    return;\n  if (this.is_a_dir) {\n    var arr = this.parent.dirs;\n    arr.splice(arr.indexOf(this), 1);\n    var parent = this;\n    while (parent = parent.parent) {\n      parent.size -= this.size;\n      --parent.no_of_total_dirs;\n      parent.no_of_total_unread_paths -= this.no_of_total_unread_paths;\n      parent.no_of_total_files -= this.no_of_total_files;\n    }\n  } else {\n    var arr = this.parent.files;\n    arr.splice(arr.indexOf(this), 1);\n    this.parent.size_of_files -= this.size;\n    var parent = this;\n    while (parent = parent.parent) {\n      parent.size -= this.size;\n      --parent.no_of_total_files;\n    }\n  }\n};\nDirTreeNode.prototype.remove_fileless_dirs = function() {\n  if (!this.is_a_dir)\n    return;\n  this.remove_fileless_dirs_();\n};\nDirTreeNode.prototype.remove_fileless_dirs_ = function() {\n  var dirs = this.dirs;\n  var l = dirs.length;\n  var k = 0;\n  var dels = new Array(l + 1);\n  for (var i = 0; i < l; ++i) {\n    var child_dir = dirs[i];\n    if (child_dir.no_of_total_files == 0)\n      dels[k++] = i;\n    else\n      child_dir.remove_fileless_dirs_();\n  }\n  dels[k] = dirs.length;\n  for (var j = 0; j < k; ++j) {\n    var i = dels[j];\n    var d = dirs[i - j];\n    var parent = this;\n    while (parent) {\n      parent.no_of_total_unread_paths -= d.no_of_total_unread_paths;\n      parent.no_of_total_dirs -= 1 + d.no_of_total_dirs;\n      parent = parent.parent;\n    }\n    for (; i < dels[j + 1]; ++i) {\n      dirs[i - j] = dirs[i + 1];\n    }\n  }\n  dirs.length -= k;\n};\nfunction DirTree(path, filter) {\n  var idr;\n  var edr;\n  var ifr;\n  var efr;\n  var max_depth = Number.POSITIVE_INFINITY;\n  if (filter instanceof Object) {\n    idr = filter.idr;\n    edr = filter.edr;\n    ifr = filter.ifr;\n    efr = filter.efr;\n    max_depth = parseInt(filter.max_depth);\n  }\n  if (isNaN(max_depth) || max_depth < 1)\n    max_depth = Number.POSITIVE_INFINITY;\n  EventEmitter.call(this);\n  var barrier = 0;\n  var counter = 0;\n  var start_returning = false;\n  var root_dtn = new DirTreeNode();\n  var self = this;\n  var patterns_specified = false;\n  switch (idr) {\n    case undefined:\n      idr = null;\n    case null:\n      break;\n    default:\n      if (!(idr instanceof RegExp)) {\n        emit_('error', new Error('Invalid argument: idr should be either undefined or null or a RegExp Object!'));\n        return\n      }\n      patterns_specified = true;\n  }\n  switch (edr) {\n    case undefined:\n      edr = null;\n    case null:\n      break;\n    default:\n      if (!(edr instanceof RegExp)) {\n        emit_('error', new Error('Invalid argument: edr should be either undefined or null or a RegExp Object!'));\n        return\n      }\n      patterns_specified = true;\n  }\n  switch (ifr) {\n    case undefined:\n      ifr = null;\n    case null:\n      break;\n    default:\n      if (!(ifr instanceof RegExp)) {\n        emit_('error', new Error('Invalid argument: ifr should be either undefined or null or a RegExp Object!'));\n        return\n      }\n      patterns_specified = true;\n  }\n  switch (efr) {\n    case undefined:\n      efr = null;\n    case null:\n      break;\n    default:\n      if (!(efr instanceof RegExp)) {\n        emit_('error', new Error('Invalid argument: efr should be either undefined or null or a RegExp Object!'));\n        return\n      }\n      patterns_specified = true;\n  }\n  function emit_(event_name) {\n    var args = [];\n    for (var i = 1, l = arguments.length; i < l; ++i)\n      args.push(arguments[i]);\n    if (self.listeners(event_name).length == 0) {\n      var cb_setter = function(event_name_) {\n        if (event_name_ == event_name) {\n          self.removeListener(event_name, cb_setter);\n          arguments[1].apply(null, args);\n        }\n      };\n      self.on('newListener', cb_setter);\n    } else\n      self.emit.apply(self, [event_name].concat(args));\n  }\n  function done() {\n    if (++counter == barrier) {\n      delete root_dtn.parent;\n      if (!root_dtn.is_a_dir)\n        emit_('error', new Error('Not a Directory!'));\n      else {\n        if (patterns_specified) {\n          root_dtn.remove_fileless_dirs();\n          if (root_dtn.no_of_total_files == 0) {\n            emit_('data', null);\n            return;\n          }\n        }\n        root_dtn.sort();\n        emit_('data', root_dtn);\n      }\n    }\n  }\n  var sep = p.sep;\n  var resolved_root_path = p.resolve(path + sep).replace(/[\\\\/]$/, '');\n  var root_basename = p.basename(sep + resolved_root_path);\n  function process_root_path(dtn, parent) {\n    if (start_returning)\n      return;\n    ++barrier;\n    fs.stat(resolved_root_path + sep, function(err, stats) {\n      function handle_unread_path(err) {\n        parent.unread_paths.push(resolved_root_path + sep);\n        while (parent) {\n          ++parent.no_of_total_unread_paths;\n          parent = parent.parent;\n        }\n        done();\n      }\n      if (err) {\n        handle_unread_path();\n        return;\n      }\n      if (dtn.is_a_dir = stats.isDirectory()) {\n        dtn.path_from_root = root_basename;\n        dtn.parent = parent;\n        dtn.path = resolved_root_path;\n        dtn.name = root_basename;\n        dtn.created_on = stats.birthtime;\n        dtn.modified_on = stats.mtime;\n        dtn.size = 0;\n        dtn.size_of_files = 0;\n        dtn.files = [];\n        dtn.dirs = [];\n        dtn.unread_paths = [];\n        dtn.no_of_total_files = 0;\n        dtn.no_of_total_dirs = 0;\n        dtn.no_of_total_unread_paths = 0;\n        parent.dirs.push(dtn);\n        while (parent) {\n          ++parent.no_of_total_dirs;\n          parent = parent.parent;\n        }\n        fs.readdir(resolved_root_path + sep, function(err, basenames) {\n          if (err) {\n            handle_unread_path();\n            return;\n          }\n          basenames.forEach(function(basename) {\n            process_path(new DirTreeNode(), dtn, resolved_root_path + sep + basename, root_basename + sep + basename, basename, basename, 1)\n          });\n          done();\n        });\n      } else\n        done();\n    });\n  }\n  function process_path(dtn, parent, resolved_path, path_from_root, path_rel_to_root, basename, depth) {\n    if (start_returning)\n      return;\n    ++barrier;\n    fs.stat(resolved_path, function(err, stats) {\n      function handle_unread_path(err) {\n        parent.unread_paths.push(resolved_path);\n        while (parent) {\n          ++parent.no_of_total_unread_paths;\n          parent = parent.parent;\n        }\n        done();\n      }\n      if (err) {\n        handle_unread_path();\n        return;\n      }\n      if (dtn.is_a_dir = stats.isDirectory()) {\n        if (edr != null) {\n          edr.lastIndex = 0;\n          if (edr.test(path_rel_to_root)) {\n            done();\n            return;\n          }\n        }\n        if (idr != null) {\n          idr.lastIndex = 0;\n          if (!idr.test(path_rel_to_root)) {\n            done();\n            return;\n          }\n        }\n        dtn.path_from_root = path_from_root;\n        dtn.parent = parent;\n        dtn.path = resolved_path;\n        dtn.name = basename;\n        dtn.created_on = stats.birthtime;\n        dtn.modified_on = stats.mtime;\n        dtn.size = 0;\n        dtn.size_of_files = 0;\n        dtn.files = [];\n        dtn.dirs = [];\n        dtn.unread_paths = [];\n        dtn.no_of_total_files = 0;\n        dtn.no_of_total_dirs = 0;\n        dtn.no_of_total_unread_paths = 0;\n        parent.dirs.push(dtn);\n        while (parent) {\n          ++parent.no_of_total_dirs;\n          parent = parent.parent;\n        }\n        fs.readdir(resolved_path, function(err, basenames) {\n          if (err) {\n            handle_unread_path();\n            return;\n          }\n          if (depth++ == max_depth) {\n            done();\n            return;\n          }\n          basenames.forEach(function(basename) {\n            process_path(new DirTreeNode(), dtn, resolved_path + sep + basename, path_from_root + sep + basename, path_rel_to_root + sep + basename, basename, depth);\n          });\n          done();\n        });\n      } else if (stats.isFile()) {\n        if (efr != null) {\n          efr.lastIndex = 0;\n          if (efr.test(path_rel_to_root)) {\n            done();\n            return;\n          }\n        }\n        if (ifr != null) {\n          ifr.lastIndex = 0;\n          if (!ifr.test(path_rel_to_root)) {\n            done();\n            return;\n          }\n        }\n        dtn.path_from_root = path_from_root;\n        dtn.parent = parent;\n        dtn.path = resolved_path;\n        dtn.name = basename;\n        dtn.created_on = stats.birthtime;\n        dtn.modified_on = stats.mtime;\n        dtn.size = stats.size;\n        parent.files.push(dtn);\n        parent.size_of_files += dtn.size;\n        while (parent) {\n          ++parent.no_of_total_files;\n          parent.size += dtn.size;\n          parent = parent.parent;\n        }\n        done();\n      } else\n        done();\n    });\n  }\n  try {\n    process_root_path(root_dtn, {\n      dirs: [],\n      files: [],\n      unread_paths: [],\n      path_from_root: '',\n      no_of_total_files: 0,\n      no_of_total_dirs: 0,\n      no_of_total_unread_paths: 0\n    });\n  } catch (error) {\n    start_returning = true;\n    emit_('error', error);\n  }\n}\nDirTree.DirTreeNode = DirTreeNode;\nutil.inherits(DirTree, EventEmitter);\nmodule.exports = DirTree;\n"]}