From f16ca7dd364e57ee7ce337f987b20dbc1e34941f Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 23 Sep 2022 09:54:36 -0700 Subject: [PATCH] Remove 'async' dependency, used only in errorCheck.ts, modernize file (#50667) --- package-lock.json | 26 ---------- package.json | 2 - scripts/errorCheck.ts | 112 +++++++++++++++++++++--------------------- 3 files changed, 57 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dc9b5af16859..87f1c395f7452 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,6 @@ }, "devDependencies": { "@octokit/rest": "latest", - "@types/async": "latest", "@types/chai": "latest", "@types/fs-extra": "^9.0.13", "@types/glob": "latest", @@ -36,7 +35,6 @@ "@typescript-eslint/eslint-plugin": "^5.33.1", "@typescript-eslint/parser": "^5.33.1", "@typescript-eslint/utils": "^5.33.1", - "async": "latest", "azure-devops-node-api": "^11.2.0", "chai": "latest", "chalk": "^4.1.2", @@ -411,12 +409,6 @@ "@octokit/openapi-types": "^13.11.0" } }, - "node_modules/@types/async": { - "version": "3.2.15", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.15.tgz", - "integrity": "sha512-PAmPfzvFA31mRoqZyTVsgJMsvbynR429UTTxhmfsUCrWGh3/fxOrzqBtaTPJsn4UtzTv4Vb0+/O7CARWb69N4g==", - "dev": true - }, "node_modules/@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -1209,12 +1201,6 @@ "node": ">=0.10.0" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, "node_modules/async-done": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", @@ -8808,12 +8794,6 @@ "@octokit/openapi-types": "^13.11.0" } }, - "@types/async": { - "version": "3.2.15", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.15.tgz", - "integrity": "sha512-PAmPfzvFA31mRoqZyTVsgJMsvbynR429UTTxhmfsUCrWGh3/fxOrzqBtaTPJsn4UtzTv4Vb0+/O7CARWb69N4g==", - "dev": true - }, "@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -9415,12 +9395,6 @@ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, "async-done": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", diff --git a/package.json b/package.json index 0d80542b7fab5..47d6540cd1d26 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ ], "devDependencies": { "@octokit/rest": "latest", - "@types/async": "latest", "@types/chai": "latest", "@types/fs-extra": "^9.0.13", "@types/glob": "latest", @@ -62,7 +61,6 @@ "@typescript-eslint/eslint-plugin": "^5.33.1", "@typescript-eslint/parser": "^5.33.1", "@typescript-eslint/utils": "^5.33.1", - "async": "latest", "azure-devops-node-api": "^11.2.0", "chai": "latest", "chalk": "^4.1.2", diff --git a/scripts/errorCheck.ts b/scripts/errorCheck.ts index 711d5474aac00..9e285516d73ab 100644 --- a/scripts/errorCheck.ts +++ b/scripts/errorCheck.ts @@ -1,12 +1,12 @@ import * as fs from "fs"; -import * as async from "async"; -import * as glob from "glob"; +import * as fsPromises from "fs/promises"; +import * as _glob from "glob"; +import * as util from "util"; -fs.readFile("src/compiler/diagnosticMessages.json", "utf-8", (err, data) => { - if (err) { - throw err; - } +const glob = util.promisify(_glob); +async function checkErrorBaselines() { + const data = await fsPromises.readFile("src/compiler/diagnosticMessages.json", "utf-8"); const messages = JSON.parse(data); const keys = Object.keys(messages); console.log("Loaded " + keys.length + " errors"); @@ -18,39 +18,35 @@ fs.readFile("src/compiler/diagnosticMessages.json", "utf-8", (err, data) => { const errRegex = /\(\d+,\d+\): error TS([^:]+):/g; const baseDir = "tests/baselines/reference/"; - fs.readdir(baseDir, (err, files) => { - files = files.filter(f => f.indexOf(".errors.txt") > 0); - const tasks: ((callback: () => void) => void)[] = []; - files.forEach(f => tasks.push(done => { - fs.readFile(baseDir + f, "utf-8", (err, baseline) => { - if (err) throw err; - - let g: RegExpExecArray | null; - while (g = errRegex.exec(baseline)) { - const errCode = +g[1]; - const msg = keys.filter(k => messages[k].code === errCode)[0]; - messages[msg].seen = true; - } - - done(); - }); - })); - - async.parallelLimit(tasks, 25, done => { - console.log("== List of errors not present in baselines =="); - let count = 0; - for (const k of keys) { - if (messages[k].seen !== true) { - console.log(k); - count++; - } + const files = (await fsPromises.readdir(baseDir)).filter(f => f.endsWith(".errors.txt")); + + files.forEach(f => { + fs.readFile(baseDir + f, "utf-8", (err, baseline) => { + if (err) throw err; + + let g: RegExpExecArray | null; + while (g = errRegex.exec(baseline)) { + const errCode = +g[1]; + const msg = keys.filter(k => messages[k].code === errCode)[0]; + messages[msg].seen = true; } - console.log(count + " of " + keys.length + " errors are not in baselines"); }); }); -}); -fs.readFile("src/compiler/diagnosticInformationMap.generated.ts", "utf-8", (err, data) => { + console.log("== List of errors not present in baselines =="); + let count = 0; + for (const k of keys) { + if (messages[k].seen !== true) { + console.log(k); + count++; + } + } + console.log(count + " of " + keys.length + " errors are not in baselines"); +} + +async function checkSourceFiles() { + const data = await fsPromises.readFile("src/compiler/diagnosticInformationMap.generated.ts", "utf-8"); + const errorRegexp = /\s(\w+): \{ code/g; const errorNames: string[] = []; let errMatch: RegExpExecArray | null; @@ -59,27 +55,33 @@ fs.readFile("src/compiler/diagnosticInformationMap.generated.ts", "utf-8", (err, } let allSrc = ""; - glob("./src/**/*.ts", {}, (err, files) => { - console.log("Reading " + files.length + " source files"); - for (const file of files) { - if (file.indexOf("diagnosticInformationMap.generated.ts") > 0) { - continue; - } - - const src = fs.readFileSync(file, "utf-8"); - allSrc = allSrc + src; + const files = await glob("./src/**/*.ts"); + console.log("Reading " + files.length + " source files"); + for (const file of files) { + if (file.indexOf("diagnosticInformationMap.generated.ts") > 0) { + continue; } - console.log("Consumed " + allSrc.length + " characters of source"); + const src = fs.readFileSync(file, "utf-8"); + allSrc = allSrc + src; + } + + console.log("Consumed " + allSrc.length + " characters of source"); - let count = 0; - console.log("== List of errors not used in source =="); - for (const errName of errorNames) { - if (allSrc.indexOf(errName) < 0) { - console.log(errName); - count++; - } + let count = 0; + console.log("== List of errors not used in source =="); + for (const errName of errorNames) { + if (allSrc.indexOf(errName) < 0) { + console.log(errName); + count++; } - console.log(count + " of " + errorNames.length + " errors are not used in source"); - }); -}); + } + console.log(count + " of " + errorNames.length + " errors are not used in source"); +} + +async function main() { + await checkErrorBaselines(); + await checkSourceFiles(); +} + +main();