aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js')
-rw-r--r--deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js b/deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js
new file mode 100644
index 00000000..e4b14b1f
--- /dev/null
+++ b/deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js
@@ -0,0 +1,22 @@
+'use strict'
+var npa = require('npm-package-arg')
+const isRegistry = require('../utils/is-registry.js')
+
+module.exports = function (name, sw, where) {
+ try {
+ if (sw.version && sw.integrity) {
+ return npa.resolve(name, sw.version, where)
+ } else if (sw.from) {
+ const spec = npa(sw.from, where)
+ if (isRegistry(spec) && sw.version) {
+ return npa.resolve(name, sw.version, where)
+ } else if (!sw.resolved) {
+ return spec
+ }
+ }
+ if (sw.resolved) {
+ return npa.resolve(name, sw.resolved, where)
+ }
+ } catch (_) { }
+ return npa.resolve(name, sw.version, where)
+}