Skip to content

Commit 67cd713

Browse files
committed
fix(fetch): make it play nicer with bundlers
1 parent d5e789c commit 67cd713

File tree

1 file changed

+32
-23
lines changed

1 file changed

+32
-23
lines changed

lib/fetch.js

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,6 @@ function fromManifest (manifest, spec, opts) {
2626
return getFetcher(spec.type).fromManifest(manifest, spec, opts)
2727
}
2828

29-
const TYPES = new Set([
30-
'directory',
31-
'file',
32-
'git',
33-
'hosted',
34-
'range',
35-
'remote',
36-
'tag',
37-
'version'
38-
])
39-
4029
const fetchers = {}
4130

4231
module.exports.clearMemoized = clearMemoized
@@ -47,17 +36,37 @@ function clearMemoized () {
4736
}
4837

4938
function getFetcher (type) {
50-
if (!TYPES.has(type)) {
51-
throw new Error(`Invalid dependency type requested: ${type}`)
52-
} else if (fetchers[type]) {
53-
return fetchers[type]
54-
} else {
55-
const fetcher = (
56-
fetchers[type] ||
57-
(
58-
fetchers[type] = require(`./fetchers/${type}`)
59-
)
60-
)
61-
return fetcher
39+
if (!fetchers[type]) {
40+
// This is spelled out both to prevent sketchy stuff and to make life
41+
// easier for bundlers/preprocessors.
42+
switch (type) {
43+
case 'directory':
44+
fetchers[type] = require('./fetchers/directory')
45+
break
46+
case 'file':
47+
fetchers[type] = require('./fetchers/file')
48+
break
49+
case 'git':
50+
fetchers[type] = require('./fetchers/git')
51+
break
52+
case 'hosted':
53+
fetchers[type] = require('./fetchers/hosted')
54+
break
55+
case 'range':
56+
fetchers[type] = require('./fetchers/range')
57+
break
58+
case 'remote':
59+
fetchers[type] = require('./fetchers/remote')
60+
break
61+
case 'tag':
62+
fetchers[type] = require('./fetchers/tag')
63+
break
64+
case 'version':
65+
fetchers[type] = require('./fetchers/version')
66+
break
67+
default:
68+
throw new Error(`Invalid dependency type requested: ${type}`)
69+
}
6270
}
71+
return fetchers[type]
6372
}

0 commit comments

Comments
 (0)