Skip to content

Commit 6b94bbf

Browse files
committed
Fetch npm info concurrently
1 parent f96f43a commit 6b94bbf

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

packages/publisher/src/calculate-versions.ts

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import { ChangedPackages, ChangedPackagesJson, ChangedTypingJson, versionsFilena
44
import { getDefinitelyTyped, AllPackages, NotNeededPackage, writeDataFile } from "@definitelytyped/definitions-parser";
55
import {
66
assertDefined,
7-
mapDefinedAsync,
87
logUncaughtErrors,
98
loggerWithErrors,
109
FS,
1110
LoggerWithErrors,
1211
UncachedNpmInfoClient,
1312
withNpmCache,
1413
CachedNpmInfoClient,
14+
nAtATime,
1515
} from "@definitelytyped/utils";
1616
import { fetchTypesPackageVersionInfo } from "@definitelytyped/retag";
1717
import { cacheDirPath } from "./lib/settings";
@@ -66,35 +66,39 @@ async function computeChangedPackages(
6666
client: CachedNpmInfoClient
6767
): Promise<ChangedPackages> {
6868
log.info("# Computing changed packages...");
69-
const changedTypings = await mapDefinedAsync(allPackages.allTypings(), async (pkg) => {
70-
const { version, needsPublish } = await fetchTypesPackageVersionInfo(pkg, client, /*publish*/ true, log);
71-
if (needsPublish) {
72-
log.info(`Need to publish: ${pkg.desc}@${version}`);
73-
for (const { name } of pkg.packageJsonDependencies) {
69+
const changedTypings = (
70+
await nAtATime(10, allPackages.allTypings(), async (pkg) => {
71+
const { version, needsPublish } = await fetchTypesPackageVersionInfo(pkg, client, /*publish*/ true, log);
72+
if (needsPublish) {
73+
log.info(`Need to publish: ${pkg.desc}@${version}`);
74+
for (const { name } of pkg.packageJsonDependencies) {
75+
assertDefined(
76+
await client.fetchAndCacheNpmInfo(name),
77+
`'${pkg.name}' depends on '${name}' which does not exist on npm. All dependencies must exist.`
78+
);
79+
}
80+
const latestVersion = pkg.isLatest
81+
? undefined
82+
: (await fetchTypesPackageVersionInfo(allPackages.getLatest(pkg), client, /*publish*/ true)).version;
83+
return { pkg, version, latestVersion };
84+
}
85+
return undefined;
86+
})
87+
).filter((value): value is NonNullable<typeof value> => value as never);
88+
log.info("# Computing deprecated packages...");
89+
const changedNotNeededPackages = (
90+
await nAtATime(10, allPackages.allNotNeeded(), async (pkg) => {
91+
if (!(await isAlreadyDeprecated(pkg, client, log))) {
7492
assertDefined(
75-
await client.fetchAndCacheNpmInfo(name),
76-
`'${pkg.name}' depends on '${name}' which does not exist on npm. All dependencies must exist.`
93+
await client.fetchAndCacheNpmInfo(pkg.libraryName),
94+
`To deprecate '@types/${pkg.name}', '${pkg.libraryName}' must exist on npm.`
7795
);
96+
log.info(`To be deprecated: ${pkg.name}`);
97+
return pkg;
7898
}
79-
const latestVersion = pkg.isLatest
80-
? undefined
81-
: (await fetchTypesPackageVersionInfo(allPackages.getLatest(pkg), client, /*publish*/ true)).version;
82-
return { pkg, version, latestVersion };
83-
}
84-
return undefined;
85-
});
86-
log.info("# Computing deprecated packages...");
87-
const changedNotNeededPackages = await mapDefinedAsync(allPackages.allNotNeeded(), async (pkg) => {
88-
if (!(await isAlreadyDeprecated(pkg, client, log))) {
89-
assertDefined(
90-
await client.fetchAndCacheNpmInfo(pkg.libraryName),
91-
`To deprecate '@types/${pkg.name}', '${pkg.libraryName}' must exist on npm.`
92-
);
93-
log.info(`To be deprecated: ${pkg.name}`);
94-
return pkg;
95-
}
96-
return undefined;
97-
});
99+
return undefined;
100+
})
101+
).filter((value): value is NonNullable<typeof value> => value as never);
98102
return { changedTypings, changedNotNeededPackages };
99103
}
100104

0 commit comments

Comments
 (0)