mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-12 20:18:41 -09:00
CLI : Fix package existence check for scoped packages (#3044)
Fixes #2999
This commit is contained in:
parent
16f163daf3
commit
6923e5bbb3
2 changed files with 56 additions and 1 deletions
13
cli/api.js
13
cli/api.js
|
|
@ -69,7 +69,7 @@ function save() {
|
|||
}
|
||||
|
||||
function existsOnNpm(plugin) {
|
||||
const name = plugin.split('#')[0].split('@')[0];
|
||||
const name = getPackageName(plugin);
|
||||
return got.get(registryUrl + name.toLowerCase(), {timeout: 10000, json: true}).then(res => {
|
||||
if (!res.body.versions) {
|
||||
return Promise.reject(res);
|
||||
|
|
@ -77,6 +77,17 @@ function existsOnNpm(plugin) {
|
|||
});
|
||||
}
|
||||
|
||||
function getPackageName(plugin) {
|
||||
const isScoped = plugin[0] === '@';
|
||||
const nameWithoutVersion = plugin.split('#')[0];
|
||||
|
||||
if (isScoped) {
|
||||
return '@' + nameWithoutVersion.split('@')[1].replace('/', '%2f');
|
||||
}
|
||||
|
||||
return nameWithoutVersion.split('@')[0];
|
||||
}
|
||||
|
||||
function install(plugin, locally) {
|
||||
const array = locally ? getLocalPlugins() : getPlugins();
|
||||
return new Promise((resolve, reject) => {
|
||||
|
|
|
|||
44
test/unit/cli-api.test.js
Normal file
44
test/unit/cli-api.test.js
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import test from 'ava';
|
||||
const proxyquire = require('proxyquire').noCallThru();
|
||||
|
||||
test('existsOnNpm() builds the url for non-scoped packages', t => {
|
||||
let getUrl;
|
||||
const {existsOnNpm} = proxyquire('../../cli/api', {
|
||||
got: {
|
||||
get(url) {
|
||||
getUrl = url;
|
||||
return Promise.resolve({
|
||||
body: {
|
||||
versions: []
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
'registry-url': () => 'https://registry.npmjs.org/'
|
||||
});
|
||||
|
||||
return existsOnNpm('pkg').then(() => {
|
||||
t.is(getUrl, 'https://registry.npmjs.org/pkg');
|
||||
});
|
||||
});
|
||||
|
||||
test('existsOnNpm() builds the url for scoped packages', t => {
|
||||
let getUrl;
|
||||
const {existsOnNpm} = proxyquire('../../cli/api', {
|
||||
got: {
|
||||
get(url) {
|
||||
getUrl = url;
|
||||
return Promise.resolve({
|
||||
body: {
|
||||
versions: []
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
'registry-url': () => 'https://registry.npmjs.org/'
|
||||
});
|
||||
|
||||
return existsOnNpm('@scope/pkg').then(() => {
|
||||
t.is(getUrl, 'https://registry.npmjs.org/@scope%2fpkg');
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue