Skip to content

Commit 636ce56

Browse files
committed
fix: use validated package.json version in manifest
Closes #139
1 parent 9f1e5f4 commit 636ce56

File tree

4 files changed

+24
-10
lines changed

4 files changed

+24
-10
lines changed

Diff for: dist/main.js

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: dist/main.js.map

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: src/__tests__/read-manifest.test.ts

+14
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,20 @@ describe("readManifest", () => {
3838
});
3939
});
4040

41+
it("should normalize the version field", async () => {
42+
await fs.writeFile(
43+
path.join(directory, "package.json"),
44+
JSON.stringify({ name: "cool-name", version: "v1.2.3" }),
45+
"utf8"
46+
);
47+
48+
const result = await subject.readManifest(
49+
path.join(directory, "package.json")
50+
);
51+
52+
expect(result).toMatchObject({ version: "1.2.3" });
53+
});
54+
4155
it("should read a package.json file in a directory", async () => {
4256
await fs.writeFile(
4357
path.join(directory, "package.json"),

Diff for: src/read-manifest.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ const isTarball = (file: unknown): file is string => {
3939
return typeof file === "string" && path.extname(file) === TARBALL_EXTNAME;
4040
};
4141

42-
const isVersion = (version: unknown): version is string => {
43-
return semverValid(version as string) !== null;
42+
const validateVersion = (version: unknown): string | undefined => {
43+
return semverValid(version as string) ?? undefined;
4444
};
4545

4646
const readPackageJson = async (...pathSegments: string[]): Promise<string> => {
@@ -110,7 +110,7 @@ export async function readManifest(
110110
try {
111111
manifestJson = JSON.parse(manifestContents) as Record<string, unknown>;
112112
name = manifestJson["name"];
113-
version = manifestJson["version"];
113+
version = validateVersion(manifestJson["version"]);
114114
publishConfig = manifestJson["publishConfig"] ?? {};
115115
} catch (error) {
116116
throw new errors.PackageJsonParseError(packageSpec, error);
@@ -120,7 +120,7 @@ export async function readManifest(
120120
throw new errors.InvalidPackageNameError(name);
121121
}
122122

123-
if (!isVersion(version)) {
123+
if (typeof version !== "string") {
124124
throw new errors.InvalidPackageVersionError(version);
125125
}
126126

0 commit comments

Comments
 (0)