From 07129202176462059bc23400286c0a32e403ae4c Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Sun, 13 Oct 2019 19:42:02 -0400 Subject: [PATCH 1/4] add no-import-side-effect converter --- src/rules/converters/no-import-side-effect.ts | 21 +++++++++++ .../tests/no-import-side-effect.test.ts | 35 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/rules/converters/no-import-side-effect.ts create mode 100644 src/rules/converters/tests/no-import-side-effect.test.ts diff --git a/src/rules/converters/no-import-side-effect.ts b/src/rules/converters/no-import-side-effect.ts new file mode 100644 index 000000000..3fce37703 --- /dev/null +++ b/src/rules/converters/no-import-side-effect.ts @@ -0,0 +1,21 @@ +import { RuleConverter } from "../converter"; + +export const convertNoImportSideEffect: RuleConverter = tsLintRule => { + const rules = []; + const notices = []; + + if (tsLintRule.ruleArguments.length > 0) { + rules.push({ allow: tsLintRule.ruleArguments[1]["ignore-module"] }); + notices.push("This now accepts a glob pattern, so your regex may need converted"); + } + + return { + rules: [ + { + ruleArguments: rules, + ruleName: "no-import-side-effect", + notices: notices, + }, + ], + }; +}; diff --git a/src/rules/converters/tests/no-import-side-effect.test.ts b/src/rules/converters/tests/no-import-side-effect.test.ts new file mode 100644 index 000000000..d34d7a3c5 --- /dev/null +++ b/src/rules/converters/tests/no-import-side-effect.test.ts @@ -0,0 +1,35 @@ +import { convertNoImportSideEffect } from "../no-import-side-effect"; + +describe(convertNoImportSideEffect, () => { + test("conversion without arguments", () => { + const result = convertNoImportSideEffect({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [], + ruleName: "no-import-side-effect", + notices: [], + }, + ], + }); + }); + + test("conversion with arguments", () => { + const result = convertNoImportSideEffect({ + ruleArguments: [true, { "ignore-module": "(\\.html|\\.css)$" }], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [{ allow: "(\\.html|\\.css)$" }], + ruleName: "no-import-side-effect", + notices: ["This now accepts a glob pattern, so your regex may need converted"], + }, + ], + }); + }); +}); From a963dcd259e40811994c49ad1e22a3d85bedd345 Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Mon, 14 Oct 2019 21:25:04 -0400 Subject: [PATCH 2/4] add no import side effect to converters --- src/rules/converters.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rules/converters.ts b/src/rules/converters.ts index d21e68bea..4a49453ef 100644 --- a/src/rules/converters.ts +++ b/src/rules/converters.ts @@ -54,6 +54,7 @@ import { convertNoFloatingPromises } from "./converters/no-floating-promises"; import { convertNoForIn } from "./converters/no-for-in"; import { convertNoForInArray } from "./converters/no-for-in-array"; import { convertNoImplicitDependencies } from "./converters/no-implicit-dependencies"; +import { convertNoImportSideEffect } from "./converters/no-import-side-effect"; import { convertNoInferrableTypes } from "./converters/no-inferrable-types"; import { convertNoInternalModule } from "./converters/no-internal-module"; import { convertNoInvalidRegexp } from "./converters/no-invalid-regexp"; @@ -184,6 +185,7 @@ export const converters = new Map([ ["no-for-in-array", convertNoForInArray], ["no-implicit-dependencies", convertNoImplicitDependencies], ["no-for-in", convertNoForIn], + ["no-import-side-effect", convertNoImportSideEffect], ["no-inferrable-types", convertNoInferrableTypes], ["no-internal-module", convertNoInternalModule], ["no-invalid-regexp", convertNoInvalidRegexp], From 308a14dd665263acd9136fd60db1e6563a985cbf Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Sun, 20 Oct 2019 19:33:23 -0400 Subject: [PATCH 3/4] update no import side effect notice --- src/rules/converters/no-import-side-effect.ts | 4 +++- src/rules/converters/tests/no-import-side-effect.test.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rules/converters/no-import-side-effect.ts b/src/rules/converters/no-import-side-effect.ts index 3fce37703..ca06c58cb 100644 --- a/src/rules/converters/no-import-side-effect.ts +++ b/src/rules/converters/no-import-side-effect.ts @@ -6,7 +6,9 @@ export const convertNoImportSideEffect: RuleConverter = tsLintRule => { if (tsLintRule.ruleArguments.length > 0) { rules.push({ allow: tsLintRule.ruleArguments[1]["ignore-module"] }); - notices.push("This now accepts a glob pattern, so your regex may need converted"); + notices.push( + "ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.", + ); } return { diff --git a/src/rules/converters/tests/no-import-side-effect.test.ts b/src/rules/converters/tests/no-import-side-effect.test.ts index d34d7a3c5..e5b2ad42e 100644 --- a/src/rules/converters/tests/no-import-side-effect.test.ts +++ b/src/rules/converters/tests/no-import-side-effect.test.ts @@ -27,7 +27,9 @@ describe(convertNoImportSideEffect, () => { { ruleArguments: [{ allow: "(\\.html|\\.css)$" }], ruleName: "no-import-side-effect", - notices: ["This now accepts a glob pattern, so your regex may need converted"], + notices: [ + "ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.", + ], }, ], }); From 5709e83f45b7621188c7e9c39cddb6af0ff30565 Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Mon, 21 Oct 2019 06:36:04 -0400 Subject: [PATCH 4/4] only show notice for manually converting rule --- src/rules/converters/no-import-side-effect.ts | 4 +--- src/rules/converters/tests/no-import-side-effect.test.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/rules/converters/no-import-side-effect.ts b/src/rules/converters/no-import-side-effect.ts index ca06c58cb..4fdd8a4e7 100644 --- a/src/rules/converters/no-import-side-effect.ts +++ b/src/rules/converters/no-import-side-effect.ts @@ -1,11 +1,9 @@ import { RuleConverter } from "../converter"; export const convertNoImportSideEffect: RuleConverter = tsLintRule => { - const rules = []; const notices = []; if (tsLintRule.ruleArguments.length > 0) { - rules.push({ allow: tsLintRule.ruleArguments[1]["ignore-module"] }); notices.push( "ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.", ); @@ -14,7 +12,7 @@ export const convertNoImportSideEffect: RuleConverter = tsLintRule => { return { rules: [ { - ruleArguments: rules, + ruleArguments: [], ruleName: "no-import-side-effect", notices: notices, }, diff --git a/src/rules/converters/tests/no-import-side-effect.test.ts b/src/rules/converters/tests/no-import-side-effect.test.ts index e5b2ad42e..b45f6a851 100644 --- a/src/rules/converters/tests/no-import-side-effect.test.ts +++ b/src/rules/converters/tests/no-import-side-effect.test.ts @@ -25,7 +25,7 @@ describe(convertNoImportSideEffect, () => { expect(result).toEqual({ rules: [ { - ruleArguments: [{ allow: "(\\.html|\\.css)$" }], + ruleArguments: [], ruleName: "no-import-side-effect", notices: [ "ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.",