Skip to content

Commit f3f2793

Browse files
committed
refactor(scripts): convert Promise.all to Promise.allSettled for readme updates and validation
Converts Promise.all to Promise.allSettled in README generation, package validation, and release utilities to prevent memory leaks from short-circuited rejected promises. Changes: - scripts/update-npm-readmes.mjs: parallel README writes use Promise.allSettled - scripts/testing/validate-package-tests.mjs: validation checks use Promise.allSettled - scripts/release-npm-packages.mjs: package hash comparisons use Promise.allSettled
1 parent e773208 commit f3f2793

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

scripts/release-npm-packages.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,16 @@ async function hasPackageChanged(pkg, manifest_, options) {
238238
let changed = false
239239
// Compare actual file contents by extracting packages and comparing SHA hashes.
240240
try {
241-
const { 0: remoteHashes, 1: localHashes } = await Promise.all([
241+
const results = await Promise.allSettled([
242242
getRemotePackageFileHashes(`${pkg.name}@${manifest.version}`),
243243
getLocalPackageFileHashes(pkg.path),
244244
])
245245

246+
const remoteHashes =
247+
results[0].status === 'fulfilled' ? results[0].value : {}
248+
const localHashes =
249+
results[1].status === 'fulfilled' ? results[1].value : {}
250+
246251
// Use remote files as source of truth and check if local matches.
247252
for (const { 0: file, 1: remoteHash } of Object.entries(remoteHashes)) {
248253
const localHash = localHashes[file]

scripts/testing/validate-package-tests.mjs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,9 +387,11 @@ async function validatePackage(packageName) {
387387
validateDependencies(packageName, packageDir),
388388
]
389389

390-
const results = await Promise.all(validations)
391-
for (const issues of results) {
392-
allIssues.push(...issues)
390+
const settled = await Promise.allSettled(validations)
391+
for (const result of settled) {
392+
if (result.status === 'fulfilled') {
393+
allIssues.push(...result.value)
394+
}
393395
}
394396

395397
return {

scripts/update-npm-readmes.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async function main() {
4040
return
4141
}
4242
const npmPackageNames = getNpmPackageNames()
43-
await Promise.all(
43+
await Promise.allSettled(
4444
npmPackageNames.map(async sockRegPkgName => {
4545
const pkgPath = path.join(NPM_PACKAGES_PATH, sockRegPkgName)
4646
const readmePath = path.join(pkgPath, README_MD)

0 commit comments

Comments
 (0)