summaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/lib/install/is-only-dev.js
diff options
context:
space:
mode:
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.js36
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)
- }
- }
-}