| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- '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]
- }
|