From 72852eeddd404763a4d9a826eda2cbeea4e55e62 Mon Sep 17 00:00:00 2001 From: oritwoen <18102267+oritwoen@users.noreply.github.com> Date: Tue, 31 Mar 2026 17:15:59 +0200 Subject: [PATCH] refactor: use p-limit for blog release fetching Replace sequential batch loop with p-limit concurrency control, consistent with how the rest of the codebase handles parallel fetches. --- src/sources/blog-releases.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/sources/blog-releases.ts b/src/sources/blog-releases.ts index 245704c3..8137d2b8 100644 --- a/src/sources/blog-releases.ts +++ b/src/sources/blog-releases.ts @@ -5,6 +5,7 @@ import type { BlogRelease } from './package-registry.ts' import { htmlToMarkdown } from 'mdream' +import pLimit from 'p-limit' import { yamlEscape } from '../core/yaml.ts' import { getBlogPreset } from './package-registry.ts' import { compareSemver, parseSemver } from './releases.ts' @@ -114,18 +115,12 @@ export async function fetchBlogReleases( if (filteredReleases.length === 0) return [] - const releases: BlogReleasePost[] = [] - - // Fetch all blog posts in parallel with 3 concurrent requests - const batchSize = 3 - for (let i = 0; i < filteredReleases.length; i += batchSize) { - const batch = filteredReleases.slice(i, i + batchSize) - const results = await Promise.all(batch.map(entry => fetchBlogPost(entry))) - for (const result of results) { - if (result) - releases.push(result) - } - } + // Fetch all blog posts with controlled concurrency + const limit = pLimit(3) + const results = await Promise.all( + filteredReleases.map(entry => limit(() => fetchBlogPost(entry))), + ) + const releases = results.filter((r): r is BlogReleasePost => r !== null) if (releases.length === 0) return []