$34 GRAYBYTE WORDPRESS FILE MANAGER $70

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/cpanel/ea-nodejs22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/

HOME
Current File : /opt/cpanel/ea-nodejs22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib//printable.js
// helper function to output a clearer visualization
// of the current node and its descendents
const localeCompare = require('@isaacs/string-locale-compare')('en')
const util = require('node:util')
const relpath = require('./relpath.js')

class ArboristNode {
  constructor (tree, path) {
    this.name = tree.name
    if (tree.packageName && tree.packageName !== this.name) {
      this.packageName = tree.packageName
    }
    if (tree.version) {
      this.version = tree.version
    }
    this.location = tree.location
    this.path = tree.path
    if (tree.realpath !== this.path) {
      this.realpath = tree.realpath
    }
    if (tree.resolved !== null) {
      this.resolved = tree.resolved
    }
    if (tree.extraneous) {
      this.extraneous = true
    }
    if (tree.dev) {
      this.dev = true
    }
    if (tree.optional) {
      this.optional = true
    }
    if (tree.devOptional && !tree.dev && !tree.optional) {
      this.devOptional = true
    }
    if (tree.peer) {
      this.peer = true
    }
    if (tree.inBundle) {
      this.bundled = true
    }
    if (tree.inDepBundle) {
      this.bundler = tree.getBundler().location
    }
    if (tree.isProjectRoot) {
      this.isProjectRoot = true
    }
    if (tree.isWorkspace) {
      this.isWorkspace = true
    }
    const bd = tree.package && tree.package.bundleDependencies
    if (bd && bd.length) {
      this.bundleDependencies = bd
    }
    if (tree.inShrinkwrap) {
      this.inShrinkwrap = true
    } else if (tree.hasShrinkwrap) {
      this.hasShrinkwrap = true
    }
    if (tree.error) {
      this.error = treeError(tree.error)
    }
    if (tree.errors && tree.errors.length) {
      this.errors = tree.errors.map(treeError)
    }

    if (tree.overrides) {
      this.overrides = new Map([...tree.overrides.ruleset.values()]
        .map((override) => [override.key, override.value]))
    }

    // edgesOut sorted by name
    if (tree.edgesOut.size) {
      this.edgesOut = new Map([...tree.edgesOut.entries()]
        .sort(([a], [b]) => localeCompare(a, b))
        .map(([name, edge]) => [name, new EdgeOut(edge)]))
    }

    // edgesIn sorted by location
    if (tree.edgesIn.size) {
      this.edgesIn = new Set([...tree.edgesIn]
        .sort((a, b) => localeCompare(a.from.location, b.from.location))
        .map(edge => new EdgeIn(edge)))
    }

    if (tree.workspaces && tree.workspaces.size) {
      this.workspaces = new Map([...tree.workspaces.entries()]
        .map(([name, path]) => [name, relpath(tree.root.realpath, path)]))
    }

    // fsChildren sorted by path
    if (tree.fsChildren.size) {
      this.fsChildren = new Set([...tree.fsChildren]
        .sort(({ path: a }, { path: b }) => localeCompare(a, b))
        .map(tree => printableTree(tree, path)))
    }

    // children sorted by name
    if (tree.children.size) {
      this.children = new Map([...tree.children.entries()]
        .sort(([a], [b]) => localeCompare(a, b))
        .map(([name, tree]) => [name, printableTree(tree, path)]))
    }
  }
}

class ArboristVirtualNode extends ArboristNode {
  constructor (tree, path) {
    super(tree, path)
    this.sourceReference = printableTree(tree.sourceReference, path)
  }
}

class ArboristLink extends ArboristNode {
  constructor (tree, path) {
    super(tree, path)
    this.target = printableTree(tree.target, path)
  }
}

const treeError = ({ code, path }) => ({
  code,
  ...(path ? { path } : {}),
})

// print out edges without dumping the full node all over again
// this base class will toJSON as a plain old object, but the
// util.inspect() output will be a bit cleaner
class Edge {
  constructor (edge) {
    this.type = edge.type
    this.name = edge.name
    this.spec = edge.rawSpec || '*'
    if (edge.rawSpec !== edge.spec) {
      this.override = edge.spec
    }
    if (edge.error) {
      this.error = edge.error
    }
    if (edge.peerConflicted) {
      this.peerConflicted = edge.peerConflicted
    }
  }
}

// don't care about 'from' for edges out
class EdgeOut extends Edge {
  constructor (edge) {
    super(edge)
    this.to = edge.to && edge.to.location
  }

  [util.inspect.custom] () {
    return `{ ${this.type} ${this.name}@${this.spec}${
      this.override ? ` overridden:${this.override}` : ''
    }${
      this.to ? ' -> ' + this.to : ''
    }${
      this.error ? ' ' + this.error : ''
    }${
      this.peerConflicted ? ' peerConflicted' : ''
    } }`
  }
}

