diff --git a/src/converters/lintConfigs/rules/ruleConverters.ts b/src/converters/lintConfigs/rules/ruleConverters.ts index 1cd2e9aa1..3530d3a25 100644 --- a/src/converters/lintConfigs/rules/ruleConverters.ts +++ b/src/converters/lintConfigs/rules/ruleConverters.ts @@ -198,6 +198,7 @@ import { convertNoSubjectUnubscribe } from "./ruleConverters/eslint-plugin-rxjs/ import { convertNoSubjectValue } from "./ruleConverters/eslint-plugin-rxjs/no-subject-value"; import { convertNoUnboundMethods } from "./ruleConverters/eslint-plugin-rxjs/no-unbound-methods"; import { convertNoUnsafeSubjectNext } from "./ruleConverters/eslint-plugin-rxjs/no-unsafe-subject-next"; +import { convertNoUnsafeTakeUntil } from "./ruleConverters/eslint-plugin-rxjs/no-unsafe-takeuntil"; /** * Keys TSLint rule names to their ESLint rule converters. @@ -398,6 +399,7 @@ export const ruleConverters = new Map([ ["rxjs-no-subject-value", convertNoSubjectValue], ["rxjs-no-unbound-methods", convertNoUnboundMethods], ["rxjs-no-unsafe-subject-next", convertNoUnsafeSubjectNext], + ["rxjs-no-unsafe-takeuntil", convertNoUnsafeTakeUntil], // These converters are all for rules that need more complex option conversions. // Some of them will likely need to have notices about changed lint behaviors... diff --git a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-async-subscribe.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-async-subscribe.ts index 8252efe57..e0f399dd0 100644 --- a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-async-subscribe.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-async-subscribe.ts @@ -4,7 +4,7 @@ export const convertNoAsyncSubscribe: RuleConverter = () => { return { rules: [ { - ruleName: "no-async-subscribe", + ruleName: "rxjs/no-async-subscribe", }, ], plugins: ["eslint-plugin-rxjs"], diff --git a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-unsafe-takeuntil.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-unsafe-takeuntil.ts new file mode 100644 index 000000000..889bf5185 --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/no-unsafe-takeuntil.ts @@ -0,0 +1,15 @@ +import { RuleConverter } from "../../ruleConverter"; + +export const convertNoUnsafeTakeUntil: RuleConverter = (tslintRule) => { + return { + rules: [ + { + ...(tslintRule.ruleArguments.length !== 0 && { + ruleArguments: tslintRule.ruleArguments, + }), + ruleName: "rxjs/no-unsafe-takeuntil", + }, + ], + plugins: ["eslint-plugin-rxjs"], + }; +}; diff --git a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-async-subscribe.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-async-subscribe.test.ts index 40cdeedf1..37717744a 100644 --- a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-async-subscribe.test.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-async-subscribe.test.ts @@ -9,7 +9,7 @@ describe(convertNoAsyncSubscribe, () => { expect(result).toEqual({ rules: [ { - ruleName: "no-async-subscribe", + ruleName: "rxjs/no-async-subscribe", }, ], plugins: ["eslint-plugin-rxjs"], diff --git a/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-unsafe-takeuntil.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-unsafe-takeuntil.test.ts new file mode 100644 index 000000000..2c27df5a6 --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-rxjs/tests/no-unsafe-takeuntil.test.ts @@ -0,0 +1,50 @@ +import { convertNoUnsafeTakeUntil } from "../no-unsafe-takeuntil"; + +describe(convertNoUnsafeTakeUntil, () => { + test("conversion without arguments", () => { + const result = convertNoUnsafeTakeUntil({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "rxjs/no-unsafe-takeuntil", + }, + ], + plugins: ["eslint-plugin-rxjs"], + }); + }); + + test("conversion with alias argument", () => { + const result = convertNoUnsafeTakeUntil({ + ruleArguments: [{ alias: ["untilDestroyed"] }], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "rxjs/no-unsafe-takeuntil", + ruleArguments: [{ alias: ["untilDestroyed"] }], + }, + ], + plugins: ["eslint-plugin-rxjs"], + }); + }); + + test("conversion with allow argument", () => { + const result = convertNoUnsafeTakeUntil({ + ruleArguments: [{ allow: ["shareReplay", "share"] }], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "rxjs/no-unsafe-takeuntil", + ruleArguments: [{ allow: ["shareReplay", "share"] }], + }, + ], + plugins: ["eslint-plugin-rxjs"], + }); + }); +});