Skip to content

Commit 4e93749

Browse files
committed
fix: abort file tree fetches on compare timeout
1 parent 4982d7d commit 4e93749

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

server/api/registry/compare/[...pkg].get.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ export default defineCachedEventHandler(
9191
try {
9292
// Fetch file trees and package.json for both versions in parallel
9393
const [fromTree, toTree, fromPkg, toPkg] = await Promise.all([
94-
getPackageFileTree(packageName, fromVersion),
95-
getPackageFileTree(packageName, toVersion),
94+
getPackageFileTree(packageName, fromVersion, controller.signal),
95+
getPackageFileTree(packageName, toVersion, controller.signal),
9696
fetchPackageJson(packageName, fromVersion, controller.signal),
9797
fetchPackageJson(packageName, toVersion, controller.signal),
9898
])

server/utils/file-tree.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ import type {
1212
export async function fetchFileTree(
1313
packageName: string,
1414
version: string,
15+
signal?: AbortSignal,
1516
): Promise<JsDelivrPackageResponse> {
1617
const url = `https://data.jsdelivr.com/v1/packages/npm/${packageName}@${version}`
17-
const response = await fetch(url)
18+
const response = await fetch(url, { signal })
1819

1920
if (!response.ok) {
2021
if (response.status === 404) {
@@ -74,8 +75,9 @@ export function convertToFileTree(
7475
export async function getPackageFileTree(
7576
packageName: string,
7677
version: string,
78+
signal?: AbortSignal,
7779
): Promise<PackageFileTreeResponse> {
78-
const jsDelivrData = await fetchFileTree(packageName, version)
80+
const jsDelivrData = await fetchFileTree(packageName, version, signal)
7981
const tree = convertToFileTree(jsDelivrData.files)
8082

8183
return {

0 commit comments

Comments
 (0)