$84 GRAYBYTE WORDPRESS FILE MANAGER $90

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/bin-links/lib/

HOME
Current File : /opt/cpanel/ea-nodejs22/lib/node_modules/npm/node_modules/bin-links/lib//link-gently.js
// if the thing isn't there, skip it
// if there's a non-symlink there already, eexist
// if there's a symlink already, pointing somewhere else, eexist
// if there's a symlink already, pointing into our pkg, remove it first
// then create the symlink

const { resolve, dirname } = require('path')
const { lstat, mkdir, readlink, rm, symlink } = require('fs/promises')
const { log } = require('proc-log')
const throwSignificant = er => {
  if (er.code === 'ENOENT') {
    return
  }
  if (er.code === 'EACCES') {
    log.warn('error adding file', er.message)
    return
  }
  throw er
}

const rmOpts = {
  recursive: true,
  force: true,
}

// even in --force mode, we never create a link over a link we've
// already created.  you can have multiple packages in a tree trying
// to contend for the same bin, or the same manpage listed multiple times,
// which creates a race condition and nondeterminism.
const seen = new Set()

const SKIP = Symbol('skip - missing or already installed')
const CLOBBER = Symbol('clobber - ours or in forceful mode')

const linkGently = async ({ path, to, from, absFrom, force }) => {
  if (seen.has(to)) {
    return false
  }
  seen.add(to)

  // if the script or manpage isn't there, just ignore it.
  // this arguably *should* be an install error of some sort,
  // or at least a warning, but npm has always behaved this
  // way in the past, so it'd be a breaking change
  return Promise.all([
    lstat(absFrom).catch(throwSignificant),
    lstat(to).catch(throwSignificant),
  ]).then(([stFrom, stTo]) => {
    // not present in package, skip it
    if (!stFrom) {
      return SKIP
    }

    // exists! maybe clobber if we can
    if (stTo) {
      if (!stTo.isSymbolicLink()) {
        return force && rm(to, rmOpts).then(() => CLOBBER)
      }

      return readlink(to).then(target => {
        if (target === from) {
          return SKIP
        } // skip it, already set up like we want it.

        target = resolve(dirname(to), target)
        if (target.indexOf(path) === 0 || force) {
          return rm(to, rmOpts).then(() => CLOBBER)
        }
        // neither skip nor clobber
        return false
      })
    } else {
      // doesn't exist, dir might not either
      return mkdir(dirname(to), { recursive: true })
    }
  })
    .then(skipOrClobber => {
      if (skipOrClobber === SKIP) {
        return false
      }
      return symlink(from, to, 'file').catch(er => {
        if (skipOrClobber === CLOBBER || force) {
          return rm(to, rmOpts).then(() => symlink(from, to, 'file'))
        }
        throw er
      }).then(() => true)
    })
}

const resetSeen = () => {
  for (const p of seen) {
    seen.delete(p)
  }
}

module.exports = Object.assign(linkGently, { resetSeen })

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
bin-target.js
0.321 KB
17 Jan 2026 1.16 AM
root / root
0644
check-bin.js
2.016 KB
17 Jan 2026 1.16 AM
root / root
0644
check-bins.js
0.481 KB
17 Jan 2026 1.16 AM
root / root
0644
fix-bin.js
1.133 KB
17 Jan 2026 1.16 AM
root / root
0644
get-node-modules.js
0.521 KB
17 Jan 2026 1.16 AM
root / root
0644
get-paths.js
1.216 KB
17 Jan 2026 1.16 AM
root / root
0644
get-prefix.js
0.144 KB
17 Jan 2026 1.16 AM
root / root
0644
index.js
1.33 KB
17 Jan 2026 1.16 AM
root / root
0644
is-windows.js
0.115 KB
17 Jan 2026 1.16 AM
root / root
0644
link-bin.js
0.335 KB
17 Jan 2026 1.16 AM
root / root
0644
link-bins.js
0.757 KB
17 Jan 2026 1.16 AM
root / root
0644
link-gently.js
2.688 KB
17 Jan 2026 1.16 AM
root / root
0644
link-mans.js
1.503 KB
17 Jan 2026 1.16 AM
root / root
0644
man-target.js
0.227 KB
17 Jan 2026 1.16 AM
root / root
0644
shim-bin.js
2.047 KB
17 Jan 2026 1.16 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF