diff options
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.js | 82 |
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] +} |