From 2527c3a64e4555840e27dc9fbff7b4ce97f2285e Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 20 Jan 2022 13:32:47 +0100 Subject: [PATCH] [eslint] Support async formatters --- 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