Skip to content

Commit 9fb23ec

Browse files
committed
Fetch npm info concurrently
1 parent 73170c0 commit 9fb23ec

File tree

1 file changed

+44
-41
lines changed

1 file changed

+44
-41
lines changed

packages/publisher/src/calculate-versions.ts

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
import { defaultLocalOptions } from "./lib/common";
22
import { ChangedPackages, ChangedPackagesJson, ChangedTypingJson, versionsFilename } from "./lib/versions";
33
import { getDefinitelyTyped, AllPackages, NotNeededPackage, writeDataFile } from "@definitelytyped/definitions-parser";
4-
import {
5-
mapDefinedAsync,
6-
logUncaughtErrors,
7-
loggerWithErrors,
8-
FS,
9-
LoggerWithErrors,
10-
defaultCacheDir,
11-
} from "@definitelytyped/utils";
4+
import { logUncaughtErrors, loggerWithErrors, FS, LoggerWithErrors, defaultCacheDir } from "@definitelytyped/utils";
125
import { fetchTypesPackageVersionInfo } from "@definitelytyped/retag";
136
import * as pacote from "pacote";
147

@@ -41,40 +34,50 @@ async function computeAndSaveChangedPackages(
4134

4235
async function computeChangedPackages(allPackages: AllPackages, log: LoggerWithErrors): Promise<ChangedPackages> {
4336
log.info("# Computing changed packages...");
44-
const changedTypings = await mapDefinedAsync(allPackages.allTypings(), async (pkg) => {
45-
const { version, needsPublish } = await fetchTypesPackageVersionInfo(pkg, /*publish*/ true, log);
46-
if (needsPublish) {
47-
log.info(`Need to publish: ${pkg.desc}@${version}`);
48-
for (const { name } of pkg.packageJsonDependencies) {
49-
await pacote.manifest(name, { cache: defaultCacheDir }).catch((reason) => {
50-
throw reason.code === "E404"
51-
? new Error(
52-
`'${pkg.name}' depends on '${name}' which does not exist on npm. All dependencies must exist.`,
53-
{ cause: reason }
54-
)
55-
: reason;
56-
});
57-
}
58-
const latestVersion = pkg.isLatest
59-
? undefined
60-
: (await fetchTypesPackageVersionInfo(allPackages.getLatest(pkg), /*publish*/ true)).version;
61-
return { pkg, version, latestVersion };
62-
}
63-
return undefined;
64-
});
37+
const changedTypings = (
38+
await Promise.all(
39+
allPackages.allTypings().map(async (pkg) => {
40+
const { version, needsPublish } = await fetchTypesPackageVersionInfo(pkg, /*publish*/ true, log);
41+
if (needsPublish) {
42+
log.info(`Need to publish: ${pkg.desc}@${version}`);
43+
for (const { name } of pkg.packageJsonDependencies) {
44+
await pacote.manifest(name, { cache: defaultCacheDir }).catch((reason) => {
45+
throw reason.code === "E404"
46+
? new Error(
47+
`'${pkg.name}' depends on '${name}' which does not exist on npm. All dependencies must exist.`,
48+
{ cause: reason }
49+
)
50+
: reason;
51+
});
52+
}
53+
const latestVersion = pkg.isLatest
54+
? undefined
55+
: (await fetchTypesPackageVersionInfo(allPackages.getLatest(pkg), /*publish*/ true)).version;
56+
return { pkg, version, latestVersion };
57+
}
58+
return undefined;
59+
})
60+
)
61+
).filter((value): value is NonNullable<typeof value> => value as never);
6562
log.info("# Computing deprecated packages...");
66-
const changedNotNeededPackages = await mapDefinedAsync(allPackages.allNotNeeded(), async (pkg) => {
67-
if (!(await isAlreadyDeprecated(pkg, log))) {
68-
await pacote.manifest(pkg.libraryName, { cache: defaultCacheDir }).catch((reason) => {
69-
throw reason.code === "E404"
70-
? new Error(`To deprecate '@types/${pkg.name}', '${pkg.libraryName}' must exist on npm.`, { cause: reason })
71-
: reason;
72-
});
73-
log.info(`To be deprecated: ${pkg.name}`);
74-
return pkg;
75-
}
76-
return undefined;
77-
});
63+
const changedNotNeededPackages = (
64+
await Promise.all(
65+
allPackages.allNotNeeded().map(async (pkg) => {
66+
if (!(await isAlreadyDeprecated(pkg, log))) {
67+
await pacote.manifest(pkg.libraryName, { cache: defaultCacheDir }).catch((reason) => {
68+
throw reason.code === "E404"
69+
? new Error(`To deprecate '@types/${pkg.name}', '${pkg.libraryName}' must exist on npm.`, {
70+
cause: reason,
71+
})
72+
: reason;
73+
});
74+
log.info(`To be deprecated: ${pkg.name}`);
75+
return pkg;
76+
}
77+
return undefined;
78+
})
79+
)
80+
).filter((value): value is NonNullable<typeof value> => value as never);
7881
return { changedTypings, changedNotNeededPackages };
7982
}
8083

0 commit comments

Comments
 (0)