From d135aa8dca374856ebea4f096dba35b23cefe76b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 26 Apr 2020 17:45:27 -0400 Subject: [PATCH] Added basic @typescript-eslint/triple-slash-reference merger --- src/rules/mergers.ts | 2 ++ .../tests/triple-slash-reference.test.ts | 27 +++++++++++++++++++ src/rules/mergers/triple-slash-reference.ts | 5 ++++ 3 files changed, 34 insertions(+) create mode 100644 src/rules/mergers/tests/triple-slash-reference.test.ts create mode 100644 src/rules/mergers/triple-slash-reference.ts diff --git a/src/rules/mergers.ts b/src/rules/mergers.ts index a1bd04620..a08bfed5c 100644 --- a/src/rules/mergers.ts +++ b/src/rules/mergers.ts @@ -5,6 +5,7 @@ import { mergeNoCaller } from "./mergers/no-caller"; import { mergeNoEval } from "./mergers/no-eval"; import { mergeNoMemberDelimiterStyle } from "./mergers/member-delimiter-style"; import { mergeNoUnnecessaryTypeAssertion } from "./mergers/no-unnecessary-type-assertion"; +import { mergeTripleSlashReference } from "./mergers/triple-slash-reference"; export const mergers = new Map([ ["@typescript-eslint/ban-types", mergeBanTypes], @@ -12,6 +13,7 @@ export const mergers = new Map([ ["@typescript-eslint/indent", mergeIndent], ["@typescript-eslint/member-delimiter-style", mergeNoMemberDelimiterStyle], ["@typescript-eslint/no-unnecessary-type-assertion", mergeNoUnnecessaryTypeAssertion], + ["@typescript-eslint/triple-slash-reference", mergeTripleSlashReference], ["no-caller", mergeNoCaller], ["no-eval", mergeNoEval], ]); diff --git a/src/rules/mergers/tests/triple-slash-reference.test.ts b/src/rules/mergers/tests/triple-slash-reference.test.ts new file mode 100644 index 000000000..07a58a354 --- /dev/null +++ b/src/rules/mergers/tests/triple-slash-reference.test.ts @@ -0,0 +1,27 @@ +import { mergeTripleSlashReference } from "../triple-slash-reference"; + +const option = { + path: "always", + types: "prefer-import", + lib: "always", +}; + +describe(mergeTripleSlashReference, () => { + test("neither options existing", () => { + const result = mergeTripleSlashReference(undefined, undefined); + + expect(result).toEqual([]); + }); + + test("only existing options", () => { + const result = mergeTripleSlashReference([option], undefined); + + expect(result).toEqual([option]); + }); + + test("only new options", () => { + const result = mergeTripleSlashReference(undefined, [option]); + + expect(result).toEqual([option]); + }); +}); diff --git a/src/rules/mergers/triple-slash-reference.ts b/src/rules/mergers/triple-slash-reference.ts new file mode 100644 index 000000000..d89202e19 --- /dev/null +++ b/src/rules/mergers/triple-slash-reference.ts @@ -0,0 +1,5 @@ +import { RuleMerger } from "../merger"; + +export const mergeTripleSlashReference: RuleMerger = (existingOptions, newOptions) => { + return [existingOptions?.[0] ?? newOptions?.[0]].filter(Boolean); +};