$53 GRAYBYTE WORDPRESS FILE MANAGER $57

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/alt-nodejs6/root/usr/lib/node_modules/npm/lib/install/

HOME
Current File : /opt/alt/alt-nodejs6/root/usr/lib/node_modules/npm/lib/install//diff-trees.js
'use strict'
var validate = require('aproba')
var npa = require('npm-package-arg')
var flattenTree = require('./flatten-tree.js')

function nonRegistrySource (pkg) {
  validate('O', arguments)
  var requested = pkg._requested || (pkg._from && npa(pkg._from))
  if (!requested) return false

  if (requested.type === 'hosted') return true
  if (requested.type === 'local') return true
  return false
}

function pkgAreEquiv (aa, bb) {
  var aaSha = (aa.dist && aa.dist.shasum) || aa._shasum
  var bbSha = (bb.dist && bb.dist.shasum) || bb._shasum
  if (aaSha === bbSha) return true
  if (aaSha || bbSha) return false
  if (nonRegistrySource(aa) || nonRegistrySource(bb)) return false
  if (aa.version === bb.version) return true
  return false
}

function getNameAndVersion (pkg) {
  var versionspec = pkg._shasum

  if (!versionspec && nonRegistrySource(pkg)) {
    if (pkg._requested) {
      versionspec = pkg._requested.spec
    } else if (pkg._from) {
      versionspec = npa(pkg._from).spec
    }
  }
  if (!versionspec) {
    versionspec = pkg.version
  }
  return pkg.name + '@' + versionspec
}

function pushAll (aa, bb) {
  Array.prototype.push.apply(aa, bb)
}

module.exports = function (oldTree, newTree, differences, log, next) {
  validate('OOAOF', arguments)
  pushAll(differences, sortActions(diffTrees(oldTree, newTree)))
  log.finish()
  next()
}

function isLink (node) {
  return node && node.isLink
}

function requiredByAllLinked (node) {
  if (!node.requiredBy.length) return false
  return node.requiredBy.filter(isLink).length === node.requiredBy.length
}

function isNotTopOrExtraneous (node) {
  return !node.isTop && !node.userRequired && !node.existing
}

var sortActions = module.exports.sortActions = function (differences) {
  var actions = {}
  differences.forEach(function (action) {
    var child = action[1]
    actions[child.location] = action
  })

  var sorted = []
  var added = {}

  var sortedlocs = Object.keys(actions).sort(sortByLocation)

  // We're going to sort the actions taken on top level dependencies first, before
  // considering the order of transitive deps. Because we're building our list
  // from the bottom up, this means we will return a list with top level deps LAST.
  // This is important in terms of keeping installations as consistent as possible
  // as folks add new dependencies.
  var toplocs = sortedlocs.filter(function (location) {
    var mod = actions[location][1]
    if (!mod.requiredBy) return true
    // If this module is required by any non-top level module
    // or by any extraneous module, eg user requested or existing
    // then we don't want to give this priority sorting.
    return !mod.requiredBy.some(isNotTopOrExtraneous)
  })

  toplocs.concat(sortedlocs).forEach(function (location) {
    sortByDeps(actions[location])
  })

  function sortByLocation (aa, bb) {
    return bb.localeCompare(aa)
  }
  function sortModuleByLocation (aa, bb) {
    return sortByLocation(aa && aa.location, bb && bb.location)
  }
  function sortByDeps (action) {
    var mod = action[1]
    if (added[mod.location]) return
    added[mod.location] = action
    if (!mod.requiredBy) mod.requiredBy = []
    mod.requiredBy.sort(sortModuleByLocation).forEach(function (mod) {
      if (actions[mod.location]) sortByDeps(actions[mod.location])
    })
    sorted.unshift(action)
  }

  return sorted
}

