Skip to content

Commit f65173a

Browse files
chore: gracefully handle future invalid versions
Relates to #110
1 parent 96477cc commit f65173a

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/lib/server/github-cache.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -693,13 +693,19 @@ export class GitHubCache {
693693
const { data: changelogResult } = await this.#octokit.rest.repos.getContent({
694694
owner,
695695
repo,
696-
ref:
697-
owner === "sveltejs" &&
698-
repo === "prettier-plugin-svelte" && // this repo is a bit of a mess (https://github.com/sveltejs/prettier-plugin-svelte/issues/497)
699-
tags[0] &&
700-
semver.major(repository.metadataFromTag(tags[0].name)[1]) === 3
701-
? "version-3" // a temporary fix to get the changelog from the right branch while v4 isn't out yet
702-
: undefined,
696+
ref: (() => {
697+
try {
698+
return owner === "sveltejs" &&
699+
repo === "prettier-plugin-svelte" && // this repo is a bit of a mess (https://github.com/sveltejs/prettier-plugin-svelte/issues/497)
700+
tags[0] &&
701+
semver.major(repository.metadataFromTag(tags[0].name)[1]) === 3
702+
? "version-3" // a temporary fix to get the changelog from the right branch while v4 isn't out yet
703+
: undefined;
704+
} catch {
705+
// handle oopsies for invalid versions returned from `metadataFromTag` (or others)
706+
return undefined;
707+
}
708+
})(),
703709
path: "CHANGELOG.md"
704710
});
705711

src/routes/package/releases.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,20 @@ export async function getPackageReleases(
7878
console.warn(`Empty release tag name: ${JSON.stringify(release)}`);
7979
return false;
8080
}
81-
const [name] = repo.metadataFromTag(release.tag_name);
81+
const [name, version] = repo.metadataFromTag(release.tag_name);
82+
if (semver.valid(version) === null) {
83+
posthog?.captureException(new Error("Invalid version"), undefined, {
84+
repo: `${repo.repoOwner}/${repo.repoName}`,
85+
packageName,
86+
tag: release.tag_name,
87+
parsedName: name,
88+
parsedVersion: version
89+
});
90+
console.warn(
91+
`Invalid version from \`metadataFromTag\` "${version}" gotten from ${release.tag_name}`
92+
);
93+
return false;
94+
}
8295
return (
8396
(repo.dataFilter?.(release) ?? true) &&
8497
repo.pkg.name.localeCompare(name, undefined, { sensitivity: "base" }) === 0

0 commit comments

Comments
 (0)