diff --git a/src/rules/converters.ts b/src/rules/converters.ts index f609001ae..5e59f8101 100644 --- a/src/rules/converters.ts +++ b/src/rules/converters.ts @@ -73,6 +73,7 @@ import { convertNoReturnAwait } from "./converters/no-return-await"; import { convertNoSparseArrays } from "./converters/no-sparse-arrays"; import { convertNoStringLiteral } from "./converters/no-string-literal"; import { convertNoStringThrow } from "./converters/no-string-throw"; +import { convertNoSubmoduleImports } from "./converters/no-submodule-imports"; import { convertNoSwitchCaseFallThrough } from "./converters/no-switch-case-fall-through"; import { convertNoThisAssignment } from "./converters/no-this-assignment"; import { convertNoTrailingWhitespace } from "./converters/no-trailing-whitespace"; @@ -194,6 +195,7 @@ export const converters = new Map([ ["no-sparse-arrays", convertNoSparseArrays], ["no-string-literal", convertNoStringLiteral], ["no-string-throw", convertNoStringThrow], + ["no-submodule-imports", convertNoSubmoduleImports], ["no-switch-case-fall-through", convertNoSwitchCaseFallThrough], ["no-this-assignment", convertNoThisAssignment], ["no-trailing-whitespace", convertNoTrailingWhitespace], diff --git a/src/rules/converters/no-submodule-imports.ts b/src/rules/converters/no-submodule-imports.ts new file mode 100644 index 000000000..31ffc9f01 --- /dev/null +++ b/src/rules/converters/no-submodule-imports.ts @@ -0,0 +1,35 @@ +import { RuleConverter } from "../converter"; + +export const convertNoSubmoduleImports: RuleConverter = tslintRule => { + const ruleArguments: string[] = []; + + if ( + !( + tslintRule.ruleArguments.length === 0 || + tslintRule.ruleArguments[0] === false || + tslintRule.ruleArguments.length < 2 + ) + ) { + ruleArguments.push( + ...tslintRule.ruleArguments.map(ruleArg => { + if (typeof ruleArg === "string") { + return ruleArg.concat("/*"); + } + return ruleArg; + }), + ); + } + + return { + rules: [ + { + ruleName: "import/no-internal-modules", + ...{ + ruleArguments: + ruleArguments.length > 0 ? [{ allow: ruleArguments }] : undefined, + }, + }, + ], + plugins: ["eslint-plugin-import"], + }; +}; diff --git a/src/rules/converters/tests/no-submodule-imports.test.ts b/src/rules/converters/tests/no-submodule-imports.test.ts new file mode 100644 index 000000000..dcb26c4f7 --- /dev/null +++ b/src/rules/converters/tests/no-submodule-imports.test.ts @@ -0,0 +1,34 @@ +import { convertNoSubmoduleImports } from "../no-submodule-imports"; + +describe(convertNoSubmoduleImports, () => { + test("conversion without arguments", () => { + const result = convertNoSubmoduleImports({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "import/no-internal-modules", + }, + ], + plugins: ["eslint-plugin-import"], + }); + }); + + test("conversion with arguments", () => { + const result = convertNoSubmoduleImports({ + ruleArguments: [true, "rxjs"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "import/no-internal-modules", + ruleArguments: [{ allow: [true, "rxjs/*"] }], + }, + ], + plugins: ["eslint-plugin-import"], + }); + }); +});