Skip to content

Commit

Permalink
fix: scoped registries shouldn't include upstream packages (close: #8)
Browse files Browse the repository at this point in the history
  • Loading branch information
favoyang committed Apr 10, 2020
1 parent df6ec50 commit 940438a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
29 changes: 23 additions & 6 deletions lib/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ const parseName = function(pkg) {
// Fetch package info json from registry
const fetchPackageInfo = async function(name, registry) {
if (!registry) registry = env.registry;
log.debug(`fetchPackageInfo: ${name} registry=${registry}`);
try {
let pkgUrl = `${registry}/${name}`;
log.debug(`http get ${pkgUrl}`);
Expand Down Expand Up @@ -102,6 +103,7 @@ const fetchPackageInfo = async function(name, registry) {
]
*/
const fetchPackageDependencies = async function({ name, version, deep }) {
log.debug(`fetchPackageDependencies: ${name}@${version} deep=${deep}`);
// a list of pending dependency {name, version}
const pendingList = [{ name, version }];
// a list of processed dependency {name, version}
Expand All @@ -123,22 +125,33 @@ const fetchPackageDependencies = async function({ name, version, deep }) {
self: entry.name == name
};
if (!validDep.module) {
// fetch package info
let pkgInfo = cachedPacakgeInfoDict[entry.name];
// try fetching package info from cache
let { pkgInfo, upstream } = _.get(cachedPacakgeInfoDict, entry.name, {
pkgInfo: null,
upstream: false
});
if (pkgInfo) {
validDep.upstream = upstream;
}
// try fetching package info from the default registry
if (!pkgInfo) {
pkgInfo = await fetchPackageInfo(entry.name);
if (pkgInfo) cachedPacakgeInfoDict[entry.name] = pkgInfo;
if (pkgInfo) {
validDep.upstream = false;
cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: false };
}
}
// try fetching package info from the upstream registry
if (!pkgInfo) {
pkgInfo = await fetchPackageInfo(entry.name, env.upstreamRegistry);
if (pkgInfo) {
validDep.upstream = true;
cachedPacakgeInfoDict[entry.name] = pkgInfo;
cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: true };
}
}
// handle package not exist
if (!pkgInfo) {
log.warn(`package not found: ${entry.name}`);
log.warn(`invalid dep: ${entry.name}`);
continue;
}
// verify version
Expand Down Expand Up @@ -169,7 +182,11 @@ const fetchPackageDependencies = async function({ name, version, deep }) {
}
}
validDeps.push(validDep);
log.debug(`- ${entry.name}@${entry.version}`);
log.debug(
`valid dep: ${entry.name}@${entry.version} ${
validDep.module ? "module " : ""
}${validDep.upstream ? "upstream" : ""}`
);
}
}
return validDeps;
Expand Down
2 changes: 1 addition & 1 deletion test/test-cmd-deps.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ describe("cmd-deps.js", function() {
retCode.should.equal(0);
stderr
.captured()
.includes("package not found")
.includes("invalid dep")
.should.be.ok();
});
it("deps pkg upstream", async function() {
Expand Down

0 comments on commit 940438a

Please sign in to comment.