PHP 8.1.33
Preview: check-permissions.js Size: 1.85 KB
//lib/node_modules/npm/lib/install/check-permissions.js

'use strict'
var path = require('path')
var log = require('npmlog')
var validate = require('aproba')
var uniq = require('lodash.uniq')
var asyncMap = require('slide').asyncMap
var npm = require('../npm.js')
var exists = require('./exists.js')
var writable = require('./writable.js')

module.exports = function (actions, next) {
  validate('AF', arguments)
  var errors = []
  asyncMap(actions, function (action, done) {
    var cmd = action[0]
    var pkg = action[1]
    switch (cmd) {
      case 'add':
        hasAnyWriteAccess(path.resolve(pkg.path, '..'), errors, done)
        break
      case 'update':
      case 'remove':
        hasWriteAccess(pkg.path, errors, andHasWriteAccess(path.resolve(pkg.path, '..'), errors, done))
        break
      case 'move':
        hasAnyWriteAccess(pkg.path, errors, andHasWriteAccess(path.resolve(pkg.fromPath, '..'), errors, done))
        break
      default:
        done()
    }
  }, function () {
    if (!errors.length) return next()
    uniq(errors.map(function (er) { return 'Missing write access to ' + er.path })).forEach(function (er) {
      log.warn('checkPermissions', er)
    })
    npm.config.get('force') ? next() : next(errors[0])
  })
}

function andHasWriteAccess (dir, errors, done) {
  validate('SAF', arguments)
  return function () {
    hasWriteAccess(dir, errors, done)
  }
}

function hasAnyWriteAccess (dir, errors, done) {
  validate('SAF', arguments)
  findNearestDir()
  function findNearestDir () {
    var nextDir = path.resolve(dir, '..')
    exists(dir, function (dirDoesntExist) {
      if (!dirDoesntExist || nextDir === dir) {
        return hasWriteAccess(dir, errors, done)
      } else {
        dir = nextDir
        findNearestDir()
      }
    })
  }
}

function hasWriteAccess (dir, errors, done) {
  validate('SAF', arguments)
  writable(dir, function (er) {
    if (er) errors.push(er)
    done()
  })
}

Directory Contents

Dirs: 1 × Files: 36

Name Size Perms Modified Actions
action DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
202 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
5.52 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
375 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
360 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
204 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
8.24 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.85 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
770 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.18 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
30.32 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
9.12 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
775 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1021 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.28 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
635 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
702 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
628 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
8.87 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
175 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
618 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
763 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.24 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
674 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
185 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
172 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
259 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.52 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.85 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
3.67 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
621 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.02 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
5.91 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.87 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.73 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
3.10 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.00 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).