aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/pacote/lib/fetch.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/node_modules/pacote/lib/fetch.js')
-rw-r--r--deps/node/deps/npm/node_modules/pacote/lib/fetch.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/deps/node/deps/npm/node_modules/pacote/lib/fetch.js b/deps/node/deps/npm/node_modules/pacote/lib/fetch.js
new file mode 100644
index 00000000..36fb6b6d
--- /dev/null
+++ b/deps/node/deps/npm/node_modules/pacote/lib/fetch.js
@@ -0,0 +1,82 @@
+'use strict'
+
+const duck = require('protoduck')
+
+const Fetcher = duck.define(['spec', 'opts', 'manifest'], {
+ packument: ['spec', 'opts'],
+ manifest: ['spec', 'opts'],
+ tarball: ['spec', 'opts'],
+ fromManifest: ['manifest', 'spec', 'opts'],
+ clearMemoized () {}
+}, { name: 'Fetcher' })
+module.exports = Fetcher
+
+module.exports.packument = packument
+function packument (spec, opts) {
+ const fetcher = getFetcher(spec.type)
+ return fetcher.packument(spec, opts)
+}
+
+module.exports.manifest = manifest
+function manifest (spec, opts) {
+ const fetcher = getFetcher(spec.type)
+ return fetcher.manifest(spec, opts)
+}
+
+module.exports.tarball = tarball
+function tarball (spec, opts) {
+ return getFetcher(spec.type).tarball(spec, opts)
+}
+
+module.exports.fromManifest = fromManifest
+function fromManifest (manifest, spec, opts) {
+ return getFetcher(spec.type).fromManifest(manifest, spec, opts)
+}
+
+const fetchers = {}
+
+module.exports.clearMemoized = clearMemoized
+function clearMemoized () {
+ Object.keys(fetchers).forEach(k => {
+ fetchers[k].clearMemoized()
+ })
+}
+
+function getFetcher (type) {
+ if (!fetchers[type]) {
+ // This is spelled out both to prevent sketchy stuff and to make life
+ // easier for bundlers/preprocessors.
+ switch (type) {
+ case 'alias':
+ fetchers[type] = require('./fetchers/alias')
+ break
+ case 'directory':
+ fetchers[type] = require('./fetchers/directory')
+ break
+ case 'file':
+ fetchers[type] = require('./fetchers/file')
+ break
+ case 'git':
+ fetchers[type] = require('./fetchers/git')
+ break
+ case 'hosted':
+ fetchers[type] = require('./fetchers/hosted')
+ break
+ case 'range':
+ fetchers[type] = require('./fetchers/range')
+ break
+ case 'remote':
+ fetchers[type] = require('./fetchers/remote')
+ break
+ case 'tag':
+ fetchers[type] = require('./fetchers/tag')
+ break
+ case 'version':
+ fetchers[type] = require('./fetchers/version')
+ break
+ default:
+ throw new Error(`Invalid dependency type requested: ${type}`)
+ }
+ }
+ return fetchers[type]
+}