Skip to content

Commit fb0e006

Browse files
fix: "show" cmd error for packages without stable versions (#83)
1 parent de10288 commit fb0e006

File tree

4 files changed

+40
-5
lines changed

4 files changed

+40
-5
lines changed

package-lock.json

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
},
4848
"dependencies": {
4949
"kolorist": "^1.8.0",
50-
"node-stream-zip": "^1.15.0"
50+
"node-stream-zip": "^1.15.0",
51+
"semiver": "^1.1.0"
5152
}
5253
}

src/commands.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
import { Bun, getPkgManager, PkgManagerName, YarnBerry } from "./pkg_manager";
1313
import { downloadDeno, getDenoDownloadUrl } from "./download";
1414
import { getNpmPackageInfo, getPackageMeta } from "./api";
15+
import semiver from "semiver";
1516

1617
const NPMRC_FILE = ".npmrc";
1718
const BUNFIG_FILE = "bunfig.toml";
@@ -201,10 +202,23 @@ export async function showPackageInfo(raw: string) {
201202

202203
const meta = await getPackageMeta(pkg);
203204
if (pkg.version === null) {
204-
if (meta.latest === undefined) {
205+
let latest = meta.latest;
206+
if (latest === undefined) {
205207
throw new Error(`Missing latest version for ${pkg}`);
208+
} else if (latest === null) {
209+
// When no stable version is published: `latest === null`. We need to
210+
// manually find the latest pre-release version
211+
const versions = Object.keys(meta.versions);
212+
213+
if (versions.length === 0) {
214+
throw new Error(`Could not find published version for ${pkg}`);
215+
}
216+
217+
versions.sort(semiver);
218+
pkg.version = versions[0];
219+
} else {
220+
pkg.version = latest;
206221
}
207-
pkg.version = meta.latest!;
208222
}
209223

210224
const versionCount = Object.keys(meta.versions).length;

test/commands.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,4 +788,16 @@ describe("show", () => {
788788
process.cwd(),
789789
);
790790
});
791+
792+
it("should show package information for pre-release only packages", async () => {
793+
const output = await runJsr(
794+
["show", "@fresh/update"],
795+
process.cwd(),
796+
undefined,
797+
true,
798+
);
799+
const txt = kl.stripColors(output);
800+
assert.ok(txt.includes("latest: -"));
801+
assert.ok(txt.includes("npm tarball:"));
802+
});
791803
});

0 commit comments

Comments
 (0)