From ff28e2b264873858ae869031aafcf95afa39d93d Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Sat, 22 Jan 2022 19:44:49 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#58333=20[eslint]?= =?UTF-8?q?=20Support=20async=20formatters=20by=20@fasttime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/eslint/eslint-tests.ts | 14 ++++++++++---- types/eslint/index.d.ts | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/types/eslint/eslint-tests.ts b/types/eslint/eslint-tests.ts index 8b366f869fe8da..9978a63bfaaf83 100644 --- a/types/eslint/eslint-tests.ts +++ b/types/eslint/eslint-tests.ts @@ -682,6 +682,9 @@ let formatterPromise: Promise; formatterPromise = eslint.loadFormatter("codeframe"); formatterPromise = eslint.loadFormatter(); +const customFormatter1: ESLint.Formatter = { format: () => "ok" }; +const customFormatter2: ESLint.Formatter = { format: () => Promise.resolve("ok") }; + let data: ESLint.LintResultData; const meta: Rule.RuleMetaData = { type: "suggestion", @@ -702,9 +705,12 @@ data = { cwd: "/foo/bar", rulesMeta: { "no-extra-semi": meta } }; const version: string = ESLint.version; -resultsPromise.then(results => { - formatterPromise.then(formatter => formatter.format(results)); - formatterPromise.then(formatter => formatter.format(results, data)); +(async () => { + const results = await resultsPromise; + const formatter = await formatterPromise; + + const output1: string = await formatter.format(results); + const output2: string = await formatter.format(results, data); eslint.getRulesMetaForResults(results); @@ -732,7 +738,7 @@ resultsPromise.then(results => { message.ruleId = "foo"; } } -}); +})(); //#endregion diff --git a/types/eslint/index.d.ts b/types/eslint/index.d.ts index 9de6e20f07d1ff..b8cc83fe737266 100644 --- a/types/eslint/index.d.ts +++ b/types/eslint/index.d.ts @@ -884,7 +884,7 @@ export namespace ESLint { } interface Formatter { - format(results: LintResult[], data?: LintResultData): string; + format(results: LintResult[], data?: LintResultData): string | Promise; } // Docs reference the type by this name