// don't care about 'to' for edges in
class EdgeIn extends Edge {
  constructor (edge) {
    super(edge)
    this.from = edge.from && edge.from.location
  }

  [util.inspect.custom] () {
    return `{ ${this.from || '""'} ${this.type} ${this.name}@${this.spec}${
      this.error ? ' ' + this.error : ''
    }${
      this.peerConflicted ? ' peerConflicted' : ''
    } }`
  }
}

const printableTree = (tree, path = []) => {
  if (!tree) {
    return tree
  }

  const Cls = tree.isLink ? ArboristLink
    : tree.sourceReference ? ArboristVirtualNode
    : ArboristNode
  if (path.includes(tree)) {
    const obj = Object.create(Cls.prototype)
    return Object.assign(obj, { location: tree.location })
  }
  path.push(tree)
  return new Cls(tree, path)
}

module.exports = printableTree

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 8.00 AM
root / root
0
arborist
--
16 Mar 2026 5.04 PM
root / root
0755
add-rm-pkg-deps.js
4.891 KB
17 Jan 2026 1.16 AM
root / root
0644
audit-report.js
11.945 KB
17 Jan 2026 1.16 AM
root / root
0644
calc-dep-flags.js
3.424 KB
17 Jan 2026 1.16 AM
root / root
0644
can-place-dep.js
13.938 KB
17 Jan 2026 1.16 AM
root / root
0644
case-insensitive-map.js
1.21 KB
17 Jan 2026 1.16 AM
root / root
0644
consistent-resolve.js
1.266 KB
17 Jan 2026 1.16 AM
root / root
0644
debug.js
1.252 KB
17 Jan 2026 1.16 AM
root / root
0644
deepest-nesting-target.js
0.675 KB
17 Jan 2026 1.16 AM
root / root
0644
dep-valid.js
5.005 KB
17 Jan 2026 1.16 AM
root / root
0644
diff.js
9.573 KB
17 Jan 2026 1.16 AM
root / root
0644
edge.js
6.625 KB
17 Jan 2026 1.16 AM
root / root
0644
from-path.js
1.069 KB
17 Jan 2026 1.16 AM
root / root
0644
gather-dep-set.js
1.256 KB
17 Jan 2026 1.16 AM
root / root
0644
index.js
0.267 KB
17 Jan 2026 1.16 AM
root / root
0644
inventory.js
3.246 KB
17 Jan 2026 1.16 AM
root / root
0644
link.js
3.041 KB
17 Jan 2026 1.16 AM
root / root
0644
node.js
42.95 KB
17 Jan 2026 1.16 AM
root / root
0644
optional-set.js
1.321 KB
17 Jan 2026 1.16 AM
root / root
0644
override-resolves.js
0.22 KB
17 Jan 2026 1.16 AM
root / root
0644
override-set.js
3.115 KB
17 Jan 2026 1.16 AM
root / root
0644
packument-cache.js
2.496 KB
17 Jan 2026 1.16 AM
root / root
0644
peer-entry-sets.js
2.57 KB
17 Jan 2026 1.16 AM
root / root
0644
place-dep.js
19.752 KB
17 Jan 2026 1.16 AM
root / root
0644
printable.js
5.1 KB
17 Jan 2026 1.16 AM
root / root
0644
query-selector-all.js
28.841 KB
17 Jan 2026 1.16 AM
root / root
0644
realpath.js
2.593 KB
17 Jan 2026 1.16 AM
root / root
0644
relpath.js
0.133 KB
17 Jan 2026 1.16 AM
root / root
0644
reset-dep-flags.js
0.623 KB
17 Jan 2026 1.16 AM
root / root
0644
retire-path.js
0.489 KB
17 Jan 2026 1.16 AM
root / root
0644
shrinkwrap.js
36.827 KB
17 Jan 2026 1.16 AM
root / root
0644
signal-handling.js
2.192 KB
17 Jan 2026 1.16 AM
root / root
0644
signals.js
1.349 KB
17 Jan 2026 1.16 AM
root / root
0644
spec-from-lock.js
0.854 KB
17 Jan 2026 1.16 AM
root / root
0644
tracker.js
2.921 KB
17 Jan 2026 1.16 AM
root / root
0644
tree-check.js
4.045 KB
17 Jan 2026 1.16 AM
root / root
0644
version-from-tgz.js
1.453 KB
17 Jan 2026 1.16 AM
root / root
0644
vuln.js
5.818 KB
17 Jan 2026 1.16 AM
root / root
0644
yarn-lock.js
10.56 KB
17 Jan 2026 1.16 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF