Skip to content

Commit b5e7c98

Browse files
committed
Mark removed types as deprecated
1 parent 9cf6081 commit b5e7c98

File tree

3 files changed

+88
-2
lines changed

3 files changed

+88
-2
lines changed

packages/publisher/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@definitelytyped/retag": "^0.0.58-next.6",
1212
"@definitelytyped/typescript-versions": "^0.0.57",
1313
"@definitelytyped/utils": "^0.0.58-next.3",
14+
"@octokit/graphql": "^4.5.6",
1415
"@octokit/rest": "^16.1.0",
1516
"adal-node": "^0.1.22",
1617
"applicationinsights": "^1.0.7",
@@ -27,6 +28,7 @@
2728
},
2829
"devDependencies": {
2930
"@types/fs-extra": "4.0.0",
31+
"@types/libnpmsearch": "^2.0.1",
3032
"@types/mz": "^0.0.31",
3133
"@types/node": "^12.12.29",
3234
"@types/oboe": "^2.0.28",

packages/publisher/src/full.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export default async function full(
5151
const changedPackages = await calculateVersions(dt, infoClient, log);
5252
await generatePackages(dt, allPackages, changedPackages);
5353
await createSearchIndex(allPackages, infoClient);
54-
await publishPackages(changedPackages, dry, githubAccessToken, fetcher);
54+
await publishPackages(allPackages, changedPackages, dry, githubAccessToken, fetcher);
5555
await publishRegistry(dt, allPackages, dry, infoClient);
5656
await validate(dt);
5757
}

packages/publisher/src/publish-packages.ts

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import applicationinsights = require("applicationinsights");
2+
import search = require("libnpmsearch");
3+
import { graphql } from "@octokit/graphql";
24
import * as yargs from "yargs";
35

46
import { defaultLocalOptions } from "./lib/common";
@@ -52,8 +54,10 @@ if (!module.parent) {
5254
log
5355
);
5456
} else {
57+
const allPackages = await AllPackages.read(dt);
5558
await publishPackages(
56-
await readChangedPackages(await AllPackages.read(dt)),
59+
allPackages,
60+
await readChangedPackages(allPackages),
5761
dry,
5862
process.env.GH_API_TOKEN || "",
5963
new Fetcher()
@@ -63,6 +67,7 @@ if (!module.parent) {
6367
}
6468

6569
export default async function publishPackages(
70+
allPackages: AllPackages,
6671
changedPackages: ChangedPackages,
6772
dry: boolean,
6873
githubAccessToken: string,
@@ -187,6 +192,85 @@ export default async function publishPackages(
187192
cacheDirPath
188193
);
189194

195+
// Loop over the @types packages in npm and mark any that no longer
196+
// exist in HEAD as deprecated.
197+
let from = 0;
198+
let objects;
199+
do {
200+
const opts = {
201+
limit: 250,
202+
from
203+
};
204+
objects = await search("@types", opts);
205+
for (const { name: fullNpmName } of objects) {
206+
const name = fullNpmName.slice("@types/".length);
207+
// If they don't exist in the types directory or in
208+
// notNeededPackages.json then mark them deprecated. Reference the
209+
// commit/pull request that removed them.
210+
if (!allPackages.tryGetLatestVersion(name) && !allPackages.getNotNeededPackage(name)) {
211+
log(`Deprecating ${name}`);
212+
const {
213+
repository: {
214+
ref: {
215+
target: {
216+
history: {
217+
nodes: [commit]
218+
}
219+
}
220+
}
221+
}
222+
} = await graphql(
223+
`
224+
query($path: String!) {
225+
repository(name: "DefinitelyTyped", owner: "DefinitelyTyped") {
226+
ref(qualifiedName: "master") {
227+
target {
228+
... on Commit {
229+
history(first: 1, path: $path) {
230+
nodes {
231+
associatedPullRequests(first: 1) {
232+
nodes {
233+
url
234+
}
235+
}
236+
messageHeadline
237+
}
238+
}
239+
}
240+
}
241+
}
242+
}
243+
}
244+
`,
245+
{
246+
headers: { authorization: `token ${githubAccessToken}` },
247+
path: `types/${name}`
248+
}
249+
);
250+
let deprecatedMessage;
251+
if (commit) {
252+
const {
253+
associatedPullRequests: {
254+
nodes: [pullRequest]
255+
},
256+
messageHeadline
257+
} = commit;
258+
deprecatedMessage = messageHeadline;
259+
if (pullRequest) {
260+
deprecatedMessage += ` (${pullRequest.url})`;
261+
}
262+
}
263+
if (dry) {
264+
log(`(dry) Skip deprecate removed package ${fullNpmName}`);
265+
} else {
266+
log(`Deprecating ${fullNpmName} with message: ${deprecatedMessage}`);
267+
await client.deprecate(fullNpmName, "", deprecatedMessage);
268+
}
269+
}
270+
}
271+
from += objects.length;
272+
} while (objects.length >= 250 && from <= 5000);
273+
190274
await writeLog("publishing.md", logResult());
191275
console.log("Done!");
192276
}

0 commit comments

Comments
 (0)