implement directory support - fixes #49

This commit is contained in:
silverwind 2020-10-03 14:50:52 +02:00
parent 02d4ced84b
commit 31152e41ca
Signed by untrusted user: silverwind
GPG Key ID: 2E62B41C93869443
4 changed files with 4396 additions and 532 deletions

File diff suppressed because it is too large Load Diff

1
fixtures/npm/preset-env Normal file

File diff suppressed because one or more lines are too long

32
test.js

@ -160,8 +160,8 @@ test("latest", makeTest("-j", {
},
"@babel/preset-env": {
old: "7.0.0",
new: "7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env",
new: "7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env",
},
"updates": {
old: "6941e05",
@ -172,8 +172,8 @@ test("latest", makeTest("-j", {
peerDependencies: {
"@babel/preset-env": {
old: "~6.0.0",
new: "~7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env"
new: "~7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env"
}
},
}));
@ -212,8 +212,8 @@ test("greatest", makeTest("-j -g", {
},
"@babel/preset-env": {
old: "7.0.0",
new: "7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env",
new: "7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env",
},
"updates": {
old: "6941e05",
@ -224,8 +224,8 @@ test("greatest", makeTest("-j -g", {
peerDependencies: {
"@babel/preset-env": {
old: "~6.0.0",
new: "~7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env"
new: "~7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env"
}
}
}));
@ -269,8 +269,8 @@ test("prerelease", makeTest("-j -g -p", {
},
"@babel/preset-env": {
old: "7.0.0",
new: "7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env",
new: "7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env",
},
"updates": {
old: "6941e05",
@ -281,8 +281,8 @@ test("prerelease", makeTest("-j -g -p", {
peerDependencies: {
"@babel/preset-env": {
old: "~6.0.0",
new: "~7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env"
new: "~7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env"
}
},
}));
@ -326,8 +326,8 @@ test("release", makeTest("-j -R", {
},
"@babel/preset-env": {
old: "7.0.0",
new: "7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env",
new: "7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env",
},
"updates": {
old: "6941e05",
@ -338,8 +338,8 @@ test("release", makeTest("-j -R", {
peerDependencies: {
"@babel/preset-env": {
old: "~6.0.0",
new: "~7.7.6",
info: "https://github.com/babel/babel/tree/master/packages/babel-preset-env"
new: "~7.11.5",
info: "https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env"
},
},
}));

@ -364,17 +364,43 @@ async function fetchInfo(name, type, originalRegistry) {
}
}
// https://github.com/babel/babel/tree/master/packages/babel-preset-env
function getInfoUrl({repository, homepage}, registry, name) {
let infoUrl;
if (registry === "https://npm.pkg.github.com") {
return `https://github.com/${name.replace(/^@/, "")}`;
} else if (repository) {
const url = typeof repository === "string" ? repository : repository.url;
const info = hostedGitInfo(url);
if (info && info.browse) return info.browse();
if (repository && repository.url && /^https?:/.test(repository.url)) return repository.url;
if (info && info.browse) {
// https://github.com/babel/babel
infoUrl = info.browse();
}
if (infoUrl && repository.directory && info.treepath) {
// https://github.com/babel/babel/tree/HEAD/packages/babel-cli
infoUrl = `${infoUrl}/${info.treepath}/HEAD/${repository.directory}`;
}
if (!infoUrl && repository && repository.url && /^https?:/.test(repository.url)) {
infoUrl = repository.url;
}
}
let url = infoUrl || homepage || "";
// force https for github.com
if (url) {
const u = new URL(url);
if (u.hostname === "github.com" && u.protocol === "http:") {
u.protocol = "https:";
url = String(u);
}
}
return homepage || "";
return url;
}
function finish(obj, opts = {}) {