$41 GRAYBYTE WORDPRESS FILE MANAGER $64

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//calc-dep-flags.js
const { depth } = require('treeverse')

const calcDepFlags = (tree, resetRoot = true) => {
  if (resetRoot) {
    tree.dev = false
    tree.optional = false
    tree.devOptional = false
    tree.peer = false
  }
  const ret = depth({
    tree,
    visit: node => calcDepFlagsStep(node),
    filter: node => node,
    getChildren: (node, tree) =>
      [...tree.edgesOut.values()].map(edge => edge.to),
  })
  return ret
}

const calcDepFlagsStep = (node) => {
  // This rewalk is necessary to handle cases where devDep and optional
  // or normal dependency graphs overlap deep in the dep graph.
  // Since we're only walking through deps that are not already flagged
  // as non-dev/non-optional, it's typically a very shallow traversal
  node.extraneous = false
  resetParents(node, 'extraneous')
  resetParents(node, 'dev')
  resetParents(node, 'peer')
  resetParents(node, 'devOptional')
  resetParents(node, 'optional')

  // for links, map their hierarchy appropriately
  if (node.isLink) {
    // node.target can be null, we check to ensure it's not null before proceeding
    if (node.target == null) {
      return node
    }
    node.target.dev = node.dev
    node.target.optional = node.optional
    node.target.devOptional = node.devOptional
    node.target.peer = node.peer
    return calcDepFlagsStep(node.target)
  }

  node.edgesOut.forEach(({ peer, optional, dev, to }) => {
    // if the dep is missing, then its flags are already maximally unset
    if (!to) {
      return
    }

    // everything with any kind of edge into it is not extraneous
    to.extraneous = false

    // devOptional is the *overlap* of the dev and optional tree.
    // however, for convenience and to save an extra rewalk, we leave
    // it set when we are in *either* tree, and then omit it from the
    // package-lock if either dev or optional are set.
    const unsetDevOpt = !node.devOptional && !node.dev && !node.optional && !dev && !optional

    // if we are not in the devOpt tree, then we're also not in
    // either the dev or opt trees
    const unsetDev = unsetDevOpt || !node.dev && !dev
    const unsetOpt = unsetDevOpt || !node.optional && !optional
    const unsetPeer = !node.peer && !peer

    if (unsetPeer) {
      unsetFlag(to, 'peer')
    }

    if (unsetDevOpt) {
      unsetFlag(to, 'devOptional')
    }

    if (unsetDev) {
      unsetFlag(to, 'dev')
    }

    if (unsetOpt) {
      unsetFlag(to, 'optional')
    }
  })

  return node
}

const resetParents = (node, flag) => {
  if (node[flag]) {
    return
  }

  for (let p = node; p && (p === node || p[flag]); p = p.resolveParent) {
    p[flag] = false
  }
}

// typically a short walk, since it only traverses deps that have the flag set.
const unsetFlag = (node, flag) => {
  if (node[flag]) {
    node[flag] = false
    depth({
      tree: node,
      visit: node => {
        node.extraneous = node[flag] = false
        if (node.isLink && node.target) {
          node.target.extraneous = node.target[flag] = false
        }
      },
      getChildren: node => {
        const children = []
        const targetNode = node.isLink && node.target ? node.target : node
        for (const edge of targetNode.edgesOut.values()) {
          if (
            edge.to &&
            edge.to[flag] &&
            ((flag !== 'peer' && edge.type === 'peer') || edge.type === 'prod')
          ) {
            children.push(edge.to)
          }
        }
        return children
      },
    })
  }
}

module.exports = calcDepFlags

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