404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.15.1.45: ~ $
'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()
  })
}

Filemanager

Name Type Size Permission Actions
action Folder 0755
access-error.js File 202 B 0644
actions.js File 5.52 KB 0644
and-add-parent-to-errors.js File 375 B 0644
and-finish-tracker.js File 360 B 0644
and-ignore-errors.js File 204 B 0644
audit.js File 8.24 KB 0644
check-permissions.js File 1.85 KB 0644
copy-tree.js File 770 B 0644
decompose-actions.js File 2.18 KB 0644
deps.js File 30.32 KB 0644
diff-trees.js File 9.12 KB 0644
exists.js File 775 B 0644
flatten-tree.js File 1021 B 0644
fund.js File 1.28 KB 0644
get-requested.js File 635 B 0644
has-modern-meta.js File 702 B 0644
inflate-bundled.js File 628 B 0644
inflate-shrinkwrap.js File 8.87 KB 0644
is-dev-dep.js File 175 B 0644
is-extraneous.js File 618 B 0644
is-fs-access-available.js File 763 B 0644
is-only-dev.js File 1.24 KB 0644
is-only-optional.js File 674 B 0644
is-opt-dep.js File 185 B 0644
is-prod-dep.js File 172 B 0644
module-staging-path.js File 259 B 0644
mutate-into-logical-tree.js File 4.52 KB 0644
node.js File 1.85 KB 0644
read-shrinkwrap.js File 3.67 KB 0644
realize-shrinkwrap-specifier.js File 621 B 0644
report-optional-failure.js File 1.02 KB 0644
save.js File 5.91 KB 0644
update-package-json.js File 1.87 KB 0644
validate-args.js File 2.73 KB 0644
validate-tree.js File 3.1 KB 0644
writable.js File 1 KB 0644