diff options
Diffstat (limited to 'deps/node/deps/npm/lib/install/is-only-dev.js')
-rw-r--r-- | deps/node/deps/npm/lib/install/is-only-dev.js | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/deps/node/deps/npm/lib/install/is-only-dev.js b/deps/node/deps/npm/lib/install/is-only-dev.js deleted file mode 100644 index 2877c61a..00000000 --- a/deps/node/deps/npm/lib/install/is-only-dev.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict' -module.exports = isOnlyDev - -const moduleName = require('../utils/module-name.js') -const isDevDep = require('./is-dev-dep.js') -const isProdDep = require('./is-prod-dep.js') - -// Returns true if the module `node` is only required direcctly as a dev -// dependency of the top level or transitively _from_ top level dev -// dependencies. -// Dual mode modules (that are both dev AND prod) should return false. -function isOnlyDev (node, seen) { - if (!seen) seen = new Set() - return node.requiredBy.length && node.requiredBy.every(andIsOnlyDev(moduleName(node), seen)) -} - -// There is a known limitation with this implementation: If a dependency is -// ONLY required by cycles that are detached from the top level then it will -// ultimately return true. -// -// This is ok though: We don't allow shrinkwraps with extraneous deps and -// these situation is caught by the extraneous checker before we get here. -function andIsOnlyDev (name, seen) { - return function (req) { - const isDev = isDevDep(req, name) - const isProd = isProdDep(req, name) - if (req.isTop) { - return isDev && !isProd - } else { - if (seen.has(req)) return true - seen = new Set(seen) - seen.add(req) - return isOnlyDev(req, seen) - } - } -} |