function diffTrees (oldTree, newTree) {
  validate('OO', arguments)
  var differences = []
  var flatOldTree = flattenTree(oldTree)
  var flatNewTree = flattenTree(newTree)
  var toRemove = {}
  var toRemoveByNameAndVer = {}
  // find differences
  Object.keys(flatOldTree).forEach(function (flatname) {
    if (flatNewTree[flatname]) return
    var pkg = flatOldTree[flatname]
    toRemove[flatname] = pkg
    var namever = getNameAndVersion(pkg.package)
    if (!toRemoveByNameAndVer[namever]) toRemoveByNameAndVer[namever] = []
    toRemoveByNameAndVer[namever].push(flatname)
  })
  Object.keys(flatNewTree).forEach(function (path) {
    var pkg = flatNewTree[path]
    pkg.oldPkg = flatOldTree[path]
    pkg.isInLink = (pkg.oldPkg && isLink(pkg.oldPkg.parent)) ||
                   (pkg.parent && isLink(pkg.parent)) ||
                   requiredByAllLinked(pkg)
    if (pkg.oldPkg) {
      if (!pkg.userRequired && pkgAreEquiv(pkg.oldPkg.package, pkg.package)) return
      if (!pkg.isInLink && (isLink(pkg.oldPkg) || isLink(pkg))) {
        differences.push(['update-linked', pkg])
      } else {
        differences.push(['update', pkg])
      }
    } else {
      var vername = getNameAndVersion(pkg.package)
      if (toRemoveByNameAndVer[vername] && toRemoveByNameAndVer[vername].length && !pkg.fromBundle) {
        var flatname = toRemoveByNameAndVer[vername].shift()
        pkg.fromPath = toRemove[flatname].path
        differences.push(['move', pkg])
        delete toRemove[flatname]
      } else {
        differences.push(['add', pkg])
      }
    }
  })
  Object
    .keys(toRemove)
    .map(function (path) { return toRemove[path] })
    .forEach(function (pkg) {
      differences.push(['remove', pkg])
    })
  return differences
}

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
31 Aug 2024 8.02 AM
root / root
0755
action
--
31 Aug 2024 8.02 AM
root / root
0755
access-error.js
0.197 KB
28 Sep 2021 4.36 PM
root / root
0644
actions.js
4.974 KB
28 Sep 2021 4.36 PM
root / root
0644
and-add-parent-to-errors.js
0.316 KB
28 Sep 2021 4.36 PM
root / root
0644
and-finish-tracker.js
0.352 KB
28 Sep 2021 4.36 PM
root / root
0644
and-ignore-errors.js
0.199 KB
28 Sep 2021 4.36 PM
root / root
0644
build-path.js
0.237 KB
28 Sep 2021 4.36 PM
root / root
0644
check-permissions.js
1.853 KB
28 Sep 2021 4.36 PM
root / root
0644
copy-tree.js
0.61 KB
28 Sep 2021 4.36 PM
root / root
0644
decompose-actions.js
1.544 KB
28 Sep 2021 4.36 PM
root / root
0644
deps.js
23.229 KB
28 Sep 2021 4.36 PM
root / root
0644
diff-trees.js
5.01 KB
28 Sep 2021 4.36 PM
root / root
0644
exists.js
0.757 KB
28 Sep 2021 4.36 PM
root / root
0644
filter-invalid-actions.js
1 KB
28 Sep 2021 4.36 PM
root / root
0644
flatten-tree.js
0.999 KB
28 Sep 2021 4.36 PM
root / root
0644
inflate-bundled.js
0.48 KB
28 Sep 2021 4.36 PM
root / root
0644
inflate-shrinkwrap.js
3.651 KB
28 Sep 2021 4.36 PM
root / root
0644
is-dev-dep.js
0.171 KB
28 Sep 2021 4.36 PM
root / root
0644
is-extraneous.js
0.868 KB
28 Sep 2021 4.36 PM
root / root
0644
is-fs-access-available.js
0.745 KB
28 Sep 2021 4.36 PM
root / root
0644
is-opt-dep.js
0.181 KB
28 Sep 2021 4.36 PM
root / root
0644
is-prod-dep.js
0.168 KB
28 Sep 2021 4.36 PM
root / root
0644
is-registry-specifier.js
0.168 KB
28 Sep 2021 4.36 PM
root / root
0644
mutate-into-logical-tree.js
4.224 KB
28 Sep 2021 4.36 PM
root / root
0644
node.js
1.43 KB
28 Sep 2021 4.36 PM
root / root
0644
read-shrinkwrap.js
0.863 KB
28 Sep 2021 4.36 PM
root / root
0644
realize-shrinkwrap-specifier.js
0.646 KB
28 Sep 2021 4.36 PM
root / root
0644
report-optional-failure.js
1.017 KB
28 Sep 2021 4.36 PM
root / root
0644
save.js
6.381 KB
28 Sep 2021 4.36 PM
root / root
0644
update-package-json.js
1.52 KB
28 Sep 2021 4.36 PM
root / root
0644
validate-args.js
1.824 KB
28 Sep 2021 4.36 PM
root / root
0644
validate-tree.js
2.549 KB
28 Sep 2021 4.36 PM
root / root
0644
writable.js
1.003 KB
28 Sep 2021 4.36 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF