diff --git a/docs/Architecture.md b/docs/Architecture.md deleted file mode 100644 index 805024557..000000000 --- a/docs/Architecture.md +++ /dev/null @@ -1,68 +0,0 @@ -# Architecture - -## CLI Architecture - -1. CLI usage starts in `bin/tslint-to-eslint-config`, which immediately calls `src/cli/main.ts`. -2. CLI settings are parsed and read in `src/cli/runCli.ts`. -3. Linter configuration conversion is run by `src/conversion/convertLintConfig.ts`. -4. Editor configuration conversion is run by `src/conversion/convertEditorConfig.ts`. - -## Linter Configuration Conversion - -Within `src/conversion/convertLintConfig.ts`, the following steps occur: - -1. Existing configurations are read from disk -2. TSLint rules are converted into their ESLint configurations -3. ESLint configurations are summarized based on extended ESLint and TSLint presets - - 3a. If no output rules conflict with `eslint-config-prettier`, it's added in - - 3b. Any ESLint rules that are configured the same as an extended preset are trimmed -4. The summarized configuration is written to the output config file -5. Files to transform comments in have source text rewritten using the cached rule conversion results -6. A summary of the results is printed to the user's console - -### Conversion Results - -The overall configuration generated by steps 2-3 and printed in 4-5 contains the following information: - -### Rule Converters - -Each TSLint rule should output at least one ESLint rule as the equivalent. -"Converters" for TSLint rules are located in `src/rules/converters/`, and keyed under their names by the map in `src/rules/converters.ts`. - -Each converter for a TSLint rule takes an arguments object for the rule, and returns an array of objects containing: - -- `rules`: At least one equivalent ESLint rule and options -- `notices`: Any extra info that should be printed after conversion -- `plugins`: Any plugins that should now be installed if not already - -The `rules` output is an array of objects containing: - -- `ruleName`: Equivalent ESLint rule name that should be enabled -- `ruleArguments`: Any arguments for that ESLint rule - -Multiple objects must be supported because some general-use TSLint rules can only be represented by two or more ESLint rules. -For example, TSLint's `no-banned-terms` is represented by ESLint's `no-caller` and `no-eval`. - -### Rule Mergers - -It's possible that one ESLint rule will be output by multiple converters. -"Mergers" for those ESLint rules should take in two configurations to the same rule and output the equivalent single configuration. -These are located in `src/rules/mergers/`, and keyed under their names by the map in `src/rules/mergers.ts`. - -For example, `@typescript-eslint/ban-types` spreads both arguments' `types` members into one large `types` object. - -## Comment Conversion - -Comments are converted after rule conversion by `src/comments/convertComments.ts`. -Source files are parsed into TypeScript files by `src/comments/parseFileComments.ts`, which then extracts their comment nodes. -Those comments are parsed for TSLint rule disable or enable comments. - -Comments that match will be rewritten in their their file to their new ESLint rule equivalent in `src/comments/replaceFileComments.ts`, as determined by: - -1. First, if the `ruleEquivalents` cache received from configuration convertion has the TSLint rule's ESLint equivalents listed, those are used. -2. Failing that, a comment-specific `ruleCommentsCache` is populated with rules converted ad-hoc with no arguments. - -## Editor Configuration Conversion - -Editor lint configurations are converted by `src/editorSettings/convertEditorSettings.ts`. -Any setting that matches a known built-in TSLint setting will be replaced with the ESLint equivalent. diff --git a/docs/Architecture/Comments.md b/docs/Architecture/Comments.md new file mode 100644 index 000000000..83fd2e285 --- /dev/null +++ b/docs/Architecture/Comments.md @@ -0,0 +1,22 @@ +# Comments + +Comment conversions in `src/converters/comments/convertComments.ts` are the last root-level converter to be run. +The `ruleEquivalents` map it receives is filled out with the rule equivalents from earlier converters, i.e. lint rule converters. + +In general, its flow is: + +1. If no comments are requested to be converted, immediately report it out and mark this as passed. +2. Create the list of include and possibly exclude globs to search on. +3. Search for files matching those globs to have their comments converted. +4. Convert comments in the contents of each file, storing equivalents in a cache. +5. Report out the results of converting the unique globbed file paths. + +## File Manipulations + +Source files are parsed into TypeScript files by `src/comments/parseFileComments.ts`, which then extracts their comment nodes. +Those comments are parsed for TSLint rule disable or enable comments. + +Comments that match will be rewritten in their their file to their new ESLint rule equivalent in `src/comments/replaceFileComments.ts`, as determined by: + +1. First, if the `ruleEquivalents` cache received from configuration convertion has the TSLint rule's ESLint equivalents listed, those are used. +2. Failing that, a comment-specific `ruleCommentsCache` is populated with rules converted ad-hoc with no arguments. diff --git a/docs/Architecture/Editors.md b/docs/Architecture/Editors.md new file mode 100644 index 000000000..9ba28946d --- /dev/null +++ b/docs/Architecture/Editors.md @@ -0,0 +1,13 @@ +# Editors + +Editor lint configurations are converted by `src/converters/editorConfigs/convertEditorConfig.ts`. +Any setting that matches a known built-in TSLint setting will be replaced with the ESLint equivalent. + +For now, only VS Code editor settings are accounted for. +Eventually this will be refactored to allow other editors such as Atom. + +1. An existing editor configuration is read from disk. +2. If the existing configuration is not found or errored, nothing else needs to be done. +3. Configuration settings are converted to their ESLint equivalents. +4. Those ESLint equivalents are written to the configuration file. +5. Results from converting are reported to the user. diff --git a/docs/Architecture/Linters.md b/docs/Architecture/Linters.md new file mode 100644 index 000000000..1826bd1e7 --- /dev/null +++ b/docs/Architecture/Linters.md @@ -0,0 +1,57 @@ +# Linters + +TSLint-to-ESLint linter configuration conversion is the first root-level converter run. +Within `src/converters/lintConfigs/convertLintConfig.ts`, the following steps occur: + +1. Raw TSLint rules are mapped to their ESLint equivalents. +2. Those ESLint equivalents are deduplicated and relevant preset(s) detected. +3. Those deduplicated rules and metadata are written to the output configuration file. +4. A summary of conversion results is printed, along with any now-missing packages. + +## Rule Conversion + +The parts of linter configurations most users focus on are the rule converters. +Those are run by `src/converters/lintConfigs/rules/convertRules.ts`, which takes the following steps on each original TSLint rule: + +1. The raw TSLint rule is converted to a standardized format. +2. The appropriate converter is run for the rule. +3. If the rule is missing or the conversion failed, this is marked. +4. For each output rule equivalent given by the conversion: + * The output rule name is added to the TSLint rule's equivalency set. + * The TSLint rule's config severity is mapped to its ESLint equivalent. + * If this is the first time the output ESLint rule is seen, it's directly marked as converted. + * If not, a rule merger is run to combine it with its existing output settings. + +### Rule Converters + +Each TSLint rule should output at least one ESLint rule as the equivalent. +"Converters" for TSLint rules are located in `src/rules/converters/`, and keyed under their names by the map in `src/rules/converters.ts`. + +Each converter for a TSLint rule takes an arguments object for the rule, and returns an array of objects containing: + +- `rules`: At least one equivalent ESLint rule and options +- `notices`: Any extra info that should be printed after conversion +- `plugins`: Any plugins that should now be installed if not already + +The `rules` output is an array of objects containing: + +- `ruleName`: Equivalent ESLint rule name that should be enabled +- `ruleArguments`: Any arguments for that ESLint rule + +Multiple objects must be supported because some general-use TSLint rules can only be represented by two or more ESLint rules. +For example, TSLint's `no-banned-terms` is represented by ESLint's `no-caller` and `no-eval`. + +### Rule Mergers + +It's possible that one ESLint rule will be output by multiple converters. +"Mergers" for those ESLint rules should take in two configurations to the same rule and output the equivalent single configuration. +These are located in `src/rules/mergers/`, and keyed under their names by the map in `src/rules/mergers.ts`. + +For example, `@typescript-eslint/ban-types` spreads both arguments' `types` members into one large `types` object. + +## Package Summaries + +ESLint configurations are summarized based on extended ESLint and TSLint presets. + +- If no output rules conflict with `eslint-config-prettier`, it's added in. +- Any ESLint rules that are configured the same as an extended preset are trimmed. diff --git a/docs/Architecture/README.md b/docs/Architecture/README.md new file mode 100644 index 000000000..c01ff2b04 --- /dev/null +++ b/docs/Architecture/README.md @@ -0,0 +1,26 @@ +# Architecture + +tslint-to-eslint-config is a heavily tested CLI app with application flow starting in `bin/tslint-to-eslint-config`: + +1. `src/cli/main.ts`'s `main` is called with `process.argv` as the program arguments. + * This file sets up all function dependencies and bound functions that call to each other. +2. `src/cli/runCli.ts`'s `runCli` is called with those bound dependencies and raw arguments. + +> See [Dependencies.md](./Dependencies.md) for more info on functions and their dependencies are bound together. + +## CLI Runner + +Within `runCli`: + +1. CLI options are parsed from the raw arguments into a commands object. +2. If the version should be printed, we do that and stop execution. +3. Any existing linter and TypeScript configurations are read from disk. +4. Each converter is run, halting execution if it fails. + +### Converters + +Within that flow, there are three "root-level" converters directly called by `runCli`, in order: + +1. **[Linters.md](./Linters.md)**: Converting from an original TSLint configuration to the equivalent TSLint configuration. +2. **[Editors.md](./Editors.md)**: Creating new IDE settings for ESLint equivalent to any existing TSLint settings. +3. **[Comments.md](./Comments.md)**: Converting inline `tslint:disable` lint disable comments to their `eslint-disable` equivalents. diff --git a/docs/Dependencies.md b/docs/Dependencies.md index 8323b1781..ec9431d3e 100644 --- a/docs/Dependencies.md +++ b/docs/Dependencies.md @@ -62,3 +62,8 @@ Suppose your method `myMethod`, should take in a `fileSystem`, a `string`, and a myMethod: SansDependencies; }; ``` + +### Adapters + +Global Node constructs as `console` are never written to directly by functions; instead, "adapter" wrappers are set up in `src/adapters/*.ts` and provided as dependencies to functions. +This enables native calls to be directly tested in tests without stubbing out their global equivalents. \ No newline at end of file diff --git a/docs/Development.md b/docs/Development.md index 78c9523a7..b9819a7dd 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -21,6 +21,6 @@ Compile with `npm run tsc` and run tests with `npm run test`. ## Further Reading -- [Architecture](./Architecture.md): How the general app structure operates +- [Architecture](./Architecture/README.md): How the general app structure operates - [Dependencies](./Dependencies.md): How functions pass and receive static dependencies - [Testing](./Testing.md): Unit tests diff --git a/jest.config.js b/jest.config.js index 1e574609c..0d96a436e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,10 +4,10 @@ module.exports = { "!./src/**/*.d.ts", "!./src/**/*.stubs.ts", "!./src/adapters/*.ts", - "!./src/rules/rulesConverters.ts", - "!./src/editorSettings/editorSettingsConverters.ts", - "!./src/rules/mergers.ts", "!./src/cli/main.ts", + "!./src/converters/editorConfigs/editorSettingsConverters.ts", + "!./src/converters/lintConfigs/rules/ruleConverters.ts", + "!./src/converters/lintConfigs/rules/ruleMergers.ts", ], coverageThreshold: { global: { diff --git a/src/cli/main.ts b/src/cli/main.ts index 168d5fd28..b925dc656 100644 --- a/src/cli/main.ts +++ b/src/cli/main.ts @@ -10,36 +10,70 @@ import { collectCommentFileNames, CollectCommentFileNamesDependencies, } from "../comments/collectCommentFileNames"; -import { convertComments, ConvertCommentsDependencies } from "../comments/convertComments"; +import { + ReportCommentResultsDependencies, + reportCommentResults, +} from "../converters/comments/reporting/reportCommentResults"; +import { + ConvertEditorConfigDependencies, + convertEditorConfig, +} from "../converters/editorConfigs/convertEditorConfig"; +import { + ConvertEditorSettingsDependencies, + convertEditorSettings, +} from "../converters/editorConfigs/convertEditorSettings"; +import { editorSettingsConverters } from "../converters/editorConfigs/editorSettingsConverters"; +import { reportEditorSettingConversionResults } from "../converters/editorConfigs/reporting/reportEditorSettingConversionResults"; +import { + ConvertLintConfigDependencies, + convertLintConfig, +} from "../converters/lintConfigs/convertLintConfig"; +import { + ReportConversionResultsDependencies, + reportConfigConversionResults, +} from "../converters/lintConfigs/reporting/reportConfigConversionResults"; +import { + WriteConversionResultsDependencies, + writeConfigConversionResults, +} from "../converters/lintConfigs/writeConfigConversionResults"; +import { + ConvertCommentsDependencies, + convertComments, +} from "../converters/comments/convertComments"; import { ConvertFileCommentsDependencies, convertFileComments, -} from "../comments/convertFileComments"; -import { convertLintConfig, ConvertLintConfigDependencies } from "../conversion/convertLintConfig"; +} from "../converters/comments/convertFileComments"; import { - convertEditorConfig, - ConvertEditorConfigDependencies, -} from "../conversion/convertEditorConfig"; -import { addPrettierExtensions } from "../creation/summarization/prettier/addPrettierExtensions"; -import { removeExtendsDuplicatedRules } from "../creation/pruning/removeExtendsDuplicatedRules"; + ConvertRulesDependencies, + convertRules, +} from "../converters/lintConfigs/rules/convertRules"; +import { ruleConverters } from "../converters/lintConfigs/rules/ruleConverters"; import { - retrieveExtendsValues, RetrieveExtendsValuesDependencies, -} from "../creation/summarization/retrieveExtendsValues"; + retrieveExtendsValues, +} from "../converters/lintConfigs/summarization/retrieveExtendsValues"; import { - summarizePackageRules, SummarizePackageRulesDependencies, -} from "../creation/summarization/summarizePackageRules"; + summarizePackageRules, +} from "../converters/lintConfigs/summarization/summarizePackageRules"; import { - writeConversionResults, - WriteConversionResultsDependencies, -} from "../creation/writeConversionResults"; -import { writeConversionResults as writeEditorConfigConversionResults } from "../creation/writeEditorConfigConversionResults"; + ChoosePackageManagerDependencies, + choosePackageManager, +} from "../converters/lintConfigs/reporting/packages/choosePackageManager"; import { - convertEditorSettings, - ConvertEditorSettingsDependencies, -} from "../editorSettings/convertEditorSettings"; -import { editorSettingsConverters } from "../editorSettings/editorSettingsConverters"; + LogMissingPackagesDependencies, + logMissingPackages, +} from "../converters/lintConfigs/reporting/packages/logMissingPackages"; +import { runCli, RunCliDependencies } from "./runCli"; +import { ruleMergers } from "../converters/lintConfigs/rules/ruleMergers"; +import { writeEditorConfigConversionResults } from "../converters/lintConfigs/writeEditorConfigConversionResults"; +import { addPrettierExtensions } from "../converters/lintConfigs/summarization/prettier/addPrettierExtensions"; +import { removeExtendsDuplicatedRules } from "../converters/lintConfigs/pruning/removeExtendsDuplicatedRules"; +import { + ExtractGlobPathsDependencies, + extractGlobPaths, +} from "../converters/comments/extractGlobPaths"; import { findEditorConfiguration, FindEditorConfigurationDependencies, @@ -54,31 +88,19 @@ import { findTSLintConfiguration } from "../input/findTSLintConfiguration"; import { findTypeScriptConfiguration } from "../input/findTypeScriptConfiguration"; import { importer, ImporterDependencies } from "../input/importer"; import { mergeLintConfigurations } from "../input/mergeLintConfigurations"; -import { - choosePackageManager, - ChoosePackageManagerDependencies, -} from "../reporting/packages/choosePackageManager"; -import { - reportCommentResults, - ReportCommentResultsDependencies, -} from "../reporting/reportCommentResults"; -import { - logMissingPackages, - LogMissingPackagesDependencies, -} from "../reporting/packages/logMissingPackages"; -import { - reportConversionResults, - ReportConversionResultsDependencies, -} from "../reporting/reportConversionResults"; -import { reportEditorSettingConversionResults } from "../reporting/reportEditorSettingConversionResults"; -import { convertRules, ConvertRulesDependencies } from "../rules/convertRules"; -import { mergers } from "../rules/mergers"; -import { rulesConverters } from "../rules/rulesConverters"; -import { runCli, RunCliDependencies } from "./runCli"; + +const convertFileCommentsDependencies: ConvertFileCommentsDependencies = { + converters: ruleConverters, + fileSystem: fsFileSystem, +}; + +const reportCommentResultsDependencies: ReportCommentResultsDependencies = { + logger: processLogger, +}; const convertRulesDependencies: ConvertRulesDependencies = { - converters: rulesConverters, - mergers, + ruleConverters, + ruleMergers, }; const convertEditorSettingsDependencies: ConvertEditorSettingsDependencies = { @@ -111,23 +133,19 @@ const findOriginalConfigurationsDependencies: FindOriginalConfigurationsDependen mergeLintConfigurations, }; -const convertFileCommentsDependencies: ConvertFileCommentsDependencies = { - converters: rulesConverters, - fileSystem: fsFileSystem, -}; - const collectCommentFileNamesDependencies: CollectCommentFileNamesDependencies = { findTypeScriptConfiguration: bind(findTypeScriptConfiguration, findConfigurationDependencies), }; -const convertCommentsDependencies: ConvertCommentsDependencies = { - convertFileComments: bind(convertFileComments, convertFileCommentsDependencies), - collectCommentFileNames: bind(collectCommentFileNames, collectCommentFileNamesDependencies), +const extractGlobPathsDependencies: ExtractGlobPathsDependencies = { globAsync, }; -const reportCommentResultsDependencies: ReportCommentResultsDependencies = { - logger: processLogger, +const convertCommentsDependencies: ConvertCommentsDependencies = { + collectCommentFileNames: bind(collectCommentFileNames, collectCommentFileNamesDependencies), + convertFileComments: bind(convertFileComments, convertFileCommentsDependencies), + extractGlobPaths: bind(extractGlobPaths, extractGlobPathsDependencies), + reportCommentResults: bind(reportCommentResults, reportCommentResultsDependencies), }; const choosePackageManagerDependencies: ChoosePackageManagerDependencies = { @@ -164,35 +182,40 @@ const reportEditorSettingConversionResultsDependencies = { const convertEditorConfigDependencies: ConvertEditorConfigDependencies = { findEditorConfiguration: bind(findEditorConfiguration, findEditorConfigurationDependencies), convertEditorSettings: bind(convertEditorSettings, convertEditorSettingsDependencies), - reportConversionResults: bind( + reportEditorSettingConversionResults: bind( reportEditorSettingConversionResults, reportEditorSettingConversionResultsDependencies, ), - writeConversionResults: bind( + writeEditorConfigConversionResults: bind( writeEditorConfigConversionResults, writeConversionResultsDependencies, ), }; const convertLintConfigDependencies: ConvertLintConfigDependencies = { - convertComments: bind(convertComments, convertCommentsDependencies), convertRules: bind(convertRules, convertRulesDependencies), - findOriginalConfigurations: bind( - findOriginalConfigurations, - findOriginalConfigurationsDependencies, - ), logMissingPackages: bind(logMissingPackages, logMissingPackagesDependencies), - reportCommentResults: bind(reportCommentResults, reportCommentResultsDependencies), - reportConversionResults: bind(reportConversionResults, reportConversionResultsDependencies), + reportConfigConversionResults: bind( + reportConfigConversionResults, + reportConversionResultsDependencies, + ), summarizePackageRules: bind(summarizePackageRules, summarizePackageRulesDependencies), - writeConversionResults: bind(writeConversionResults, writeConversionResultsDependencies), + writeConfigConversionResults: bind( + writeConfigConversionResults, + writeConversionResultsDependencies, + ), }; const runCliDependencies: RunCliDependencies = { - configConverters: [ + converters: [ bind(convertLintConfig, convertLintConfigDependencies), bind(convertEditorConfig, convertEditorConfigDependencies), + bind(convertComments, convertCommentsDependencies), ], + findOriginalConfigurations: bind( + findOriginalConfigurations, + findOriginalConfigurationsDependencies, + ), logger: processLogger, }; diff --git a/src/cli/runCli.test.ts b/src/cli/runCli.test.ts index 7f076732e..6de1d0014 100644 --- a/src/cli/runCli.test.ts +++ b/src/cli/runCli.test.ts @@ -2,19 +2,20 @@ import { EOL } from "os"; import { version } from "../../package.json"; import { createStubLogger, expectEqualWrites } from "../adapters/logger.stubs"; +import { createStubOriginalConfigurationsData } from "../settings.stubs"; import { ResultStatus, TSLintToESLintResult } from "../types"; import { runCli, RunCliDependencies } from "./runCli"; const createStubArgv = (argv: string[] = []) => ["node", "some/path/bin/file", ...argv]; -const createStubRunCliDependencies = ( - overrides: Partial> = {}, -) => ({ - configConverters: [ - async (): Promise => ({ status: ResultStatus.Succeeded }), - ], - logger: createStubLogger(), +const createStubRunCliDependencies = (overrides: Partial = {}) => ({ + converters: [async (): Promise => ({ status: ResultStatus.Succeeded })], + findOriginalConfigurations: jest.fn().mockResolvedValue({ + data: createStubOriginalConfigurationsData(), + status: ResultStatus.Succeeded, + }), ...overrides, + logger: createStubLogger(), }); describe("runCli", () => { @@ -30,11 +31,31 @@ describe("runCli", () => { expect(dependencies.logger.stdout.write).toHaveBeenLastCalledWith(`${version}${EOL}`); }); - it("logs an error to stderr when convertConfig throws an error", async () => { + it("logs an error when finding original config data fails", async () => { + // Arrange + const message = "Oh no"; + const dependencies = createStubRunCliDependencies({ + findOriginalConfigurations: jest.fn().mockResolvedValue({ + errors: [new Error(message)], + status: ResultStatus.Failed, + }), + }); + + // Act + const status = await runCli(dependencies, createStubArgv()); + + // Assert + expect(dependencies.logger.stderr.write).toHaveBeenLastCalledWith( + expect.stringMatching(message), + ); + expect(status).toBe(ResultStatus.Failed); + }); + + it("logs an error when a converter fails", async () => { // Arrange const message = "Oh no"; const dependencies = createStubRunCliDependencies({ - configConverters: [() => Promise.reject(new Error(message))], + converters: [() => Promise.reject(new Error(message))], }); // Act @@ -51,7 +72,7 @@ describe("runCli", () => { // Arrange const complaint = "too much unit testing coverage"; const dependencies = createStubRunCliDependencies({ - configConverters: [ + converters: [ () => Promise.resolve({ complaints: [complaint], @@ -76,7 +97,7 @@ describe("runCli", () => { // Arrange const error = new Error("too much unit testing coverage"); const dependencies = createStubRunCliDependencies({ - configConverters: [ + converters: [ () => Promise.resolve({ errors: [error], @@ -104,7 +125,7 @@ describe("runCli", () => { new Error("too much branch coverage"), ]; const dependencies = createStubRunCliDependencies({ - configConverters: [ + converters: [ () => Promise.resolve({ errors, @@ -141,7 +162,7 @@ describe("runCli", () => { it("default output should be .eslintrc.js", async () => { let defaultConfig; const dependencies = createStubRunCliDependencies({ - configConverters: [ + converters: [ (parsedArgs) => { defaultConfig = parsedArgs.config; return Promise.resolve({ diff --git a/src/cli/runCli.ts b/src/cli/runCli.ts index f89f7b243..42ab7b763 100644 --- a/src/cli/runCli.ts +++ b/src/cli/runCli.ts @@ -4,18 +4,29 @@ import { EOL } from "os"; import { version } from "../../package.json"; import { Logger } from "../adapters/logger"; -import { ConfigConverter } from "../conversion/configConverter"; +import { SansDependencies } from "../binding"; +import { Converter } from "../converters/types"; +import { + AllOriginalConfigurations, + findOriginalConfigurations, +} from "../input/findOriginalConfigurations"; +import { logErrorResult } from "../reporting"; import { ResultStatus, ResultWithStatus, TSLintToESLintSettings } from "../types"; export type RunCliDependencies = { - configConverters: ConfigConverter[]; + converters: Converter[]; + findOriginalConfigurations: SansDependencies; logger: Logger; }; +/** + * @see `/docs/Architecture/README.md` for documentation. + */ export const runCli = async ( dependencies: RunCliDependencies, rawArgv: string[], ): Promise => { + // 1. CLI options are parsed from the raw arguments into a commands object. const command = new Command() .storeOptionsAsProperties(false) .usage("[options] --language [language]") @@ -32,18 +43,26 @@ export const runCli = async ( const parsedArgv = { config: "./.eslintrc.js", ...command.parse(rawArgv).opts(), - }; + } as TSLintToESLintSettings; - const programOptions = command.opts(); - if (programOptions.version) { + // 2. If the version should be printed, we do that and stop execution. + if (command.opts().version) { dependencies.logger.stdout.write(`${version}${EOL}`); return ResultStatus.Succeeded; } - for (const configConverter of dependencies.configConverters) { - const result = await tryConvertConfig(configConverter, parsedArgv); + // 3. Any existing linter and TypeScript configurations are read from disk. + const originalConfigurations = await dependencies.findOriginalConfigurations(parsedArgv); + if (originalConfigurations.status !== ResultStatus.Succeeded) { + logErrorResult(originalConfigurations, dependencies.logger); + return originalConfigurations.status; + } + + // 4. Each converter is run, halting execution if it fails. + for (const converter of dependencies.converters) { + const result = await tryConvertConfig(converter, parsedArgv, originalConfigurations.data); if (result.status !== ResultStatus.Succeeded) { - logErrorResult(result, dependencies); + logErrorResult(result, dependencies.logger); return result.status; } } @@ -53,13 +72,15 @@ export const runCli = async ( }; const tryConvertConfig = async ( - configConverter: ConfigConverter, - argv: Partial, + converter: Converter, + argv: TSLintToESLintSettings, + originalConfigurations: AllOriginalConfigurations, ): Promise => { + const ruleEquivalents = new Map(); let result: ResultWithStatus; try { - result = await configConverter(argv as TSLintToESLintSettings); + result = await converter(argv, originalConfigurations, ruleEquivalents); } catch (error) { result = { errors: [error as Error], @@ -69,27 +90,3 @@ const tryConvertConfig = async ( return result; }; - -const logErrorResult = (result: ResultWithStatus, dependencies: RunCliDependencies) => { - switch (result.status) { - case ResultStatus.ConfigurationError: - dependencies.logger.stderr.write(chalk.redBright("❌ ")); - dependencies.logger.stderr.write(chalk.red("Could not start tslint-to-eslint:")); - dependencies.logger.stderr.write(chalk.redBright(` ❌${EOL}`)); - for (const complaint of result.complaints) { - dependencies.logger.stderr.write(chalk.yellowBright(` ${complaint}${EOL}`)); - } - break; - - case ResultStatus.Failed: - dependencies.logger.stderr.write(chalk.redBright("❌ ")); - dependencies.logger.stderr.write(chalk.red(`${result.errors.length} error`)); - dependencies.logger.stderr.write(chalk.red(result.errors.length === 1 ? "" : "s")); - dependencies.logger.stderr.write(chalk.red(" running tslint-to-eslint:")); - dependencies.logger.stderr.write(chalk.redBright(` ❌${EOL}`)); - for (const error of result.errors) { - dependencies.logger.stderr.write(chalk.gray(` ${error.stack}${EOL}`)); - } - break; - } -}; diff --git a/src/comments/convertComments.ts b/src/comments/convertComments.ts deleted file mode 100644 index 8d92d2cbc..000000000 --- a/src/comments/convertComments.ts +++ /dev/null @@ -1,99 +0,0 @@ -import minimatch from "minimatch"; - -import { GlobAsync } from "../adapters/globAsync"; -import { SansDependencies } from "../binding"; -import { TypeScriptConfiguration } from "../input/findTypeScriptConfiguration"; -import { ResultStatus, ResultWithDataStatus } from "../types"; -import { separateErrors, uniqueFromSources, isError } from "../utils"; -import { collectCommentFileNames } from "./collectCommentFileNames"; -import { convertFileComments } from "./convertFileComments"; - -export type ConvertCommentsDependencies = { - convertFileComments: SansDependencies; - globAsync: GlobAsync; - collectCommentFileNames: SansDependencies; -}; - -export const convertComments = async ( - dependencies: ConvertCommentsDependencies, - filePathGlobs: true | string | string[] | undefined, - ruleEquivalents: Map, - typescriptConfiguration?: TypeScriptConfiguration, -): Promise> => { - if (filePathGlobs === undefined) { - return { - data: undefined, - status: ResultStatus.Succeeded, - }; - } - - const commentFileNames = await dependencies.collectCommentFileNames( - filePathGlobs, - typescriptConfiguration, - ); - - if (commentFileNames instanceof Error) { - return { - errors: [commentFileNames], - status: ResultStatus.Failed, - }; - } - - const { exclude, include } = commentFileNames; - const [fileGlobErrors, globbedFilePaths] = separateErrors( - await Promise.all(include.map(dependencies.globAsync)), - ); - - if (fileGlobErrors.length !== 0) { - return { - errors: fileGlobErrors, - status: ResultStatus.Failed, - }; - } - - if (globbedFilePaths.join("") === "") { - return { - errors: [ - new Error( - "--comments found no files. Consider passing no globs to it, to default to all TypeScript files.", - ), - ], - status: ResultStatus.Failed, - }; - } - - const uniqueGlobbedFilePaths = uniqueFromSources(...globbedFilePaths).filter( - (filePathGlob) => !exclude?.some((exclusion) => minimatch(filePathGlob, exclusion)), - ); - - if (uniqueGlobbedFilePaths.join("") === "") { - return { - errors: [ - new Error( - `All files passed to --comments were excluded. Consider removing 'exclude' from your TypeScript configuration.`, - ), - ], - status: ResultStatus.Failed, - }; - } - - const ruleCommentsCache = new Map(); - const fileFailures = ( - await Promise.all( - uniqueGlobbedFilePaths.map(async (filePath) => - dependencies.convertFileComments(filePath, ruleCommentsCache, ruleEquivalents), - ), - ) - ).filter(isError); - if (fileFailures.length !== 0) { - return { - errors: fileFailures, - status: ResultStatus.Failed, - }; - } - - return { - data: uniqueGlobbedFilePaths, - status: ResultStatus.Succeeded, - }; -}; diff --git a/src/conversion/configConverter.ts b/src/conversion/configConverter.ts deleted file mode 100644 index a8120515e..000000000 --- a/src/conversion/configConverter.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ResultWithStatus, TSLintToESLintSettings } from "../types"; - -/** - * Standalone (sans dependencies) type for a converter to run in the CLI. - */ -export type ConfigConverter = (settings: TSLintToESLintSettings) => Promise; diff --git a/src/conversion/conversionResults.stubs.ts b/src/conversion/conversionResults.stubs.ts deleted file mode 100644 index 69ea69bcb..000000000 --- a/src/conversion/conversionResults.stubs.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { SummarizedResultsConfiguration } from "../creation/summarization/types"; -import { EditorSettingConversionResults } from "../editorSettings/convertEditorSettings"; - -export const createEmptyConversionResults = ( - overrides: Partial = {}, -): SummarizedResultsConfiguration => ({ - converted: new Map(), - extends: [], - extensionRules: new Map(), - failed: [], - missing: [], - plugins: new Set(), - ruleEquivalents: new Map(), - ...overrides, -}); - -export const createEmptySettingConversionResults = ( - overrides: Partial = {}, -): EditorSettingConversionResults => ({ - converted: new Map(), - failed: [], - missing: [], - ...overrides, -}); diff --git a/src/conversion/convertEditorConfig.ts b/src/conversion/convertEditorConfig.ts deleted file mode 100644 index c1e8ec170..000000000 --- a/src/conversion/convertEditorConfig.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { SansDependencies } from "../binding"; -import { writeConversionResults } from "../creation/writeEditorConfigConversionResults"; -import { convertEditorSettings } from "../editorSettings/convertEditorSettings"; -import { findEditorConfiguration } from "../input/findEditorConfiguration"; -import { reportEditorSettingConversionResults } from "../reporting/reportEditorSettingConversionResults"; -import { ResultStatus, ResultWithStatus, TSLintToESLintSettings } from "../types"; - -export type ConvertEditorConfigDependencies = { - convertEditorSettings: SansDependencies; - findEditorConfiguration: SansDependencies; - reportConversionResults: SansDependencies; - writeConversionResults: SansDependencies; -}; - -/** - * Root-level driver to convert an editor configuration. - */ -export const convertEditorConfig = async ( - dependencies: ConvertEditorConfigDependencies, - settings: TSLintToESLintSettings, -): Promise => { - const conversion = await dependencies.findEditorConfiguration(settings.editor); - if (conversion === undefined) { - return { - status: ResultStatus.Succeeded, - }; - } - - if (conversion.result instanceof Error) { - return { - errors: [conversion.result], - status: ResultStatus.Failed, - }; - } - - const settingConversionResults = dependencies.convertEditorSettings( - conversion.result, - settings, - ); - - const fileWriteError = await dependencies.writeConversionResults( - conversion.configPath, - settingConversionResults, - conversion.result, - ); - if (fileWriteError !== undefined) { - return { - errors: [fileWriteError], - status: ResultStatus.Failed, - }; - } - - dependencies.reportConversionResults(settingConversionResults); - - return { - status: ResultStatus.Succeeded, - }; -}; diff --git a/src/conversion/convertLintConfig.test.ts b/src/conversion/convertLintConfig.test.ts deleted file mode 100644 index 419fe95ce..000000000 --- a/src/conversion/convertLintConfig.test.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { ResultStatus, FailedResult } from "../types"; -import { createEmptyConversionResults } from "./conversionResults.stubs"; -import { convertLintConfig, ConvertLintConfigDependencies } from "./convertLintConfig"; - -const stubSettings = { - config: "./eslintrc.js", -}; - -const createStubDependencies = ( - overrides: Partial = {}, -): ConvertLintConfigDependencies => { - const ruleConversionResults = createEmptyConversionResults(); - - return { - convertComments: jest.fn(), - convertRules: jest.fn().mockReturnValue(ruleConversionResults), - findOriginalConfigurations: jest.fn().mockResolvedValue({ - data: createStubOriginalConfigurationsData(), - status: ResultStatus.Succeeded, - }), - reportCommentResults: jest.fn(), - reportConversionResults: jest.fn(), - summarizePackageRules: async (_configurations, data) => ({ - ...ruleConversionResults, - ...data, - }), - logMissingPackages: jest.fn().mockReturnValue(Promise.resolve()), - writeConversionResults: jest.fn().mockReturnValue(Promise.resolve()), - ...overrides, - }; -}; - -const createStubOriginalConfigurationsData = () => ({ - tslint: { - full: { - rules: [], - rulesDirectory: [], - }, - raw: {}, - }, -}); - -describe("convertLintConfig", () => { - it("returns the failure result when finding the original configurations fails", async () => { - // Arrange - const findError: FailedResult = { - errors: [], - status: ResultStatus.Failed, - }; - const dependencies = createStubDependencies({ - findOriginalConfigurations: async () => findError, - }); - - // Act - const result = await convertLintConfig(dependencies, stubSettings); - - // Assert - expect(result).toEqual(findError); - }); - - it("returns the failure result when writing to the configuration file fails", async () => { - // Arrange - const fileWriteError = new Error(); - const dependencies = createStubDependencies({ - writeConversionResults: jest.fn().mockResolvedValueOnce(fileWriteError), - }); - - // Act - const result = await convertLintConfig(dependencies, stubSettings); - - // Assert - expect(result).toEqual({ - errors: [fileWriteError], - status: ResultStatus.Failed, - }); - }); - - it("returns the failure result when converting comments fails", async () => { - // Arrange - const convertCommentsResult = { - errors: [new Error()], - status: ResultStatus.Failed, - }; - const dependencies = createStubDependencies({ - convertComments: jest.fn().mockResolvedValueOnce(convertCommentsResult), - }); - - // Act - const result = await convertLintConfig(dependencies, stubSettings); - - // Assert - expect(result).toEqual(convertCommentsResult); - }); - - it("returns a successful result when all steps succeed", async () => { - // Arrange - const convertCommentsResult = { - status: ResultStatus.Succeeded, - }; - const dependencies = createStubDependencies({ - convertComments: jest.fn().mockResolvedValueOnce(convertCommentsResult), - }); - - // Act - const result = await convertLintConfig(dependencies, stubSettings); - - // Assert - expect(result).toEqual(convertCommentsResult); - }); -}); diff --git a/src/conversion/convertLintConfig.ts b/src/conversion/convertLintConfig.ts deleted file mode 100644 index 6c5f1f1af..000000000 --- a/src/conversion/convertLintConfig.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { SansDependencies } from "../binding"; -import { convertComments } from "../comments/convertComments"; -import { summarizePackageRules } from "../creation/summarization/summarizePackageRules"; -import { writeConversionResults } from "../creation/writeConversionResults"; -import { findOriginalConfigurations } from "../input/findOriginalConfigurations"; -import { logMissingPackages } from "../reporting/packages/logMissingPackages"; -import { reportConversionResults } from "../reporting/reportConversionResults"; -import { reportCommentResults } from "../reporting/reportCommentResults"; -import { convertRules } from "../rules/convertRules"; -import { ResultStatus, ResultWithStatus, TSLintToESLintSettings } from "../types"; - -export type ConvertLintConfigDependencies = { - convertComments: SansDependencies; - convertRules: SansDependencies; - findOriginalConfigurations: SansDependencies; - logMissingPackages: SansDependencies; - reportCommentResults: SansDependencies; - reportConversionResults: SansDependencies; - summarizePackageRules: SansDependencies; - writeConversionResults: SansDependencies; -}; - -/** - * Root-level driver to convert a TSLint configuration to ESLint. - * @see `Architecture.md` for documentation. - */ -export const convertLintConfig = async ( - dependencies: ConvertLintConfigDependencies, - settings: TSLintToESLintSettings, -): Promise => { - // 1. Existing configurations are read - const originalConfigurations = await dependencies.findOriginalConfigurations(settings); - if (originalConfigurations.status !== ResultStatus.Succeeded) { - return originalConfigurations; - } - - // 2. TSLint rules are converted into their ESLint configurations - const ruleConversionResults = dependencies.convertRules( - originalConfigurations.data.tslint.full.rules, - ); - - // 3. ESLint configurations are summarized based on extended ESLint and TSLint presets - const summarizedConfiguration = await dependencies.summarizePackageRules( - originalConfigurations.data.eslint, - originalConfigurations.data.tslint, - ruleConversionResults, - settings.prettier, - ); - - // 4. The summarized configuration is written to the output config file - const fileWriteError = await dependencies.writeConversionResults( - settings.config, - summarizedConfiguration, - originalConfigurations.data, - ); - if (fileWriteError !== undefined) { - return { - errors: [fileWriteError], - status: ResultStatus.Failed, - }; - } - - // 5. Files to transform comments in have source text rewritten using the cached rule conversion results - const commentsResult = await dependencies.convertComments( - settings.comments, - ruleConversionResults.ruleEquivalents, - originalConfigurations.data.typescript, - ); - - // 6. A summary of the results is printed to the user's console - await dependencies.reportConversionResults(settings.config, summarizedConfiguration); - dependencies.reportCommentResults(commentsResult); - await dependencies.logMissingPackages( - summarizedConfiguration, - originalConfigurations.data.packages, - ); - - return commentsResult; -}; diff --git a/src/comments/convertComments.test.ts b/src/converters/comments/convertComments.test.ts similarity index 51% rename from src/comments/convertComments.test.ts rename to src/converters/comments/convertComments.test.ts index 83db20c44..527aa151f 100644 --- a/src/comments/convertComments.test.ts +++ b/src/converters/comments/convertComments.test.ts @@ -1,4 +1,5 @@ -import { ResultStatus } from "../types"; +import { createStubOriginalConfigurationsData } from "../../settings.stubs"; +import { ResultStatus } from "../../types"; import { convertComments, ConvertCommentsDependencies } from "./convertComments"; const createStubDependencies = ( @@ -8,17 +9,26 @@ const createStubDependencies = ( include: ["a.ts"], }), convertFileComments: jest.fn(), - globAsync: jest.fn().mockResolvedValue(["a.ts", "b.ts"]), + extractGlobPaths: jest.fn().mockResolvedValue({ + data: ["a.ts", "b.ts"], + status: ResultStatus.Succeeded, + }), + reportCommentResults: jest.fn(), ...overrides, }); describe("convertComments", () => { - it("returns an empty result when filePathGlobs is undefined", async () => { + it("returns an empty result when comments is undefined", async () => { // Arrange const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, undefined, new Map()); + const result = await convertComments( + dependencies, + { comments: undefined }, + createStubOriginalConfigurationsData(), + new Map(), + ); // Assert expect(result).toEqual({ @@ -35,7 +45,12 @@ describe("convertComments", () => { }); // Act - const result = await convertComments(dependencies, true, new Map()); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData(), + new Map(), + ); // Assert expect(result).toEqual({ @@ -44,60 +59,27 @@ describe("convertComments", () => { }); }); - it("returns the failure result when a file path glob fails", async () => { + it("returns the failure result when a globbing file paths fails", async () => { // Arrange const globAsyncError = new Error(); const dependencies = createStubDependencies({ - globAsync: jest.fn().mockResolvedValueOnce(globAsyncError), - }); - - // Act - const result = await convertComments(dependencies, true, new Map(), { - include: ["src/*.ts"], - }); - - // Assert - expect(result).toEqual({ - errors: [globAsyncError], - status: ResultStatus.Failed, - }); - }); - - it("returns an error when there are no resultant file paths", async () => { - // Arrange - const dependencies = createStubDependencies({ - collectCommentFileNames: async () => ({ - include: [], + extractGlobPaths: jest.fn().mockResolvedValueOnce({ + errors: [globAsyncError], + status: ResultStatus.Failed, }), - globAsync: jest.fn().mockResolvedValueOnce([]), }); // Act - const result = await convertComments(dependencies, [], new Map()); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData(), + new Map(), + ); // Assert expect(result).toEqual({ - errors: expect.arrayContaining([expect.any(Error)]), - status: ResultStatus.Failed, - }); - }); - - it("returns an error when there all globbed file paths are excluded", async () => { - // Arrange - const dependencies = createStubDependencies({ - collectCommentFileNames: async () => ({ - exclude: ["*.ts"], - include: ["a.ts"], - }), - globAsync: jest.fn().mockResolvedValueOnce(["a.ts"]), - }); - - // Act - const result = await convertComments(dependencies, ["*.ts"], new Map()); - - // Assert - expect(result).toEqual({ - errors: expect.arrayContaining([expect.any(Error)]), + errors: [globAsyncError], status: ResultStatus.Failed, }); }); @@ -110,7 +92,12 @@ describe("convertComments", () => { }); // Act - const result = await convertComments(dependencies, ["*.ts"], new Map()); + const result = await convertComments( + dependencies, + { comments: ["*.ts"] }, + createStubOriginalConfigurationsData(), + new Map(), + ); // Assert expect(result).toEqual({ @@ -124,7 +111,12 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, ["*.ts"], new Map()); + const result = await convertComments( + dependencies, + { comments: ["*.ts"] }, + createStubOriginalConfigurationsData(), + new Map(), + ); // Assert expect(result).toEqual({ diff --git a/src/converters/comments/convertComments.ts b/src/converters/comments/convertComments.ts new file mode 100644 index 000000000..3598ce345 --- /dev/null +++ b/src/converters/comments/convertComments.ts @@ -0,0 +1,75 @@ +import { SansDependencies } from "../../binding"; +import { collectCommentFileNames } from "../../comments/collectCommentFileNames"; +import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { ResultWithDataStatus, ResultStatus, TSLintToESLintSettings } from "../../types"; +import { isError } from "../../utils"; +import { convertFileComments } from "./convertFileComments"; +import { extractGlobPaths } from "./extractGlobPaths"; +import { reportCommentResults } from "./reporting/reportCommentResults"; + +export type ConvertCommentsDependencies = { + collectCommentFileNames: SansDependencies; + convertFileComments: SansDependencies; + extractGlobPaths: SansDependencies; + reportCommentResults: SansDependencies; +}; + +/** + * Root-level driver to convert a tslint:disable comments to eslint-disables. + * @see `/docs/Architecture/Comments.md` for documentation. + */ +export const convertComments = async ( + dependencies: ConvertCommentsDependencies, + { comments }: Pick, + { typescript }: Pick, + ruleEquivalents: Map, +): Promise> => { + // 1. If no comments are requested to be converted, immediately report it out and mark this as passed. + if (comments === undefined) { + dependencies.reportCommentResults(); + return { + data: undefined, + status: ResultStatus.Succeeded, + }; + } + + // 2. Create the list of include and possibly exclude globs to search on. + const commentFileNames = await dependencies.collectCommentFileNames(comments, typescript); + if (commentFileNames instanceof Error) { + return { + errors: [commentFileNames], + status: ResultStatus.Failed, + }; + } + + // 3. Search for files matching those globs to have their comments converted. + const globbedFilePaths = await dependencies.extractGlobPaths(commentFileNames); + if (globbedFilePaths.status !== ResultStatus.Succeeded) { + return globbedFilePaths; + } + + // 4. Convert comments in the contents of each file, storing equivalents in a cache. + const uniqueGlobbedFilePaths = globbedFilePaths.data; + const ruleCommentsCache = new Map(); + const fileFailures = ( + await Promise.all( + globbedFilePaths.data.map(async (filePath) => + dependencies.convertFileComments(filePath, ruleCommentsCache, ruleEquivalents), + ), + ) + ).filter(isError); + if (fileFailures.length !== 0) { + return { + errors: fileFailures, + status: ResultStatus.Failed, + }; + } + + // 5. Report out the results of converting the unique globbed file paths. + dependencies.reportCommentResults(uniqueGlobbedFilePaths); + + return { + data: uniqueGlobbedFilePaths, + status: ResultStatus.Succeeded, + }; +}; diff --git a/src/comments/convertFileComments.test.ts b/src/converters/comments/convertFileComments.test.ts similarity index 96% rename from src/comments/convertFileComments.test.ts rename to src/converters/comments/convertFileComments.test.ts index 87f8dbd14..29e763497 100644 --- a/src/comments/convertFileComments.test.ts +++ b/src/converters/comments/convertFileComments.test.ts @@ -1,6 +1,6 @@ -import { createStubFileSystem } from "../adapters/fileSystem.stub"; -import { ConversionError } from "../errors/conversionError"; -import { createStubConverter } from "../rules/converter.stubs"; +import { createStubFileSystem } from "../../adapters/fileSystem.stub"; +import { ConversionError } from "../../errors/conversionError"; +import { createStubConverter } from "../lintConfigs/rules/ruleConverter.stubs"; import { convertFileComments, ConvertFileCommentsDependencies } from "./convertFileComments"; const createStubDependencies = ( diff --git a/src/comments/convertFileComments.ts b/src/converters/comments/convertFileComments.ts similarity index 89% rename from src/comments/convertFileComments.ts rename to src/converters/comments/convertFileComments.ts index b535b2d48..db6c56486 100644 --- a/src/comments/convertFileComments.ts +++ b/src/converters/comments/convertFileComments.ts @@ -1,7 +1,7 @@ -import { FileSystem } from "../adapters/fileSystem"; +import { FileSystem } from "../../adapters/fileSystem"; +import { RuleConverter } from "../lintConfigs/rules/ruleConverter"; import { parseFileComments } from "./parseFileComments"; import { replaceFileComments } from "./replaceFileComments"; -import { RuleConverter } from "../rules/converter"; export type ConvertFileCommentsDependencies = { converters: Map; diff --git a/src/converters/comments/extractGlobPaths.test.ts b/src/converters/comments/extractGlobPaths.test.ts new file mode 100644 index 000000000..2a6d618f4 --- /dev/null +++ b/src/converters/comments/extractGlobPaths.test.ts @@ -0,0 +1,83 @@ +import { ResultStatus } from "../../types"; +import { extractGlobPaths, ExtractGlobPathsDependencies } from "./extractGlobPaths"; + +const createStubDependencies = ( + overrides: Partial = {}, +): ExtractGlobPathsDependencies => ({ + globAsync: jest.fn().mockResolvedValue(["a.ts", "b.ts"]), + ...overrides, +}); + +describe("extractGlobPaths", () => { + it("returns the failure result when a file path glob fails", async () => { + // Arrange + const globAsyncError = new Error(); + const dependencies = createStubDependencies({ + globAsync: jest.fn().mockResolvedValueOnce(globAsyncError), + }); + + // Act + const result = await extractGlobPaths(dependencies, { + include: ["src/*.ts"], + }); + + // Assert + expect(result).toEqual({ + errors: [globAsyncError], + status: ResultStatus.Failed, + }); + }); + + it("returns an error when there are no resultant file paths", async () => { + // Arrange + const dependencies = createStubDependencies({ + globAsync: jest.fn().mockResolvedValueOnce([]), + }); + + // Act + const result = await extractGlobPaths(dependencies, { + include: ["src/*.ts"], + }); + + // Assert + expect(result).toEqual({ + errors: expect.arrayContaining([expect.any(Error)]), + status: ResultStatus.Failed, + }); + }); + + it("returns an error when all globbed file paths are excluded", async () => { + // Arrange + const dependencies = createStubDependencies({ + globAsync: jest.fn().mockResolvedValueOnce(["a.ts"]), + }); + + // Act + const result = await extractGlobPaths(dependencies, { + exclude: ["a.ts"], + include: ["*.ts"], + }); + + // Assert + expect(result).toEqual({ + errors: expect.arrayContaining([expect.any(Error)]), + status: ResultStatus.Failed, + }); + }); + + it("returns the paths when unique file paths are not excluded", async () => { + // Arrange + const dependencies = createStubDependencies({ + globAsync: jest.fn().mockResolvedValueOnce(["a.ts"]), + }); + + // Act + const result = await extractGlobPaths(dependencies, { include: ["*.ts"] }); + + // Assert + expect(result).toEqual({ + data: ["a.ts"], + status: ResultStatus.Succeeded, + }); + }); +}); diff --git a/src/converters/comments/extractGlobPaths.ts b/src/converters/comments/extractGlobPaths.ts new file mode 100644 index 000000000..99bb6fac8 --- /dev/null +++ b/src/converters/comments/extractGlobPaths.ts @@ -0,0 +1,57 @@ +import minimatch from "minimatch"; + +import { GlobAsync } from "../../adapters/globAsync"; +import { CommentFileNames } from "../../comments/collectCommentFileNames"; +import { ResultStatus, ResultWithDataStatus } from "../../types"; +import { separateErrors, uniqueFromSources } from "../../utils"; + +export type ExtractGlobPathsDependencies = { + globAsync: GlobAsync; +}; + +export const extractGlobPaths = async ( + dependencies: ExtractGlobPathsDependencies, + { exclude, include }: CommentFileNames, +): Promise> => { + const [fileGlobErrors, globbedFilePaths] = separateErrors( + await Promise.all(include.map(dependencies.globAsync)), + ); + + if (fileGlobErrors.length !== 0) { + return { + errors: fileGlobErrors, + status: ResultStatus.Failed, + }; + } + + if (globbedFilePaths.join("") === "") { + return { + errors: [ + new Error( + "--comments found no files. Consider passing no globs to it, to default to all TypeScript files.", + ), + ], + status: ResultStatus.Failed, + }; + } + + const uniqueGlobbedFilePaths = uniqueFromSources(...globbedFilePaths).filter( + (filePathGlob) => !exclude?.some((exclusion) => minimatch(filePathGlob, exclusion)), + ); + + if (uniqueGlobbedFilePaths.join("") === "") { + return { + errors: [ + new Error( + `All files passed to --comments were excluded. Consider removing 'exclude' from your TypeScript configuration.`, + ), + ], + status: ResultStatus.Failed, + }; + } + + return { + data: uniqueGlobbedFilePaths, + status: ResultStatus.Succeeded, + }; +}; diff --git a/src/comments/parseFileComments.ts b/src/converters/comments/parseFileComments.ts similarity index 100% rename from src/comments/parseFileComments.ts rename to src/converters/comments/parseFileComments.ts diff --git a/src/comments/replaceFileComments.ts b/src/converters/comments/replaceFileComments.ts similarity index 91% rename from src/comments/replaceFileComments.ts rename to src/converters/comments/replaceFileComments.ts index 21350545b..31e8e239f 100644 --- a/src/comments/replaceFileComments.ts +++ b/src/converters/comments/replaceFileComments.ts @@ -1,8 +1,8 @@ import * as ts from "typescript"; -import { RuleConverter } from "../rules/converter"; -import { uniqueFromSources } from "../utils"; -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../errors/conversionError"; +import { uniqueFromSources } from "../../utils"; +import { RuleConverter } from "../lintConfigs/rules/ruleConverter"; import { FileComment } from "./parseFileComments"; export const replaceFileComments = ( diff --git a/src/converters/comments/reporting/reportCommentResults.test.ts b/src/converters/comments/reporting/reportCommentResults.test.ts new file mode 100644 index 000000000..44786fdb3 --- /dev/null +++ b/src/converters/comments/reporting/reportCommentResults.test.ts @@ -0,0 +1,46 @@ +import { createStubLogger, expectEqualWrites } from "../../../adapters/logger.stubs"; +import { reportCommentResults } from "./reportCommentResults"; + +describe("reportCommentResults", () => { + it("logs a suggestion when no comment globs were requested", () => { + // Arrange + const logger = createStubLogger(); + + // Act + reportCommentResults({ logger }); + + // Assert + expectEqualWrites( + logger.stdout.write, + `♻ Consider using --comments to replace TSLint comment directives in your source files. ♻`, + ); + }); + + it("logs a singular success message when comment conversions succeeded on one file", () => { + // Arrange + const logger = createStubLogger(); + + // Act + reportCommentResults({ logger }, ["src/index.ts"]); + + // Assert + expectEqualWrites( + logger.stdout.write, + `♻ 1 file of TSLint comment directives converted to ESLint. ♻ `, + ); + }); + + it("logs a plural success message when comment conversions succeeded on two files", () => { + // Arrange + const logger = createStubLogger(); + + // Act + reportCommentResults({ logger }, ["src/index.ts", "src/data.ts"]); + + // Assert + expectEqualWrites( + logger.stdout.write, + `♻ 2 files of TSLint comment directives converted to ESLint. ♻ `, + ); + }); +}); diff --git a/src/converters/comments/reporting/reportCommentResults.ts b/src/converters/comments/reporting/reportCommentResults.ts new file mode 100644 index 000000000..9960201fe --- /dev/null +++ b/src/converters/comments/reporting/reportCommentResults.ts @@ -0,0 +1,31 @@ +import chalk from "chalk"; +import { EOL } from "os"; + +import { Logger } from "../../../adapters/logger"; + +export type ReportCommentResultsDependencies = { + logger: Logger; +}; + +export const reportCommentResults = ( + dependencies: ReportCommentResultsDependencies, + uniqueFilePathGlobs?: string[], +) => { + if (uniqueFilePathGlobs === undefined) { + dependencies.logger.stdout.write( + chalk.magentaBright( + `${EOL}♻ Consider using --comments to replace TSLint comment directives in your source files. ♻${EOL}`, + ), + ); + return; + } + + dependencies.logger.stdout.write(chalk.magentaBright(`${EOL}♻ ${uniqueFilePathGlobs.length}`)); + dependencies.logger.stdout.write( + chalk.magenta(` file${uniqueFilePathGlobs.length === 1 ? "" : "s"}`), + ); + dependencies.logger.stdout.write( + chalk.magenta(` of TSLint comment directives converted to ESLint.`), + ); + dependencies.logger.stdout.write(chalk.magentaBright(` ♻${EOL}`)); +}; diff --git a/src/conversion/convertEditorConfig.test.ts b/src/converters/editorConfigs/convertEditorConfig.test.ts similarity index 85% rename from src/conversion/convertEditorConfig.test.ts rename to src/converters/editorConfigs/convertEditorConfig.test.ts index 9ba0859a8..2b2e926b4 100644 --- a/src/conversion/convertEditorConfig.test.ts +++ b/src/converters/editorConfigs/convertEditorConfig.test.ts @@ -1,7 +1,7 @@ -import { EditorSetting } from "../editorSettings/types"; -import { FailedResult, ResultStatus } from "../types"; -import { createEmptySettingConversionResults } from "./conversionResults.stubs"; +import { ResultStatus, FailedResult } from "../../types"; import { convertEditorConfig, ConvertEditorConfigDependencies } from "./convertEditorConfig"; +import { createEmptyEditorSettingConversionResults } from "./editorConversionResults.stubs"; +import { EditorSetting } from "./types"; const stubSettings = { config: "./eslintrc.js", @@ -13,8 +13,8 @@ const createStubDependencies = ( ): ConvertEditorConfigDependencies => ({ convertEditorSettings: jest.fn(), findEditorConfiguration: jest.fn().mockResolvedValue({}), - reportConversionResults: jest.fn(), - writeConversionResults: jest.fn().mockReturnValue(Promise.resolve()), + reportEditorSettingConversionResults: jest.fn(), + writeEditorConfigConversionResults: jest.fn().mockReturnValue(Promise.resolve()), ...overrides, }); @@ -60,7 +60,7 @@ describe("convertEditorConfig", () => { // Arrange const fileWriteError = new Error(); const dependencies = createStubDependencies({ - writeConversionResults: jest.fn().mockResolvedValueOnce(fileWriteError), + writeEditorConfigConversionResults: jest.fn().mockResolvedValueOnce(fileWriteError), }); // Act @@ -97,7 +97,7 @@ describe("convertEditorConfig", () => { it("reports conversion results when settings are converted successfully", async () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ converted: new Map([ [ "tslint-editor-setting-one", @@ -117,7 +117,9 @@ describe("convertEditorConfig", () => { await convertEditorConfig(dependencies, stubSettings); // Assert - expect(dependencies.reportConversionResults).toHaveBeenCalledWith(conversionResults); + expect(dependencies.reportEditorSettingConversionResults).toHaveBeenCalledWith( + conversionResults, + ); }); it("returns a successful result when finding the original configurations succeeds", async () => { diff --git a/src/converters/editorConfigs/convertEditorConfig.ts b/src/converters/editorConfigs/convertEditorConfig.ts new file mode 100644 index 000000000..c490222bb --- /dev/null +++ b/src/converters/editorConfigs/convertEditorConfig.ts @@ -0,0 +1,66 @@ +import { SansDependencies } from "../../binding"; +import { findEditorConfiguration } from "../../input/findEditorConfiguration"; +import { TSLintToESLintSettings, ResultWithStatus, ResultStatus } from "../../types"; +import { writeEditorConfigConversionResults } from "../lintConfigs/writeEditorConfigConversionResults"; +import { convertEditorSettings } from "./convertEditorSettings"; +import { reportEditorSettingConversionResults } from "./reporting/reportEditorSettingConversionResults"; + +export type ConvertEditorConfigDependencies = { + convertEditorSettings: SansDependencies; + findEditorConfiguration: SansDependencies; + reportEditorSettingConversionResults: SansDependencies< + typeof reportEditorSettingConversionResults + >; + writeEditorConfigConversionResults: SansDependencies; +}; + +/** + * Root-level driver to convert an editor configuration. + * @see `/docs/Architecture/Editors.md` for documentation. + */ +export const convertEditorConfig = async ( + dependencies: ConvertEditorConfigDependencies, + settings: TSLintToESLintSettings, +): Promise => { + // 1. An existing editor configuration is read from disk. + const configuration = await dependencies.findEditorConfiguration(settings.editor); + + // 2. If the existing configuration is not found or errored, nothing else needs to be done. + if (configuration === undefined) { + return { + status: ResultStatus.Succeeded, + }; + } + if (configuration.result instanceof Error) { + return { + errors: [configuration.result], + status: ResultStatus.Failed, + }; + } + + // 3. Configuration settings are converted to their ESLint equivalents. + const settingConversionResults = dependencies.convertEditorSettings( + configuration.result, + settings, + ); + + // 4. Those ESLint equivalents are written to the configuration file. + const fileWriteError = await dependencies.writeEditorConfigConversionResults( + configuration.configPath, + settingConversionResults, + configuration.result, + ); + if (fileWriteError !== undefined) { + return { + errors: [fileWriteError], + status: ResultStatus.Failed, + }; + } + + // 5. Results from converting are reported to the user. + dependencies.reportEditorSettingConversionResults(settingConversionResults); + + return { + status: ResultStatus.Succeeded, + }; +}; diff --git a/src/editorSettings/convertEditorSetting.test.ts b/src/converters/editorConfigs/convertEditorSetting.test.ts similarity index 94% rename from src/editorSettings/convertEditorSetting.test.ts rename to src/converters/editorConfigs/convertEditorSetting.test.ts index 557d84329..cdd42e0ba 100644 --- a/src/editorSettings/convertEditorSetting.test.ts +++ b/src/converters/editorConfigs/convertEditorSetting.test.ts @@ -1,8 +1,8 @@ -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../errors/conversionError"; +import { createStubTSLintToESLintSettings } from "../../settings.stubs"; import { convertEditorSetting } from "./convertEditorSetting"; import { EditorSettingConverter } from "./converter"; import { EditorSetting } from "./types"; -import { createStubTSLintToESLintSettings } from "../settings.stubs"; describe("convertEditorSetting", () => { it("returns undefined when no converter exists for a setting", () => { diff --git a/src/editorSettings/convertEditorSetting.ts b/src/converters/editorConfigs/convertEditorSetting.ts similarity index 82% rename from src/editorSettings/convertEditorSetting.ts rename to src/converters/editorConfigs/convertEditorSetting.ts index 8ceb0c02f..66a4cd52f 100644 --- a/src/editorSettings/convertEditorSetting.ts +++ b/src/converters/editorConfigs/convertEditorSetting.ts @@ -1,5 +1,5 @@ -import { ConversionError } from "../errors/conversionError"; -import { TSLintToESLintSettings } from "../types"; +import { ConversionError } from "../../errors/conversionError"; +import { TSLintToESLintSettings } from "../../types"; import { EditorSettingConverter } from "./converter"; import { EditorSetting } from "./types"; diff --git a/src/editorSettings/convertEditorSettings.test.ts b/src/converters/editorConfigs/convertEditorSettings.test.ts similarity index 97% rename from src/editorSettings/convertEditorSettings.test.ts rename to src/converters/editorConfigs/convertEditorSettings.test.ts index 9f9b4d05b..fd1a9bf0a 100644 --- a/src/editorSettings/convertEditorSettings.test.ts +++ b/src/converters/editorConfigs/convertEditorSettings.test.ts @@ -1,5 +1,5 @@ -import { ConversionError } from "../errors/conversionError"; -import { createStubTSLintToESLintSettings } from "../settings.stubs"; +import { ConversionError } from "../../errors/conversionError"; +import { createStubTSLintToESLintSettings } from "../../settings.stubs"; import { convertEditorSettings } from "./convertEditorSettings"; import { EditorSettingConversionResult, EditorSettingConverter } from "./converter"; import { EditorSetting } from "./types"; diff --git a/src/editorSettings/convertEditorSettings.ts b/src/converters/editorConfigs/convertEditorSettings.ts similarity index 92% rename from src/editorSettings/convertEditorSettings.ts rename to src/converters/editorConfigs/convertEditorSettings.ts index 129aa8d2b..9cf4cc25e 100644 --- a/src/editorSettings/convertEditorSettings.ts +++ b/src/converters/editorConfigs/convertEditorSettings.ts @@ -1,6 +1,6 @@ -import { ConversionError } from "../errors/conversionError"; -import { ErrorSummary } from "../errors/errorSummary"; -import { TSLintToESLintSettings } from "../types"; +import { ConversionError } from "../../errors/conversionError"; +import { ErrorSummary } from "../../errors/errorSummary"; +import { TSLintToESLintSettings } from "../../types"; import { convertEditorSetting } from "./convertEditorSetting"; import { EditorSettingConverter } from "./converter"; import { EditorSetting } from "./types"; diff --git a/src/editorSettings/converter.ts b/src/converters/editorConfigs/converter.ts similarity index 88% rename from src/editorSettings/converter.ts rename to src/converters/editorConfigs/converter.ts index 441208e51..481c5ac61 100644 --- a/src/editorSettings/converter.ts +++ b/src/converters/editorConfigs/converter.ts @@ -1,5 +1,5 @@ -import { ConversionError } from "../errors/conversionError"; -import { TSLintToESLintSettings } from "../types"; +import { ConversionError } from "../../errors/conversionError"; +import { TSLintToESLintSettings } from "../../types"; import { EditorSetting } from "./types"; /** diff --git a/src/editorSettings/converters/editor-code-actions-on-save.ts b/src/converters/editorConfigs/converters/editor-code-actions-on-save.ts similarity index 100% rename from src/editorSettings/converters/editor-code-actions-on-save.ts rename to src/converters/editorConfigs/converters/editor-code-actions-on-save.ts diff --git a/src/editorSettings/converters/tests/editor-code-actions-on-save.test.ts b/src/converters/editorConfigs/converters/tests/editor-code-actions-on-save.test.ts similarity index 97% rename from src/editorSettings/converters/tests/editor-code-actions-on-save.test.ts rename to src/converters/editorConfigs/converters/tests/editor-code-actions-on-save.test.ts index dd7fa0c60..4e39f38a5 100644 --- a/src/editorSettings/converters/tests/editor-code-actions-on-save.test.ts +++ b/src/converters/editorConfigs/converters/tests/editor-code-actions-on-save.test.ts @@ -1,4 +1,4 @@ -import { createStubTSLintToESLintSettings } from "../../../settings.stubs"; +import { createStubTSLintToESLintSettings } from "../../../../settings.stubs"; import { convertEditorCodeActionsOnSave } from "../editor-code-actions-on-save"; describe(convertEditorCodeActionsOnSave, () => { diff --git a/src/editorSettings/converters/tests/tslint-config-file.test.ts b/src/converters/editorConfigs/converters/tests/tslint-config-file.test.ts similarity index 100% rename from src/editorSettings/converters/tests/tslint-config-file.test.ts rename to src/converters/editorConfigs/converters/tests/tslint-config-file.test.ts diff --git a/src/editorSettings/converters/tslint-config-file.ts b/src/converters/editorConfigs/converters/tslint-config-file.ts similarity index 100% rename from src/editorSettings/converters/tslint-config-file.ts rename to src/converters/editorConfigs/converters/tslint-config-file.ts diff --git a/src/converters/editorConfigs/editorConversionResults.stubs.ts b/src/converters/editorConfigs/editorConversionResults.stubs.ts new file mode 100644 index 000000000..83d755733 --- /dev/null +++ b/src/converters/editorConfigs/editorConversionResults.stubs.ts @@ -0,0 +1,10 @@ +import { EditorSettingConversionResults } from "./convertEditorSettings"; + +export const createEmptyEditorSettingConversionResults = ( + overrides: Partial = {}, +): EditorSettingConversionResults => ({ + converted: new Map(), + failed: [], + missing: [], + ...overrides, +}); diff --git a/src/editorSettings/editorSettingsConverters.ts b/src/converters/editorConfigs/editorSettingsConverters.ts similarity index 100% rename from src/editorSettings/editorSettingsConverters.ts rename to src/converters/editorConfigs/editorSettingsConverters.ts diff --git a/src/reporting/reportEditorSettingConversionResults.test.ts b/src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.test.ts similarity index 88% rename from src/reporting/reportEditorSettingConversionResults.test.ts rename to src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.test.ts index a4ced16e8..d0c399fca 100644 --- a/src/reporting/reportEditorSettingConversionResults.test.ts +++ b/src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.test.ts @@ -1,14 +1,15 @@ import { EOL } from "os"; -import { createStubLogger, expectEqualWrites } from "../adapters/logger.stubs"; -import { createEmptySettingConversionResults } from "../conversion/conversionResults.stubs"; -import { EditorSetting } from "../editorSettings/types"; +import { createStubLogger, expectEqualWrites } from "../../../adapters/logger.stubs"; +import { createEmptyEditorSettingConversionResults } from "../editorConversionResults.stubs"; +import { EditorSetting } from "../types"; + import { reportEditorSettingConversionResults } from "./reportEditorSettingConversionResults"; describe("reportEditorSettingConversionResults", () => { it("logs a successful conversion when there is one converted editor setting", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ converted: new Map([ [ "tslint-editor-setting-one", @@ -34,7 +35,7 @@ describe("reportEditorSettingConversionResults", () => { it("logs successful conversions when there are multiple converted settings", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ converted: new Map([ [ "tslint-editor-setting-one", @@ -67,7 +68,7 @@ describe("reportEditorSettingConversionResults", () => { it("logs a failed conversion when there is one failed conversion", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ failed: [{ getSummary: () => "It broke." }], }); @@ -86,7 +87,7 @@ describe("reportEditorSettingConversionResults", () => { it("logs failed conversions when there are multiple failed conversions", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ failed: [{ getSummary: () => "It broke." }, { getSummary: () => "It really broke." }], }); @@ -105,7 +106,7 @@ describe("reportEditorSettingConversionResults", () => { it("logs a missing editor setting when there is a missing setting", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ missing: [ { editorSettingName: "tslint-editor-setting-one", @@ -133,7 +134,7 @@ describe("reportEditorSettingConversionResults", () => { it("logs missing settings when there are missing settings", () => { // Arrange - const conversionResults = createEmptySettingConversionResults({ + const conversionResults = createEmptyEditorSettingConversionResults({ missing: [ { editorSettingName: "tslint-editor-setting-one", diff --git a/src/reporting/reportEditorSettingConversionResults.ts b/src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.ts similarity index 86% rename from src/reporting/reportEditorSettingConversionResults.ts rename to src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.ts index 38271d6ef..d7da61dcd 100644 --- a/src/reporting/reportEditorSettingConversionResults.ts +++ b/src/converters/editorConfigs/reporting/reportEditorSettingConversionResults.ts @@ -1,10 +1,10 @@ -import { Logger } from "../adapters/logger"; -import { EditorSettingConversionResults } from "../editorSettings/convertEditorSettings"; +import { Logger } from "../../../adapters/logger"; import { + logSuccessfulConversions, logFailedConversions, logMissingConversionTarget, - logSuccessfulConversions, -} from "./reportOutputs"; +} from "../../../reporting"; +import { EditorSettingConversionResults } from "../convertEditorSettings"; export type ReportEditorSettingConversionResultsDependencies = { logger: Logger; diff --git a/src/editorSettings/types.ts b/src/converters/editorConfigs/types.ts similarity index 100% rename from src/editorSettings/types.ts rename to src/converters/editorConfigs/types.ts diff --git a/src/converters/lintConfigs/configConversionResults.stubs.ts b/src/converters/lintConfigs/configConversionResults.stubs.ts new file mode 100644 index 000000000..139f0b135 --- /dev/null +++ b/src/converters/lintConfigs/configConversionResults.stubs.ts @@ -0,0 +1,14 @@ +import { SummarizedConfigResultsConfiguration } from "./summarization/types"; + +export const createEmptyConfigConversionResults = ( + overrides: Partial = {}, +): SummarizedConfigResultsConfiguration => ({ + converted: new Map(), + extends: [], + extensionRules: new Map(), + failed: [], + missing: [], + plugins: new Set(), + ruleEquivalents: new Map(), + ...overrides, +}); diff --git a/src/converters/lintConfigs/convertLintConfig.test.ts b/src/converters/lintConfigs/convertLintConfig.test.ts new file mode 100644 index 000000000..554a01f49 --- /dev/null +++ b/src/converters/lintConfigs/convertLintConfig.test.ts @@ -0,0 +1,69 @@ +import { createStubOriginalConfigurationsData } from "../../settings.stubs"; +import { ResultStatus } from "../../types"; +import { createEmptyConfigConversionResults } from "./configConversionResults.stubs"; +import { convertLintConfig, ConvertLintConfigDependencies } from "./convertLintConfig"; + +const stubSettings = { + config: "./eslintrc.js", +}; + +const createStubDependencies = ( + overrides: Partial = {}, +): ConvertLintConfigDependencies => { + const ruleConversionResults = createEmptyConfigConversionResults(); + + return { + convertRules: jest.fn(), + reportConfigConversionResults: jest.fn(), + summarizePackageRules: async (_configurations, data) => ({ + ...ruleConversionResults, + ...data, + }), + logMissingPackages: jest.fn().mockReturnValue(Promise.resolve()), + writeConfigConversionResults: jest.fn().mockReturnValue(Promise.resolve()), + ...overrides, + }; +}; + +describe("convertLintConfig", () => { + it("returns the failure result when writing to the configuration file fails", async () => { + // Arrange + const fileWriteError = new Error(); + const dependencies = createStubDependencies({ + writeConfigConversionResults: jest.fn().mockResolvedValueOnce(fileWriteError), + }); + + // Act + const result = await convertLintConfig( + dependencies, + stubSettings, + createStubOriginalConfigurationsData(), + new Map(), + ); + + // Assert + expect(result).toEqual({ + errors: [fileWriteError], + status: ResultStatus.Failed, + }); + }); + + it("returns a successful result when all steps succeed", async () => { + // Arrange + const convertCommentsResult = { + status: ResultStatus.Succeeded, + }; + const dependencies = createStubDependencies(); + + // Act + const result = await convertLintConfig( + dependencies, + stubSettings, + createStubOriginalConfigurationsData(), + new Map(), + ); + + // Assert + expect(result).toEqual(convertCommentsResult); + }); +}); diff --git a/src/converters/lintConfigs/convertLintConfig.ts b/src/converters/lintConfigs/convertLintConfig.ts new file mode 100644 index 000000000..c6e7de782 --- /dev/null +++ b/src/converters/lintConfigs/convertLintConfig.ts @@ -0,0 +1,62 @@ +import { SansDependencies } from "../../binding"; +import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { TSLintToESLintSettings, ResultWithStatus, ResultStatus } from "../../types"; +import { logMissingPackages } from "./reporting/packages/logMissingPackages"; +import { reportConfigConversionResults } from "./reporting/reportConfigConversionResults"; +import { convertRules } from "./rules/convertRules"; +import { summarizePackageRules } from "./summarization/summarizePackageRules"; +import { writeConfigConversionResults } from "./writeConfigConversionResults"; + +export type ConvertLintConfigDependencies = { + convertRules: SansDependencies; + logMissingPackages: SansDependencies; + reportConfigConversionResults: SansDependencies; + summarizePackageRules: SansDependencies; + writeConfigConversionResults: SansDependencies; +}; + +/** + * Root-level driver to convert a TSLint configuration to ESLint. + * @see `/docs/Architecture/Linting.md` for documentation. + */ +export const convertLintConfig = async ( + dependencies: ConvertLintConfigDependencies, + settings: TSLintToESLintSettings, + originalConfigurations: AllOriginalConfigurations, + ruleEquivalents: Map, +): Promise => { + // 1. Raw TSLint rules are mapped to their ESLint equivalents. + const ruleConversionResults = dependencies.convertRules( + originalConfigurations.tslint.full.rules, + ruleEquivalents, + ); + + // 2. Those ESLint equivalents are deduplicated and relevant preset(s) detected. + const summarizedConfiguration = await dependencies.summarizePackageRules( + originalConfigurations.eslint, + originalConfigurations.tslint, + ruleConversionResults, + settings.prettier, + ); + + // 3. Those deduplicated rules and metadata are written to the output configuration file. + const fileWriteError = await dependencies.writeConfigConversionResults( + settings.config, + summarizedConfiguration, + originalConfigurations, + ); + if (fileWriteError !== undefined) { + return { + errors: [fileWriteError], + status: ResultStatus.Failed, + }; + } + + // 4. A summary of conversion results is printed, along with any now-missing packages. + await dependencies.reportConfigConversionResults(settings.config, summarizedConfiguration); + await dependencies.logMissingPackages(summarizedConfiguration, originalConfigurations.packages); + + return { + status: ResultStatus.Succeeded, + }; +}; diff --git a/src/creation/eslint/createEnv.test.ts b/src/converters/lintConfigs/eslint/createEnv.test.ts similarity index 98% rename from src/creation/eslint/createEnv.test.ts rename to src/converters/lintConfigs/eslint/createEnv.test.ts index a2cfe2738..417c281b5 100644 --- a/src/creation/eslint/createEnv.test.ts +++ b/src/converters/lintConfigs/eslint/createEnv.test.ts @@ -1,5 +1,5 @@ import { createEnv } from "./createEnv"; -import { TypeScriptConfiguration } from "../../input/findTypeScriptConfiguration"; +import { TypeScriptConfiguration } from "../../../input/findTypeScriptConfiguration"; const createTypeScriptCompilerOptions = ( overrides: Partial = {}, diff --git a/src/creation/eslint/createEnv.ts b/src/converters/lintConfigs/eslint/createEnv.ts similarity index 90% rename from src/creation/eslint/createEnv.ts rename to src/converters/lintConfigs/eslint/createEnv.ts index 771cd6780..87ed80896 100644 --- a/src/creation/eslint/createEnv.ts +++ b/src/converters/lintConfigs/eslint/createEnv.ts @@ -1,4 +1,4 @@ -import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { AllOriginalConfigurations } from "../../../input/findOriginalConfigurations"; export const createEnv = ({ packages, diff --git a/src/creation/formatConvertedRules.test.ts b/src/converters/lintConfigs/formatConvertedRules.test.ts similarity index 91% rename from src/creation/formatConvertedRules.test.ts rename to src/converters/lintConfigs/formatConvertedRules.test.ts index fcee49812..9e0a9f56b 100644 --- a/src/creation/formatConvertedRules.test.ts +++ b/src/converters/lintConfigs/formatConvertedRules.test.ts @@ -1,4 +1,4 @@ -import { createEmptyConversionResults } from "../conversion/conversionResults.stubs"; +import { createEmptyConfigConversionResults } from "./configConversionResults.stubs"; import { formatConvertedRules } from "./formatConvertedRules"; const originalConfiguration = { @@ -9,7 +9,7 @@ const originalConfiguration = { describe("formatConvertedRules", () => { it("prints rules sorted by name when there are multiple rules", () => { // Arrange - const results = createEmptyConversionResults({ + const results = createEmptyConfigConversionResults({ converted: new Map([ [ "tslint-rule-b", @@ -40,7 +40,7 @@ describe("formatConvertedRules", () => { it("prints a rule with only its severity when there are no rule arguments", () => { // Arrange - const results = createEmptyConversionResults({ + const results = createEmptyConfigConversionResults({ converted: new Map([ [ "tslint-rule-a", @@ -63,7 +63,7 @@ describe("formatConvertedRules", () => { it("prints a rule with only its severity when rule arguments are empty", () => { // Arrange - const results = createEmptyConversionResults({ + const results = createEmptyConfigConversionResults({ converted: new Map([ [ "tslint-rule-a", @@ -87,7 +87,7 @@ describe("formatConvertedRules", () => { it("prints a rule with its argumeents and severity when it has arguments", () => { // Arrange - const results = createEmptyConversionResults({ + const results = createEmptyConfigConversionResults({ converted: new Map([ [ "tslint-rule-a", @@ -111,7 +111,7 @@ describe("formatConvertedRules", () => { it("includes missing rules under the tslint adapter when there are missing rules", () => { // Arrange - const results = createEmptyConversionResults({ + const results = createEmptyConfigConversionResults({ converted: new Map([ [ "tslint-rule-a", diff --git a/src/creation/formatConvertedRules.ts b/src/converters/lintConfigs/formatConvertedRules.ts similarity index 84% rename from src/creation/formatConvertedRules.ts rename to src/converters/lintConfigs/formatConvertedRules.ts index 03737d9e9..4e5aae700 100644 --- a/src/creation/formatConvertedRules.ts +++ b/src/converters/lintConfigs/formatConvertedRules.ts @@ -1,7 +1,7 @@ -import { TSLintConfiguration } from "../input/findTSLintConfiguration"; -import { RuleConversionResults } from "../rules/convertRules"; -import { ESLintRuleOptions } from "../rules/types"; +import { TSLintConfiguration } from "../../input/findTSLintConfiguration"; import { formatMissingRules } from "./formatMissingRules"; +import { RuleConversionResults } from "./rules/convertRules"; +import { ESLintRuleOptions } from "./rules/types"; export const formatConvertedRules = ( conversionResults: RuleConversionResults, diff --git a/src/creation/formatMissingRules.test.ts b/src/converters/lintConfigs/formatMissingRules.test.ts similarity index 98% rename from src/creation/formatMissingRules.test.ts rename to src/converters/lintConfigs/formatMissingRules.test.ts index cef22e7ae..d1569ce92 100644 --- a/src/creation/formatMissingRules.test.ts +++ b/src/converters/lintConfigs/formatMissingRules.test.ts @@ -1,5 +1,5 @@ import { formatMissingRules } from "./formatMissingRules"; -import { TSLintRuleOptions } from "../rules/types"; +import { TSLintRuleOptions } from "./rules/types"; describe("formatMissingRules", () => { it("prints a rule's arguments as true when it has none", () => { diff --git a/src/creation/formatMissingRules.ts b/src/converters/lintConfigs/formatMissingRules.ts similarity index 92% rename from src/creation/formatMissingRules.ts rename to src/converters/lintConfigs/formatMissingRules.ts index aab1c49dd..b1f686953 100644 --- a/src/creation/formatMissingRules.ts +++ b/src/converters/lintConfigs/formatMissingRules.ts @@ -1,4 +1,4 @@ -import { TSLintRuleOptions } from "../rules/types"; +import { TSLintRuleOptions } from "./rules/types"; export const formatMissingRules = (missing: TSLintRuleOptions[], rulesDirectory: string[] = []) => { const rules: Record = {}; diff --git a/src/creation/formatting/formatOutput.test.ts b/src/converters/lintConfigs/formatting/formatOutput.test.ts similarity index 100% rename from src/creation/formatting/formatOutput.test.ts rename to src/converters/lintConfigs/formatting/formatOutput.test.ts diff --git a/src/creation/formatting/formatOutput.ts b/src/converters/lintConfigs/formatting/formatOutput.ts similarity index 100% rename from src/creation/formatting/formatOutput.ts rename to src/converters/lintConfigs/formatting/formatOutput.ts diff --git a/src/creation/formatting/formatters/faqs.ts b/src/converters/lintConfigs/formatting/formatters/faqs.ts similarity index 100% rename from src/creation/formatting/formatters/faqs.ts rename to src/converters/lintConfigs/formatting/formatters/faqs.ts diff --git a/src/creation/formatting/formatters/formatJsOutput.ts b/src/converters/lintConfigs/formatting/formatters/formatJsOutput.ts similarity index 100% rename from src/creation/formatting/formatters/formatJsOutput.ts rename to src/converters/lintConfigs/formatting/formatters/formatJsOutput.ts diff --git a/src/creation/formatting/formatters/formatJsonOutput.ts b/src/converters/lintConfigs/formatting/formatters/formatJsonOutput.ts similarity index 100% rename from src/creation/formatting/formatters/formatJsonOutput.ts rename to src/converters/lintConfigs/formatting/formatters/formatJsonOutput.ts diff --git a/src/creation/formatting/formatters/withKeysSorted.ts b/src/converters/lintConfigs/formatting/formatters/withKeysSorted.ts similarity index 100% rename from src/creation/formatting/formatters/withKeysSorted.ts rename to src/converters/lintConfigs/formatting/formatters/withKeysSorted.ts diff --git a/src/creation/pruning/normalizeExtensions.test.ts b/src/converters/lintConfigs/pruning/normalizeExtensions.test.ts similarity index 95% rename from src/creation/pruning/normalizeExtensions.test.ts rename to src/converters/lintConfigs/pruning/normalizeExtensions.test.ts index 93839ff8b..43123e88a 100644 --- a/src/creation/pruning/normalizeExtensions.test.ts +++ b/src/converters/lintConfigs/pruning/normalizeExtensions.test.ts @@ -1,5 +1,5 @@ +import { ESLintConfigurationRuleValue } from "../../../input/findESLintConfiguration"; import { normalizeExtensions } from "./normalizeExtensions"; -import { ESLintConfigurationRuleValue } from "../../input/findESLintConfiguration"; const createStubExtension = (ruleName: string, ruleValue: ESLintConfigurationRuleValue) => { return { diff --git a/src/creation/pruning/normalizeExtensions.ts b/src/converters/lintConfigs/pruning/normalizeExtensions.ts similarity index 90% rename from src/creation/pruning/normalizeExtensions.ts rename to src/converters/lintConfigs/pruning/normalizeExtensions.ts index f3a22b4f0..517e3da26 100644 --- a/src/creation/pruning/normalizeExtensions.ts +++ b/src/converters/lintConfigs/pruning/normalizeExtensions.ts @@ -1,8 +1,8 @@ import { ESLintConfiguration, ESLintConfigurationRuleValue, -} from "../../input/findESLintConfiguration"; -import { ESLintRuleOptionsWithArguments } from "../../rules/types"; +} from "../../../input/findESLintConfiguration"; +import { ESLintRuleOptionsWithArguments } from "../rules/types"; import { normalizeRawESLintRuleSeverity } from "./normalizeRawESLintRuleSeverity"; export const normalizeExtensions = (extensions: Partial[]) => { diff --git a/src/creation/pruning/normalizeRawESLintRuleSeverity.test.ts b/src/converters/lintConfigs/pruning/normalizeRawESLintRuleSeverity.test.ts similarity index 100% rename from src/creation/pruning/normalizeRawESLintRuleSeverity.test.ts rename to src/converters/lintConfigs/pruning/normalizeRawESLintRuleSeverity.test.ts diff --git a/src/creation/pruning/normalizeRawESLintRuleSeverity.ts b/src/converters/lintConfigs/pruning/normalizeRawESLintRuleSeverity.ts similarity index 80% rename from src/creation/pruning/normalizeRawESLintRuleSeverity.ts rename to src/converters/lintConfigs/pruning/normalizeRawESLintRuleSeverity.ts index a3063b5bd..90202881e 100644 --- a/src/creation/pruning/normalizeRawESLintRuleSeverity.ts +++ b/src/converters/lintConfigs/pruning/normalizeRawESLintRuleSeverity.ts @@ -1,4 +1,4 @@ -import { ESLintRuleSeverity, RawESLintRuleSeverity } from "../../rules/types"; +import { RawESLintRuleSeverity, ESLintRuleSeverity } from "../rules/types"; export const normalizeRawESLintRuleSeverity = ( rawSeverity: RawESLintRuleSeverity, diff --git a/src/creation/pruning/removeExtendsDuplicatedRules.test.ts b/src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.test.ts similarity index 99% rename from src/creation/pruning/removeExtendsDuplicatedRules.test.ts rename to src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.test.ts index 37f2ae750..35669984a 100644 --- a/src/creation/pruning/removeExtendsDuplicatedRules.test.ts +++ b/src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.test.ts @@ -1,4 +1,4 @@ -import { ESLintRuleOptions, ESLintRuleOptionsWithArguments } from "../../rules/types"; +import { ESLintRuleOptions, ESLintRuleOptionsWithArguments } from "../rules/types"; import { removeExtendsDuplicatedRules } from "./removeExtendsDuplicatedRules"; const prepareTestRule = ( diff --git a/src/creation/pruning/removeExtendsDuplicatedRules.ts b/src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.ts similarity index 97% rename from src/creation/pruning/removeExtendsDuplicatedRules.ts rename to src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.ts index 9e7618f74..cb26a9f64 100644 --- a/src/creation/pruning/removeExtendsDuplicatedRules.ts +++ b/src/converters/lintConfigs/pruning/removeExtendsDuplicatedRules.ts @@ -1,6 +1,6 @@ import { isDeepStrictEqual } from "util"; -import { ESLintRuleOptions, ESLintRuleOptionsWithArguments } from "../../rules/types"; +import { ESLintRuleOptions, ESLintRuleOptionsWithArguments } from "../rules/types"; /** * Finds only the ESLint rules configured differently than their (extended) configurations. diff --git a/src/reporting/packages/choosePackageManager.test.ts b/src/converters/lintConfigs/reporting/packages/choosePackageManager.test.ts similarity index 100% rename from src/reporting/packages/choosePackageManager.test.ts rename to src/converters/lintConfigs/reporting/packages/choosePackageManager.test.ts diff --git a/src/reporting/packages/choosePackageManager.ts b/src/converters/lintConfigs/reporting/packages/choosePackageManager.ts similarity index 88% rename from src/reporting/packages/choosePackageManager.ts rename to src/converters/lintConfigs/reporting/packages/choosePackageManager.ts index 92aaa9e85..afd04e906 100644 --- a/src/reporting/packages/choosePackageManager.ts +++ b/src/converters/lintConfigs/reporting/packages/choosePackageManager.ts @@ -1,4 +1,4 @@ -import { FileSystem } from "../../adapters/fileSystem"; +import { FileSystem } from "../../../../adapters/fileSystem"; import { preferredLockfiles, PackageManager } from "./packageManagers"; export type ChoosePackageManagerDependencies = { diff --git a/src/reporting/packages/logMissingPackages.test.ts b/src/converters/lintConfigs/reporting/packages/logMissingPackages.test.ts similarity index 87% rename from src/reporting/packages/logMissingPackages.test.ts rename to src/converters/lintConfigs/reporting/packages/logMissingPackages.test.ts index 670c28cd8..e272ddf63 100644 --- a/src/reporting/packages/logMissingPackages.test.ts +++ b/src/converters/lintConfigs/reporting/packages/logMissingPackages.test.ts @@ -1,5 +1,5 @@ -import { createStubLogger, expectEqualWrites } from "../../adapters/logger.stubs"; -import { createEmptyConversionResults } from "../../conversion/conversionResults.stubs"; +import { createStubLogger, expectEqualWrites } from "../../../../adapters/logger.stubs"; +import { createEmptyConfigConversionResults } from "../../configConversionResults.stubs"; import { logMissingPackages } from "./logMissingPackages"; import { PackageManager } from "./packageManagers"; @@ -12,7 +12,7 @@ describe("logMissingPackages", () => { it("does nothing when no package are missing", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.npm); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults, { @@ -31,7 +31,7 @@ describe("logMissingPackages", () => { it("reports a singular message when one package is missing", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.npm); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults, { @@ -53,7 +53,7 @@ describe("logMissingPackages", () => { it("does not include eslint-config-prettier when extensions don't include eslint-config-prettier", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(); - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ extends: [], }); @@ -71,7 +71,7 @@ describe("logMissingPackages", () => { it("includes eslint-config-prettier when extensions include eslint-config-prettier", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(); - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ extends: ["prettier"], }); @@ -89,7 +89,7 @@ describe("logMissingPackages", () => { it("includes @typescript-eslint/eslint-plugin-tslint when there are missing conversions", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(); - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ missing: [ { ruleArguments: [], @@ -113,7 +113,7 @@ describe("logMissingPackages", () => { it("reports an npm command when the package manager is npm", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.npm); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults); @@ -129,7 +129,7 @@ describe("logMissingPackages", () => { it("reports a pnpm command when the package manager is pnpm", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.pnpm); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults); @@ -145,7 +145,7 @@ describe("logMissingPackages", () => { it("reports a Yarn command when the package manager is Yarn", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.Yarn); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults); @@ -161,7 +161,7 @@ describe("logMissingPackages", () => { it("reports a Yarn command when the package manager is Yarn", async () => { // Arrange const { choosePackageManager, logger } = createStubDependencies(PackageManager.Yarn); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act await logMissingPackages({ choosePackageManager, logger }, ruleConversionResults); diff --git a/src/reporting/packages/logMissingPackages.ts b/src/converters/lintConfigs/reporting/packages/logMissingPackages.ts similarity index 78% rename from src/reporting/packages/logMissingPackages.ts rename to src/converters/lintConfigs/reporting/packages/logMissingPackages.ts index 38b93e0ae..122bad849 100644 --- a/src/reporting/packages/logMissingPackages.ts +++ b/src/converters/lintConfigs/reporting/packages/logMissingPackages.ts @@ -1,13 +1,13 @@ import chalk from "chalk"; import { EOL } from "os"; -import { Logger } from "../../adapters/logger"; -import { SansDependencies } from "../../binding"; -import { SummarizedResultsConfiguration } from "../../creation/summarization/types"; -import { PackagesConfiguration } from "../../input/findPackagesConfiguration"; -import { isTruthy } from "../../utils"; -import { installationMessages } from "../packages/packageManagers"; +import { Logger } from "../../../../adapters/logger"; +import { SansDependencies } from "../../../../binding"; +import { PackagesConfiguration } from "../../../../input/findPackagesConfiguration"; +import { isTruthy } from "../../../../utils"; +import { SummarizedConfigResultsConfiguration } from "../../summarization/types"; import { choosePackageManager } from "./choosePackageManager"; +import { installationMessages } from "./packageManagers"; export type LogMissingPackagesDependencies = { choosePackageManager: SansDependencies; @@ -16,7 +16,10 @@ export type LogMissingPackagesDependencies = { export const logMissingPackages = async ( dependencies: LogMissingPackagesDependencies, - ruleConversionResults: Pick, + ruleConversionResults: Pick< + SummarizedConfigResultsConfiguration, + "extends" | "missing" | "plugins" + >, packageConfiguration?: PackagesConfiguration, ) => { const packageManager = await dependencies.choosePackageManager(); diff --git a/src/reporting/packages/packageManagers.ts b/src/converters/lintConfigs/reporting/packages/packageManagers.ts similarity index 100% rename from src/reporting/packages/packageManagers.ts rename to src/converters/lintConfigs/reporting/packages/packageManagers.ts diff --git a/src/reporting/reportConversionResults.test.ts b/src/converters/lintConfigs/reporting/reportConfigConversionResults.test.ts similarity index 82% rename from src/reporting/reportConversionResults.test.ts rename to src/converters/lintConfigs/reporting/reportConfigConversionResults.test.ts index 92ccf77a9..931206043 100644 --- a/src/reporting/reportConversionResults.test.ts +++ b/src/converters/lintConfigs/reporting/reportConfigConversionResults.test.ts @@ -1,17 +1,17 @@ import { EOL } from "os"; -import { createStubLogger, expectEqualWrites } from "../adapters/logger.stubs"; -import { createEmptyConversionResults } from "../conversion/conversionResults.stubs"; +import { createStubLogger, expectEqualWrites } from "../../../adapters/logger.stubs"; +import { createEmptyConfigConversionResults } from "../configConversionResults.stubs"; import { ESLintRuleOptions } from "../rules/types"; -import { reportConversionResults } from "./reportConversionResults"; +import { reportConfigConversionResults } from "./reportConfigConversionResults"; const basicExtends = ["prettier", "prettier/@typescript-eslint"]; -describe("reportConversionResults", () => { +describe("reportConfigConversionResults", () => { it("logs a successful conversion without notices when there is one converted rule without notices", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ converted: new Map([ [ `tslint-rule-one`, @@ -26,7 +26,7 @@ describe("reportConversionResults", () => { }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites(logger.stdout.write, `✨ 1 rule replaced with its ESLint equivalent. ✨`); @@ -35,7 +35,7 @@ describe("reportConversionResults", () => { it("logs a successful conversion with notices when there is one converted rule with notices", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ converted: new Map([ [ `tslint-rule-one`, @@ -51,7 +51,7 @@ describe("reportConversionResults", () => { }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -72,7 +72,7 @@ describe("reportConversionResults", () => { it("logs successful conversions when there are multiple converted rules", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ converted: new Map([ [ `tslint-rule-one`, @@ -97,7 +97,7 @@ describe("reportConversionResults", () => { }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -122,13 +122,13 @@ describe("reportConversionResults", () => { it("logs a failed conversion when there is one failed conversion", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ failed: [{ getSummary: () => "It broke." }], extends: basicExtends, }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -141,13 +141,13 @@ describe("reportConversionResults", () => { it("logs failed conversions when there are multiple failed conversions", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ extends: basicExtends, failed: [{ getSummary: () => "It broke." }, { getSummary: () => "It really broke." }], }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -160,7 +160,7 @@ describe("reportConversionResults", () => { it("logs a missing rule when there is a missing rule", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ extends: basicExtends, missing: [ { @@ -172,7 +172,7 @@ describe("reportConversionResults", () => { }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -191,7 +191,7 @@ describe("reportConversionResults", () => { it("logs missing rules when there are missing rules", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ extends: basicExtends, missing: [ { @@ -208,7 +208,7 @@ describe("reportConversionResults", () => { }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( @@ -228,12 +228,12 @@ describe("reportConversionResults", () => { it("logs a Prettier recommendation when extends doesn't include eslint-config-prettier", async () => { // Arrange const logger = createStubLogger(); - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ extends: [], }); // Act - await reportConversionResults({ logger }, ".eslintrc.js", conversionResults); + await reportConfigConversionResults({ logger }, ".eslintrc.js", conversionResults); // Assert expectEqualWrites( diff --git a/src/reporting/reportConversionResults.ts b/src/converters/lintConfigs/reporting/reportConfigConversionResults.ts similarity index 90% rename from src/reporting/reportConversionResults.ts rename to src/converters/lintConfigs/reporting/reportConfigConversionResults.ts index 29926dc19..d60613379 100644 --- a/src/reporting/reportConversionResults.ts +++ b/src/converters/lintConfigs/reporting/reportConfigConversionResults.ts @@ -1,23 +1,23 @@ import chalk from "chalk"; import { EOL } from "os"; -import { Logger } from "../adapters/logger"; -import { SummarizedResultsConfiguration } from "../creation/summarization/types"; -import { ESLintRuleOptions, TSLintRuleOptions } from "../rules/types"; +import { Logger } from "../../../adapters/logger"; import { + logSuccessfulConversions, logFailedConversions, logMissingConversionTarget, - logSuccessfulConversions, -} from "./reportOutputs"; +} from "../../../reporting"; +import { TSLintRuleOptions, ESLintRuleOptions } from "../rules/types"; +import { SummarizedConfigResultsConfiguration } from "../summarization/types"; export type ReportConversionResultsDependencies = { logger: Logger; }; -export const reportConversionResults = async ( +export const reportConfigConversionResults = async ( dependencies: ReportConversionResultsDependencies, outputPath: string, - ruleConversionResults: SummarizedResultsConfiguration, + ruleConversionResults: SummarizedConfigResultsConfiguration, ) => { if (ruleConversionResults.converted.size !== 0) { logSuccessfulConversions("rule", ruleConversionResults.converted, dependencies.logger); diff --git a/src/rules/convertRule.test.ts b/src/converters/lintConfigs/rules/convertRule.test.ts similarity index 94% rename from src/rules/convertRule.test.ts rename to src/converters/lintConfigs/rules/convertRule.test.ts index e4564b49f..baea97e42 100644 --- a/src/rules/convertRule.test.ts +++ b/src/converters/lintConfigs/rules/convertRule.test.ts @@ -1,6 +1,6 @@ -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../../errors/conversionError"; import { convertRule } from "./convertRule"; -import { RuleConverter } from "./converter"; +import { RuleConverter } from "./ruleConverter"; import { TSLintRuleOptions } from "./types"; describe("convertRule", () => { diff --git a/src/rules/convertRule.ts b/src/converters/lintConfigs/rules/convertRule.ts similarity index 78% rename from src/rules/convertRule.ts rename to src/converters/lintConfigs/rules/convertRule.ts index a88d0dd3a..93e339eb4 100644 --- a/src/rules/convertRule.ts +++ b/src/converters/lintConfigs/rules/convertRule.ts @@ -1,5 +1,5 @@ -import { ConversionError } from "../errors/conversionError"; -import { RuleConverter } from "./converter"; +import { ConversionError } from "../../../errors/conversionError"; +import { RuleConverter } from "./ruleConverter"; import { TSLintRuleOptions } from "./types"; export const convertRule = ( diff --git a/src/rules/convertRules.test.ts b/src/converters/lintConfigs/rules/convertRules.test.ts similarity index 85% rename from src/rules/convertRules.test.ts rename to src/converters/lintConfigs/rules/convertRules.test.ts index 1d220118c..1c9a21637 100644 --- a/src/rules/convertRules.test.ts +++ b/src/converters/lintConfigs/rules/convertRules.test.ts @@ -1,8 +1,8 @@ -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../../errors/conversionError"; import { convertRules } from "./convertRules"; +import { RuleMerger } from "./ruleMerger"; +import { RuleConverter, ConversionResult } from "./ruleConverter"; import { TSLintRuleOptions, TSLintRuleSeverity } from "./types"; -import { RuleConverter, ConversionResult } from "./converter"; -import { RuleMerger } from "./merger"; describe("convertRules", () => { it("doesn't crash when passed an undefined configuration", () => { @@ -12,7 +12,11 @@ describe("convertRules", () => { }); // Act - const { missing } = convertRules({ converters, mergers }, undefined); + const { missing } = convertRules( + { ruleConverters: converters, ruleMergers: mergers }, + undefined, + new Map(), + ); // Assert expect(missing).toEqual([]); @@ -26,8 +30,9 @@ describe("convertRules", () => { // Act const { missing } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -40,8 +45,9 @@ describe("convertRules", () => { // Act const { missing } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -56,8 +62,9 @@ describe("convertRules", () => { // Act const { failed } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -76,11 +83,13 @@ describe("convertRules", () => { const { tslintRule, converters, mergers } = setupConversionEnvironment({ conversionResult, }); + const ruleEquivalents = new Map(); // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + ruleEquivalents, ); // Assert @@ -95,6 +104,7 @@ describe("convertRules", () => { ], ]), ); + expect(ruleEquivalents).toEqual(new Map([["tslint-rule-a", ["eslint-rule-a"]]])); }); it("reports a failure when two outputs exist for a converted rule without a merger", () => { @@ -115,15 +125,16 @@ describe("convertRules", () => { // Act const { failed } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert expect(failed).toEqual([ConversionError.forMerger("eslint-rule-a")]); }); - it("merges rule arguments two outputs exist for a converted rule with a merger", () => { + it("merges rule arguments when two outputs exist for a converted rule with a merger", () => { // Arrange const conversionResult = { rules: [ @@ -142,8 +153,9 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -183,8 +195,9 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -224,8 +237,9 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -256,8 +270,9 @@ describe("convertRules", () => { // Act const { plugins } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert diff --git a/src/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts similarity index 68% rename from src/rules/convertRules.ts rename to src/converters/lintConfigs/rules/convertRules.ts index 0df35708f..99e568fe5 100644 --- a/src/rules/convertRules.ts +++ b/src/converters/lintConfigs/rules/convertRules.ts @@ -1,16 +1,16 @@ -import { ConversionError } from "../errors/conversionError"; -import { ErrorSummary } from "../errors/errorSummary"; -import { TSLintConfigurationRules } from "../input/findTSLintConfiguration"; -import { RuleConverter } from "./converter"; +import { ConversionError } from "../../../errors/conversionError"; +import { ErrorSummary } from "../../../errors/errorSummary"; +import { TSLintConfigurationRules } from "../../../input/findTSLintConfiguration"; import { convertRule } from "./convertRule"; import { convertTSLintRuleSeverity } from "./formats/convertTSLintRuleSeverity"; import { formatRawTslintRule } from "./formats/formatRawTslintRule"; -import { RuleMerger } from "./merger"; +import { RuleMerger } from "./ruleMerger"; +import { RuleConverter } from "./ruleConverter"; import { TSLintRuleOptions, ESLintRuleOptions } from "./types"; export type ConvertRulesDependencies = { - converters: Map; - mergers: Map; + ruleConverters: Map; + ruleMergers: Map; }; export type RuleConversionResults = { @@ -21,21 +21,29 @@ export type RuleConversionResults = { ruleEquivalents: Map; }; +/** + * Converts raw TSLint rules to their ESLint equivalents. + * @see `/docs/Architecture/Linting.md` for documentation. + */ export const convertRules = ( dependencies: ConvertRulesDependencies, - rawTslintRules?: TSLintConfigurationRules, + rawTslintRules: TSLintConfigurationRules | undefined, + ruleEquivalents: Map, ): RuleConversionResults => { const converted = new Map(); const failed: ConversionError[] = []; const missing: TSLintRuleOptions[] = []; const plugins = new Set(); - const ruleEquivalents = new Map(); if (rawTslintRules !== undefined) { for (const [ruleName, value] of Object.entries(rawTslintRules)) { + // 1. The raw TSLint rule is converted to a standardized format. const tslintRule = formatRawTslintRule(ruleName, value); - const conversion = convertRule(tslintRule, dependencies.converters); + // 2. The appropriate converter is run for the rule. + const conversion = convertRule(tslintRule, dependencies.ruleConverters); + + // 3. If the rule is missing or the conversion failed, this is marked. if (conversion === undefined) { if (tslintRule.ruleSeverity !== "off") { missing.push(tslintRule); @@ -51,21 +59,26 @@ export const convertRules = ( const equivalents = new Set(); + // 4. For each output rule equivalent given by the conversion: for (const changes of conversion.rules) { + // 4a. The output rule name is added to the TSLint rule's equivalency set. equivalents.add(changes.ruleName); + // 4b. The TSLint rule's config severity is mapped to its ESLint equivalent. const existingConversion = converted.get(changes.ruleName); const newConversion = { ...changes, ruleSeverity: convertTSLintRuleSeverity(tslintRule.ruleSeverity), }; + // 4c. If this is the first time the output ESLint rule is seen, it's directly marked as converted. if (existingConversion === undefined) { converted.set(changes.ruleName, newConversion); continue; } - const merger = dependencies.mergers.get(changes.ruleName); + // 4d. If not, a rule merger is run to combine it with its existing output settings. + const merger = dependencies.ruleMergers.get(changes.ruleName); if (merger === undefined) { failed.push(ConversionError.forMerger(changes.ruleName)); } else { @@ -92,5 +105,6 @@ export const convertRules = ( ruleEquivalents.set(tslintRule.ruleName, Array.from(equivalents)); } } + return { converted, failed, missing, plugins, ruleEquivalents }; }; diff --git a/src/rules/formatRawTslintRule.test.ts b/src/converters/lintConfigs/rules/formatRawTslintRule.test.ts similarity index 100% rename from src/rules/formatRawTslintRule.test.ts rename to src/converters/lintConfigs/rules/formatRawTslintRule.test.ts diff --git a/src/rules/formats/convertTSLintRuleSeverity.test.ts b/src/converters/lintConfigs/rules/formats/convertTSLintRuleSeverity.test.ts similarity index 100% rename from src/rules/formats/convertTSLintRuleSeverity.test.ts rename to src/converters/lintConfigs/rules/formats/convertTSLintRuleSeverity.test.ts diff --git a/src/rules/formats/convertTSLintRuleSeverity.ts b/src/converters/lintConfigs/rules/formats/convertTSLintRuleSeverity.ts similarity index 100% rename from src/rules/formats/convertTSLintRuleSeverity.ts rename to src/converters/lintConfigs/rules/formats/convertTSLintRuleSeverity.ts diff --git a/src/rules/formats/formatRawTslintRule.ts b/src/converters/lintConfigs/rules/formats/formatRawTslintRule.ts similarity index 100% rename from src/rules/formats/formatRawTslintRule.ts rename to src/converters/lintConfigs/rules/formats/formatRawTslintRule.ts diff --git a/src/rules/converter.stubs.ts b/src/converters/lintConfigs/rules/ruleConverter.stubs.ts similarity index 80% rename from src/rules/converter.stubs.ts rename to src/converters/lintConfigs/rules/ruleConverter.stubs.ts index 587c42d20..ed16c2e57 100644 --- a/src/rules/converter.stubs.ts +++ b/src/converters/lintConfigs/rules/ruleConverter.stubs.ts @@ -1,4 +1,4 @@ -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../../errors/conversionError"; export const createStubConverter = (result: ConversionError | string[]) => { return () => { diff --git a/src/rules/converter.ts b/src/converters/lintConfigs/rules/ruleConverter.ts similarity index 94% rename from src/rules/converter.ts rename to src/converters/lintConfigs/rules/ruleConverter.ts index e86f88e97..aab353f53 100644 --- a/src/rules/converter.ts +++ b/src/converters/lintConfigs/rules/ruleConverter.ts @@ -1,5 +1,5 @@ import { TSLintRuleOptions } from "./types"; -import { ConversionError } from "../errors/conversionError"; +import { ConversionError } from "../../../errors/conversionError"; /** * Section of a TSLint rule's options used for conversion. diff --git a/src/converters/lintConfigs/rules/ruleConverters.ts b/src/converters/lintConfigs/rules/ruleConverters.ts new file mode 100644 index 000000000..37010c5cd --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters.ts @@ -0,0 +1,382 @@ +import { convertAdjacentOverloadSignatures } from "./ruleConverters/adjacent-overload-signatures"; +import { convertAlign } from "./ruleConverters/align"; +import { convertArrayType } from "./ruleConverters/array-type"; +import { convertArrowParens } from "./ruleConverters/arrow-parens"; +import { convertArrowReturnShorthand } from "./ruleConverters/arrow-return-shorthand"; +import { convertAwaitPromise } from "./ruleConverters/await-promise"; +import { convertBanCommaOperator } from "./ruleConverters/ban-comma-operator"; +import { convertBanTsIgnore } from "./ruleConverters/ban-ts-ignore"; +import { convertBanTypes } from "./ruleConverters/ban-types"; +import { convertBinaryExpressionOperandOrder } from "./ruleConverters/binary-expression-operand-order"; +import { convertCallableTypes } from "./ruleConverters/callable-types"; +import { convertClassName } from "./ruleConverters/class-name"; +import { convertCommentFormat } from "./ruleConverters/comment-format"; +import { convertCurly } from "./ruleConverters/curly"; +import { convertCyclomaticComplexity } from "./ruleConverters/cyclomatic-complexity"; +import { convertDeprecation } from "./ruleConverters/deprecation"; +import { convertEofline } from "./ruleConverters/eofline"; +import { convertFileNameCasing } from "./ruleConverters/file-name-casing"; +import { convertForin } from "./ruleConverters/forin"; +import { convertFunctionConstructor } from "./ruleConverters/function-constructor"; +import { convertImportBlacklist } from "./ruleConverters/import-blacklist"; +import { convertIncrementDecrement } from "./ruleConverters/increment-decrement"; +import { convertIndent } from "./ruleConverters/indent"; +import { convertInterfaceName } from "./ruleConverters/interface-name"; +import { convertInterfaceOverTypeLiteral } from "./ruleConverters/interface-over-type-literal"; +import { convertJSDocFormat } from "./ruleConverters/jsdoc-format"; +import { convertLabelPosition } from "./ruleConverters/label-position"; +import { convertLinebreakStyle } from "./ruleConverters/linebreak-style"; +import { convertMaxClassesPerFile } from "./ruleConverters/max-classes-per-file"; +import { convertMaxFileLineCount } from "./ruleConverters/max-file-line-count"; +import { convertMaxLineLength } from "./ruleConverters/max-line-length"; +import { convertMemberAccess } from "./ruleConverters/member-access"; +import { convertMemberOrdering } from "./ruleConverters/member-ordering"; +import { convertNewlineBeforeReturn } from "./ruleConverters/newline-before-return"; +import { convertNewlinePerChainedCall } from "./ruleConverters/newline-per-chained-call"; +import { convertNewParens } from "./ruleConverters/new-parens"; +import { convertNoAngleBracketTypeAssertion } from "./ruleConverters/no-angle-bracket-type-assertion"; +import { convertNoArg } from "./ruleConverters/no-arg"; +import { convertNoAsyncWithoutAwait } from "./ruleConverters/no-async-without-await"; +import { convertNoBannedTerms } from "./ruleConverters/no-banned-terms"; +import { convertNoBitwise } from "./ruleConverters/no-bitwise"; +import { convertNoBooleanLiteralCompare } from "./ruleConverters/no-boolean-literal-compare"; +import { convertNoConditionalAssignment } from "./ruleConverters/no-conditional-assignment"; +import { convertNoConsecutiveBlankLines } from "./ruleConverters/no-consecutive-blank-lines"; +import { convertNoConsole } from "./ruleConverters/no-console"; +import { convertNoConstantCondition } from "./ruleConverters/no-constant-condition"; +import { convertNoConstruct } from "./ruleConverters/no-construct"; +import { convertNoControlRegex } from "./ruleConverters/no-control-regex"; +import { convertNoDebugger } from "./ruleConverters/no-debugger"; +import { convertNoDefaultExport } from "./ruleConverters/no-default-export"; +import { convertNoDuplicateImports } from "./ruleConverters/no-duplicate-imports"; +import { convertNoDuplicateSuper } from "./ruleConverters/no-duplicate-super"; +import { convertNoDuplicateSwitchCase } from "./ruleConverters/no-duplicate-switch-case"; +import { convertNoDuplicateVariable } from "./ruleConverters/no-duplicate-variable"; +import { convertNoEmpty } from "./ruleConverters/no-empty"; +import { convertNoEmptyInterface } from "./ruleConverters/no-empty-interface"; +import { convertNoEval } from "./ruleConverters/no-eval"; +import { convertNoExplicitAny } from "./ruleConverters/no-explicit-any"; +import { convertNoFloatingPromises } from "./ruleConverters/no-floating-promises"; +import { convertNoForIn } from "./ruleConverters/no-for-in"; +import { convertNoForInArray } from "./ruleConverters/no-for-in-array"; +import { convertNoImplicitDependencies } from "./ruleConverters/no-implicit-dependencies"; +import { convertNoImportSideEffect } from "./ruleConverters/no-import-side-effect"; +import { convertNoInferrableTypes } from "./ruleConverters/no-inferrable-types"; +import { convertNoInternalModule } from "./ruleConverters/no-internal-module"; +import { convertNoInvalidRegexp } from "./ruleConverters/no-invalid-regexp"; +import { convertNoInvalidTemplateStrings } from "./ruleConverters/no-invalid-template-strings"; +import { convertNoInvalidThis } from "./ruleConverters/no-invalid-this"; +import { convertNoIrregularWhitespace } from "./ruleConverters/no-irregular-whitespace"; +import { convertNoMagicNumbers } from "./ruleConverters/no-magic-numbers"; +import { convertNoMisusedNew } from "./ruleConverters/no-misused-new"; +import { convertNoMultilineString } from "./ruleConverters/no-multiline-string"; +import { convertNoNamespace } from "./ruleConverters/no-namespace"; +import { convertNoNonNullAssertion } from "./ruleConverters/no-non-null-assertion"; +import { convertNoNullKeyword } from "./ruleConverters/no-null-keyword"; +import { convertNoObjectLiteralTypeAssertion } from "./ruleConverters/no-object-literal-type-assertion"; +import { convertNoOctalLiteral } from "./ruleConverters/no-octal-literal"; +import { convertNoParameterProperties } from "./ruleConverters/no-parameter-properties"; +import { convertNoParameterReassignment } from "./ruleConverters/no-parameter-reassignment"; +import { convertNoRedundantJsdoc } from "./ruleConverters/no-redundant-jsdoc"; +import { convertNoReference } from "./ruleConverters/no-reference"; +import { convertNoReferenceImport } from "./ruleConverters/no-reference-import"; +import { convertNoRegexSpaces } from "./ruleConverters/no-regex-spaces"; +import { convertNoRequireImports } from "./ruleConverters/no-require-imports"; +import { convertNoReturnAwait } from "./ruleConverters/no-return-await"; +import { convertNoShadowedVariable } from "./ruleConverters/no-shadowed-variable"; +import { convertNoSparseArrays } from "./ruleConverters/no-sparse-arrays"; +import { convertNoStringLiteral } from "./ruleConverters/no-string-literal"; +import { convertNoStringThrow } from "./ruleConverters/no-string-throw"; +import { convertNoSubmoduleImports } from "./ruleConverters/no-submodule-imports"; +import { convertNoSwitchCaseFallThrough } from "./ruleConverters/no-switch-case-fall-through"; +import { convertNoThisAssignment } from "./ruleConverters/no-this-assignment"; +import { convertNoTrailingWhitespace } from "./ruleConverters/no-trailing-whitespace"; +import { convertNoUnboundMethod } from "./ruleConverters/no-unbound-method"; +import { convertNoUnnecessaryClass } from "./ruleConverters/no-unnecessary-class"; +import { convertNoUnnecessaryInitializer } from "./ruleConverters/no-unnecessary-initializer"; +import { convertNoUnnecessaryQualifier } from "./ruleConverters/no-unnecessary-qualifier"; +import { convertNoUnnecessarySemicolons } from "./ruleConverters/no-unnecessary-semicolons"; +import { convertNoUnnecessaryTypeAssertion } from "./ruleConverters/no-unnecessary-type-assertion"; +import { convertNoUnsafeFinally } from "./ruleConverters/no-unsafe-finally"; +import { convertNoUnusedExpression } from "./ruleConverters/no-unused-expression"; +import { convertNoUnusedVariable } from "./ruleConverters/no-unused-variable"; +import { convertNoUseBeforeDeclare } from "./ruleConverters/no-use-before-declare"; +import { convertNoVarKeyword } from "./ruleConverters/no-var-keyword"; +import { convertNoVarRequires } from "./ruleConverters/no-var-requires"; +import { convertNoVoidExpression } from "./ruleConverters/no-void-expression"; +import { convertObjectLiteralKeyQuotes } from "./ruleConverters/object-literal-key-quotes"; +import { convertObjectLiteralShorthand } from "./ruleConverters/object-literal-shorthand"; +import { convertOneLine } from "./ruleConverters/one-line"; +import { convertOneVariablePerDeclaration } from "./ruleConverters/one-variable-per-declaration"; +import { convertOnlyArrowFunctions } from "./ruleConverters/only-arrow-functions"; +import { convertOrderedImports } from "./ruleConverters/ordered-imports"; +import { convertPreferConst } from "./ruleConverters/prefer-const"; +import { convertPreferForOf } from "./ruleConverters/prefer-for-of"; +import { convertPreferFunctionOverMethod } from "./ruleConverters/prefer-function-over-method"; +import { convertPreferObjectSpread } from "./ruleConverters/prefer-object-spread"; +import { convertPreferReadonly } from "./ruleConverters/prefer-readonly"; +import { convertPreferTemplate } from "./ruleConverters/prefer-template"; +import { convertPromiseFunctionAsync } from "./ruleConverters/promise-function-async"; +import { convertQuotemark } from "./ruleConverters/quotemark"; +import { convertRadix } from "./ruleConverters/radix"; +import { convertRestrictPlusOperands } from "./ruleConverters/restrict-plus-operands"; +import { convertSemicolon } from "./ruleConverters/semicolon"; +import { convertSpaceBeforeFunctionParen } from "./ruleConverters/space-before-function-paren"; +import { convertSpaceWithinParens } from "./ruleConverters/space-within-parens"; +import { convertStrictBooleanExpressions } from "./ruleConverters/strict-boolean-expressions"; +import { convertSwitchDefault } from "./ruleConverters/switch-default"; +import { convertTrailingComma } from "./ruleConverters/trailing-comma"; +import { convertTripleEquals } from "./ruleConverters/triple-equals"; +import { convertTypedefWhitespace } from "./ruleConverters/typedef-whitespace"; +import { convertTypeLiteralDelimiter } from "./ruleConverters/type-literal-delimiter"; +import { convertTypeofCompare } from "./ruleConverters/typeof-compare"; +import { convertUnifiedSignatures } from "./ruleConverters/unified-signatures"; +import { convertUnnecessaryBind } from "./ruleConverters/unnecessary-bind"; +import { convertUnnecessaryConstructor } from "./ruleConverters/unnecessary-constructor"; +import { convertUseDefaultTypeParameter } from "./ruleConverters/use-default-type-parameter"; +import { convertUseIsnan } from "./ruleConverters/use-isnan"; +import { convertVariableName } from "./ruleConverters/variable-name"; + +// Codelyzer converters +import { convertComponentClassSuffix } from "./ruleConverters/codelyzer/component-class-suffix"; +import { convertComponentMaxInlineDeclarations } from "./ruleConverters/codelyzer/component-max-inline-declarations"; +import { convertComponentSelector } from "./ruleConverters/codelyzer/component-selector"; +import { convertContextualLifecycle } from "./ruleConverters/codelyzer/contextual-lifecycle"; +import { convertDirectiveClassSuffix } from "./ruleConverters/codelyzer/directive-class-suffix"; +import { convertDirectiveSelector } from "./ruleConverters/codelyzer/directive-selector"; +import { convertNoAttributeDecorator } from "./ruleConverters/codelyzer/no-attribute-decorator"; +import { convertNoConflictingLifecycle } from "./ruleConverters/codelyzer/no-conflicting-lifecycle"; +import { convertNoForwardRef } from "./ruleConverters/codelyzer/no-forward-ref"; +import { convertNoHostMetadataProperty } from "./ruleConverters/codelyzer/no-host-metadata-property"; +import { convertNoInputPrefix } from "./ruleConverters/codelyzer/no-input-prefix"; +import { convertNoInputRename } from "./ruleConverters/codelyzer/no-input-rename"; +import { convertNoInputsMetadataProperty } from "./ruleConverters/codelyzer/no-inputs-metadata-property"; +import { convertNoLifecycleCall } from "./ruleConverters/codelyzer/no-lifecycle-call"; +import { convertNoOutputNative } from "./ruleConverters/codelyzer/no-output-native"; +import { convertNoOutputOnPrefix } from "./ruleConverters/codelyzer/no-output-on-prefix"; +import { convertNoOutputRename } from "./ruleConverters/codelyzer/no-output-rename"; +import { convertNoOutputsMetadataProperty } from "./ruleConverters/codelyzer/no-outputs-metadata-property"; +import { convertNoPipeImpure } from "./ruleConverters/codelyzer/no-pipe-impure"; +import { convertNoQueriesMetadataProperty } from "./ruleConverters/codelyzer/no-queries-metadata-property"; +import { convertPipePrefix } from "./ruleConverters/codelyzer/pipe-prefix"; +import { convertPreferOnPushComponentChangeDetection } from "./ruleConverters/codelyzer/prefer-on-push-component-change-detection"; +import { convertPreferOutputReadonly } from "./ruleConverters/codelyzer/prefer-output-readonly"; +import { convertRelativeUrlPrefix } from "./ruleConverters/codelyzer/relative-url-prefix"; +import { convertTemplateBananaInBox } from "./ruleConverters/codelyzer/template-banana-in-box"; +import { convertTemplateCyclomaticComplexity } from "./ruleConverters/codelyzer/template-cyclomatic-complexity"; +import { convertTemplateNoCallExpression } from "./ruleConverters/codelyzer/template-no-call-expression"; +import { convertTemplateNoNegatedAsync } from "./ruleConverters/codelyzer/template-no-negated-async"; +import { convertUseComponentSelector } from "./ruleConverters/codelyzer/use-component-selector"; +import { convertUseComponentViewEncapsulation } from "./ruleConverters/codelyzer/use-component-view-encapsulation"; +import { convertUseInjectableProvidedIn } from "./ruleConverters/codelyzer/use-injectable-provided-in"; +import { convertUseLifecycleInterface } from "./ruleConverters/codelyzer/use-lifecycle-interface"; +import { convertUsePipeDecorator } from "./ruleConverters/codelyzer/use-pipe-decorator"; +import { convertUsePipeTransformInterface } from "./ruleConverters/codelyzer/use-pipe-transform-interface"; + +// ESLint-React converters +import { convertJsxBooleanValue } from "./ruleConverters/eslint-plugin-react/jsx-boolean-value"; +import { convertJsxCurlySpacing } from "./ruleConverters/eslint-plugin-react/jsx-curly-spacing"; +import { convertJsxEqualsSpacing } from "./ruleConverters/eslint-plugin-react/jsx-equals-spacing"; +import { convertJsxKey } from "./ruleConverters/eslint-plugin-react/jsx-key"; +import { convertJsxNoBind } from "./ruleConverters/eslint-plugin-react/jsx-no-bind"; +import { convertJsxWrapMultiline } from "./ruleConverters/eslint-plugin-react/jsx-wrap-multiline"; + +/** + * Keys TSLint rule names to their ESLint rule converters. + */ +export const ruleConverters = new Map([ + ["adjacent-overload-signatures", convertAdjacentOverloadSignatures], + ["align", convertAlign], + ["array-type", convertArrayType], + ["arrow-parens", convertArrowParens], + ["arrow-return-shorthand", convertArrowReturnShorthand], + ["await-promise", convertAwaitPromise], + ["ban-comma-operator", convertBanCommaOperator], + ["ban-ts-ignore", convertBanTsIgnore], + ["ban-types", convertBanTypes], + ["binary-expression-operand-order", convertBinaryExpressionOperandOrder], + ["callable-types", convertCallableTypes], + ["class-name", convertClassName], + ["comment-format", convertCommentFormat], + ["component-class-suffix", convertComponentClassSuffix], + ["component-max-inline-declarations", convertComponentMaxInlineDeclarations], + ["component-selector", convertComponentSelector], + ["contextual-lifecycle", convertContextualLifecycle], + ["curly", convertCurly], + ["cyclomatic-complexity", convertCyclomaticComplexity], + ["deprecation", convertDeprecation], + ["directive-class-suffix", convertDirectiveClassSuffix], + ["directive-selector", convertDirectiveSelector], + ["eofline", convertEofline], + ["file-name-casing", convertFileNameCasing], + ["forin", convertForin], + ["function-constructor", convertFunctionConstructor], + ["import-blacklist", convertImportBlacklist], + ["increment-decrement", convertIncrementDecrement], + ["indent", convertIndent], + ["interface-name", convertInterfaceName], + ["interface-over-type-literal", convertInterfaceOverTypeLiteral], + ["jsdoc-format", convertJSDocFormat], + ["jsx-boolean-value", convertJsxBooleanValue], + ["jsx-curly-spacing", convertJsxCurlySpacing], + ["jsx-equals-spacing", convertJsxEqualsSpacing], + ["jsx-key", convertJsxKey], + ["jsx-no-bind", convertJsxNoBind], + ["jsx-wrap-multiline", convertJsxWrapMultiline], + ["label-position", convertLabelPosition], + ["linebreak-style", convertLinebreakStyle], + ["max-classes-per-file", convertMaxClassesPerFile], + ["max-file-line-count", convertMaxFileLineCount], + ["max-line-length", convertMaxLineLength], + ["member-access", convertMemberAccess], + ["member-ordering", convertMemberOrdering], + ["new-parens", convertNewParens], + ["newline-before-return", convertNewlineBeforeReturn], + ["newline-per-chained-call", convertNewlinePerChainedCall], + ["no-angle-bracket-type-assertion", convertNoAngleBracketTypeAssertion], + ["no-any", convertNoExplicitAny], + ["no-arg", convertNoArg], + ["no-async-without-await", convertNoAsyncWithoutAwait], + ["no-attribute-decorator", convertNoAttributeDecorator], + ["no-banned-terms", convertNoBannedTerms], + ["no-bitwise", convertNoBitwise], + ["no-boolean-literal-compare", convertNoBooleanLiteralCompare], + ["no-conditional-assignment", convertNoConditionalAssignment], + ["no-conflicting-lifecycle", convertNoConflictingLifecycle], + ["no-consecutive-blank-lines", convertNoConsecutiveBlankLines], + ["no-console", convertNoConsole], + ["no-constant-condition", convertNoConstantCondition], + ["no-construct", convertNoConstruct], + ["no-control-regex", convertNoControlRegex], + ["no-debugger", convertNoDebugger], + ["no-default-export", convertNoDefaultExport], + ["no-duplicate-imports", convertNoDuplicateImports], + ["no-duplicate-super", convertNoDuplicateSuper], + ["no-duplicate-switch-case", convertNoDuplicateSwitchCase], + ["no-duplicate-variable", convertNoDuplicateVariable], + ["no-empty-interface", convertNoEmptyInterface], + ["no-empty", convertNoEmpty], + ["no-eval", convertNoEval], + ["no-floating-promises", convertNoFloatingPromises], + ["no-for-in-array", convertNoForInArray], + ["no-for-in", convertNoForIn], + ["no-forward-ref", convertNoForwardRef], + ["no-host-metadata-property", convertNoHostMetadataProperty], + ["no-implicit-dependencies", convertNoImplicitDependencies], + ["no-import-side-effect", convertNoImportSideEffect], + ["no-inferrable-types", convertNoInferrableTypes], + ["no-input-prefix", convertNoInputPrefix], + ["no-input-rename", convertNoInputRename], + ["no-inputs-metadata-property", convertNoInputsMetadataProperty], + ["no-internal-module", convertNoInternalModule], + ["no-invalid-regexp", convertNoInvalidRegexp], + ["no-invalid-template-strings", convertNoInvalidTemplateStrings], + ["no-invalid-this", convertNoInvalidThis], + ["no-irregular-whitespace", convertNoIrregularWhitespace], + ["no-lifecycle-call", convertNoLifecycleCall], + ["no-magic-numbers", convertNoMagicNumbers], + ["no-misused-new", convertNoMisusedNew], + ["no-multiline-string", convertNoMultilineString], + ["no-namespace", convertNoNamespace], + ["no-non-null-assertion", convertNoNonNullAssertion], + ["no-null-keyword", convertNoNullKeyword], + ["no-object-literal-type-assertion", convertNoObjectLiteralTypeAssertion], + ["no-octal-literal", convertNoOctalLiteral], + ["no-output-native", convertNoOutputNative], + ["no-output-native", convertNoOutputNative], + ["no-output-on-prefix", convertNoOutputOnPrefix], + ["no-output-rename", convertNoOutputRename], + ["no-outputs-metadata-property", convertNoOutputsMetadataProperty], + ["no-parameter-properties", convertNoParameterProperties], + ["no-parameter-reassignment", convertNoParameterReassignment], + ["no-pipe-impure", convertNoPipeImpure], + ["no-queries-metadata-property", convertNoQueriesMetadataProperty], + ["no-redundant-jsdoc", convertNoRedundantJsdoc], + ["no-reference-import", convertNoReferenceImport], + ["no-reference", convertNoReference], + ["no-regex-spaces", convertNoRegexSpaces], + ["no-require-imports", convertNoRequireImports], + ["no-return-await", convertNoReturnAwait], + ["no-shadowed-variable", convertNoShadowedVariable], + ["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], + ["no-unbound-method", convertNoUnboundMethod], + ["no-unnecessary-class", convertNoUnnecessaryClass], + ["no-unnecessary-initializer", convertNoUnnecessaryInitializer], + ["no-unnecessary-qualifier", convertNoUnnecessaryQualifier], + ["no-unnecessary-semicolons", convertNoUnnecessarySemicolons], + ["no-unnecessary-type-assertion", convertNoUnnecessaryTypeAssertion], + ["no-unsafe-finally", convertNoUnsafeFinally], + ["no-unused-expression", convertNoUnusedExpression], + ["no-unused-variable", convertNoUnusedVariable], + ["no-use-before-declare", convertNoUseBeforeDeclare], + ["no-var-keyword", convertNoVarKeyword], + ["no-var-requires", convertNoVarRequires], + ["no-void-expression", convertNoVoidExpression], + ["object-literal-key-quotes", convertObjectLiteralKeyQuotes], + ["object-literal-shorthand", convertObjectLiteralShorthand], + ["one-line", convertOneLine], + ["one-variable-per-declaration", convertOneVariablePerDeclaration], + ["only-arrow-functions", convertOnlyArrowFunctions], + ["ordered-imports", convertOrderedImports], + ["pipe-prefix", convertPipePrefix], + ["prefer-const", convertPreferConst], + ["prefer-for-of", convertPreferForOf], + ["prefer-function-over-method", convertPreferFunctionOverMethod], + ["prefer-object-spread", convertPreferObjectSpread], + ["prefer-on-push-component-change-detection", convertPreferOnPushComponentChangeDetection], + ["prefer-output-readonly", convertPreferOutputReadonly], + ["prefer-readonly", convertPreferReadonly], + ["prefer-template", convertPreferTemplate], + ["promise-function-async", convertPromiseFunctionAsync], + ["quotemark", convertQuotemark], + ["radix", convertRadix], + ["relative-url-prefix", convertRelativeUrlPrefix], + ["restrict-plus-operands", convertRestrictPlusOperands], + ["semicolon", convertSemicolon], + ["space-before-function-paren", convertSpaceBeforeFunctionParen], + ["space-within-parens", convertSpaceWithinParens], + ["strict-boolean-expressions", convertStrictBooleanExpressions], + ["switch-default", convertSwitchDefault], + ["template-banana-in-box", convertTemplateBananaInBox], + ["template-cyclomatic-complexity", convertTemplateCyclomaticComplexity], + ["template-no-call-expression", convertTemplateNoCallExpression], + ["template-no-negated-async", convertTemplateNoNegatedAsync], + ["trailing-comma", convertTrailingComma], + ["triple-equals", convertTripleEquals], + ["type-literal-delimiter", convertTypeLiteralDelimiter], + ["typedef-whitespace", convertTypedefWhitespace], + ["typeof-compare", convertTypeofCompare], + ["unified-signatures", convertUnifiedSignatures], + ["unnecessary-bind", convertUnnecessaryBind], + ["unnecessary-constructor", convertUnnecessaryConstructor], + ["use-component-selector", convertUseComponentSelector], + ["use-component-view-encapsulation", convertUseComponentViewEncapsulation], + ["use-default-type-parameter", convertUseDefaultTypeParameter], + ["use-injectable-provided-in", convertUseInjectableProvidedIn], + ["use-isnan", convertUseIsnan], + ["use-lifecycle-interface", convertUseLifecycleInterface], + ["use-pipe-decorator", convertUsePipeDecorator], + ["use-pipe-transform-interface", convertUsePipeTransformInterface], + ["variable-name", convertVariableName], + + // 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... + // If you're willing to take on that work, that'd be great! Please send PRs! 💖 + // As these are enabled, they should be added in sorted order to the list above. + + // TSLint core rules: + // ["ban", convertBan], // no-restricted-properties + + // tslint-microsoft-contrib rules: + // ["max-func-body-length", convertMaxFuncBodyLength], + // ["no-empty-line-after-opening-brace", convertNoEmptyLineAfterOpeningBrace], // padded-blocks + // ["no-function-expression", convertNoFunctionExpression], // ban-syntax config + // ["no-suspicious-comment", convertNoSuspiciousComment], + // ["no-with-statement", convertNoWithStatement], +]); diff --git a/src/rules/converters/adjacent-overload-signatures.ts b/src/converters/lintConfigs/rules/ruleConverters/adjacent-overload-signatures.ts similarity index 82% rename from src/rules/converters/adjacent-overload-signatures.ts rename to src/converters/lintConfigs/rules/ruleConverters/adjacent-overload-signatures.ts index 530668709..be71ebb3f 100644 --- a/src/rules/converters/adjacent-overload-signatures.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/adjacent-overload-signatures.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertAdjacentOverloadSignatures: RuleConverter = () => { return { diff --git a/src/rules/converters/align.ts b/src/converters/lintConfigs/rules/ruleConverters/align.ts similarity index 96% rename from src/rules/converters/align.ts rename to src/converters/lintConfigs/rules/ruleConverters/align.ts index 25d87fe83..7ae3c8865 100644 --- a/src/rules/converters/align.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/align.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertAlign: RuleConverter = (tslintRule) => { const alignArguments = tslintRule.ruleArguments.includes("arguments"); diff --git a/src/rules/converters/array-type.ts b/src/converters/lintConfigs/rules/ruleConverters/array-type.ts similarity index 87% rename from src/rules/converters/array-type.ts rename to src/converters/lintConfigs/rules/ruleConverters/array-type.ts index f3c33afa6..bca14e39f 100644 --- a/src/rules/converters/array-type.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/array-type.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertArrayType: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/arrow-parens.ts b/src/converters/lintConfigs/rules/ruleConverters/arrow-parens.ts similarity index 87% rename from src/rules/converters/arrow-parens.ts rename to src/converters/lintConfigs/rules/ruleConverters/arrow-parens.ts index 175d460a7..a523b3595 100644 --- a/src/rules/converters/arrow-parens.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/arrow-parens.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertArrowParens: RuleConverter = (tslintRule) => { const ruleArguments = [ diff --git a/src/rules/converters/arrow-return-shorthand.ts b/src/converters/lintConfigs/rules/ruleConverters/arrow-return-shorthand.ts similarity index 92% rename from src/rules/converters/arrow-return-shorthand.ts rename to src/converters/lintConfigs/rules/ruleConverters/arrow-return-shorthand.ts index dd193b93f..251b2661e 100644 --- a/src/rules/converters/arrow-return-shorthand.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/arrow-return-shorthand.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const ARROW_RETURN_NOTICE = "ESLint will throw an error if the function body is multiline yet has a one-line return on it."; diff --git a/src/rules/converters/await-promise.ts b/src/converters/lintConfigs/rules/ruleConverters/await-promise.ts similarity index 80% rename from src/rules/converters/await-promise.ts rename to src/converters/lintConfigs/rules/ruleConverters/await-promise.ts index 30c9e52b3..894c4fbc7 100644 --- a/src/rules/converters/await-promise.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/await-promise.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertAwaitPromise: RuleConverter = () => { return { diff --git a/src/rules/converters/ban-comma-operator.ts b/src/converters/lintConfigs/rules/ruleConverters/ban-comma-operator.ts similarity index 78% rename from src/rules/converters/ban-comma-operator.ts rename to src/converters/lintConfigs/rules/ruleConverters/ban-comma-operator.ts index 366ee497c..b85d7a99c 100644 --- a/src/rules/converters/ban-comma-operator.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/ban-comma-operator.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertBanCommaOperator: RuleConverter = () => { return { diff --git a/src/rules/converters/ban-ts-ignore.ts b/src/converters/lintConfigs/rules/ruleConverters/ban-ts-ignore.ts similarity index 87% rename from src/rules/converters/ban-ts-ignore.ts rename to src/converters/lintConfigs/rules/ruleConverters/ban-ts-ignore.ts index 00a9cd1a1..864db2e8b 100644 --- a/src/rules/converters/ban-ts-ignore.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/ban-ts-ignore.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const BAN_TS_IGNORE_NOTICE = "The typescript-eslint now bans @ts- comments from being used"; diff --git a/src/rules/converters/ban-types.ts b/src/converters/lintConfigs/rules/ruleConverters/ban-types.ts similarity index 94% rename from src/rules/converters/ban-types.ts rename to src/converters/lintConfigs/rules/ruleConverters/ban-types.ts index 7223c6be7..141977750 100644 --- a/src/rules/converters/ban-types.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/ban-types.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertBanTypes: RuleConverter = (tslintRule) => { type ConvertBanTypeArgument = { diff --git a/src/rules/converters/binary-expression-operand-order.ts b/src/converters/lintConfigs/rules/ruleConverters/binary-expression-operand-order.ts similarity index 79% rename from src/rules/converters/binary-expression-operand-order.ts rename to src/converters/lintConfigs/rules/ruleConverters/binary-expression-operand-order.ts index 3402046ca..c20e6ae87 100644 --- a/src/rules/converters/binary-expression-operand-order.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/binary-expression-operand-order.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertBinaryExpressionOperandOrder: RuleConverter = () => { return { diff --git a/src/rules/converters/callable-types.ts b/src/converters/lintConfigs/rules/ruleConverters/callable-types.ts similarity index 80% rename from src/rules/converters/callable-types.ts rename to src/converters/lintConfigs/rules/ruleConverters/callable-types.ts index 56c3d7547..c3f9d3bb6 100644 --- a/src/rules/converters/callable-types.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/callable-types.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertCallableTypes: RuleConverter = () => { return { diff --git a/src/rules/converters/class-name.ts b/src/converters/lintConfigs/rules/ruleConverters/class-name.ts similarity index 80% rename from src/rules/converters/class-name.ts rename to src/converters/lintConfigs/rules/ruleConverters/class-name.ts index 16c8c364f..f480b0609 100644 --- a/src/rules/converters/class-name.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/class-name.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertClassName: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/component-class-suffix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-class-suffix.ts similarity index 91% rename from src/rules/converters/codelyzer/component-class-suffix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-class-suffix.ts index d253a6399..247af4b50 100644 --- a/src/rules/converters/codelyzer/component-class-suffix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-class-suffix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertComponentClassSuffix: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/component-max-inline-declarations.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-max-inline-declarations.ts similarity index 89% rename from src/rules/converters/codelyzer/component-max-inline-declarations.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-max-inline-declarations.ts index 33bb8008d..8ceadc55f 100644 --- a/src/rules/converters/codelyzer/component-max-inline-declarations.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-max-inline-declarations.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertComponentMaxInlineDeclarations: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/component-selector.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-selector.ts similarity index 92% rename from src/rules/converters/codelyzer/component-selector.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-selector.ts index 977c6510d..806b68c5a 100644 --- a/src/rules/converters/codelyzer/component-selector.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/component-selector.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertComponentSelector: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/contextual-lifecycle.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/contextual-lifecycle.ts similarity index 83% rename from src/rules/converters/codelyzer/contextual-lifecycle.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/contextual-lifecycle.ts index 74fca6c4a..3feb7dee6 100644 --- a/src/rules/converters/codelyzer/contextual-lifecycle.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/contextual-lifecycle.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertContextualLifecycle: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/directive-class-suffix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-class-suffix.ts similarity index 91% rename from src/rules/converters/codelyzer/directive-class-suffix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-class-suffix.ts index ff1e2d720..c06648d33 100644 --- a/src/rules/converters/codelyzer/directive-class-suffix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-class-suffix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertDirectiveClassSuffix: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/directive-selector.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-selector.ts similarity index 92% rename from src/rules/converters/codelyzer/directive-selector.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-selector.ts index 75324bf60..83c5a1e57 100644 --- a/src/rules/converters/codelyzer/directive-selector.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/directive-selector.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertDirectiveSelector: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/no-attribute-decorator.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-attribute-decorator.ts similarity index 83% rename from src/rules/converters/codelyzer/no-attribute-decorator.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-attribute-decorator.ts index 2b3cbc2b4..88f4b932b 100644 --- a/src/rules/converters/codelyzer/no-attribute-decorator.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-attribute-decorator.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoAttributeDecorator: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-conflicting-lifecycle.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-conflicting-lifecycle.ts similarity index 83% rename from src/rules/converters/codelyzer/no-conflicting-lifecycle.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-conflicting-lifecycle.ts index 09cd94e24..1daf8ac30 100644 --- a/src/rules/converters/codelyzer/no-conflicting-lifecycle.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-conflicting-lifecycle.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoConflictingLifecycle: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-forward-ref.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-forward-ref.ts similarity index 82% rename from src/rules/converters/codelyzer/no-forward-ref.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-forward-ref.ts index 6ff30598d..17a784e51 100644 --- a/src/rules/converters/codelyzer/no-forward-ref.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-forward-ref.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoForwardRef: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-host-metadata-property.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-host-metadata-property.ts similarity index 83% rename from src/rules/converters/codelyzer/no-host-metadata-property.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-host-metadata-property.ts index 81537d352..99eccdd4d 100644 --- a/src/rules/converters/codelyzer/no-host-metadata-property.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-host-metadata-property.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoHostMetadataProperty: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-input-prefix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-prefix.ts similarity index 90% rename from src/rules/converters/codelyzer/no-input-prefix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-prefix.ts index f5c3b8861..74c64bf59 100644 --- a/src/rules/converters/codelyzer/no-input-prefix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-prefix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoInputPrefix: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/no-input-rename.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-rename.ts similarity index 82% rename from src/rules/converters/codelyzer/no-input-rename.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-rename.ts index 9f0d9c311..d66de3d6a 100644 --- a/src/rules/converters/codelyzer/no-input-rename.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-input-rename.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoInputRename: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-inputs-metadata-property.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-inputs-metadata-property.ts similarity index 83% rename from src/rules/converters/codelyzer/no-inputs-metadata-property.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-inputs-metadata-property.ts index 6cb4814ef..40d806f32 100644 --- a/src/rules/converters/codelyzer/no-inputs-metadata-property.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-inputs-metadata-property.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoInputsMetadataProperty: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-lifecycle-call.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-lifecycle-call.ts similarity index 82% rename from src/rules/converters/codelyzer/no-lifecycle-call.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-lifecycle-call.ts index 74057885b..43b5a745a 100644 --- a/src/rules/converters/codelyzer/no-lifecycle-call.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-lifecycle-call.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoLifecycleCall: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-output-native.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-native.ts similarity index 82% rename from src/rules/converters/codelyzer/no-output-native.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-native.ts index 3736343b4..37323922a 100644 --- a/src/rules/converters/codelyzer/no-output-native.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-native.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoOutputNative: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-output-on-prefix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-on-prefix.ts similarity index 83% rename from src/rules/converters/codelyzer/no-output-on-prefix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-on-prefix.ts index 7bfaa5dd8..1ebb9335d 100644 --- a/src/rules/converters/codelyzer/no-output-on-prefix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-on-prefix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoOutputOnPrefix: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-output-rename.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-rename.ts similarity index 82% rename from src/rules/converters/codelyzer/no-output-rename.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-rename.ts index b5353ef76..aef0731ed 100644 --- a/src/rules/converters/codelyzer/no-output-rename.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-output-rename.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoOutputRename: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-outputs-metadata-property.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-outputs-metadata-property.ts similarity index 83% rename from src/rules/converters/codelyzer/no-outputs-metadata-property.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-outputs-metadata-property.ts index 58e4b7d79..5b86eb83f 100644 --- a/src/rules/converters/codelyzer/no-outputs-metadata-property.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-outputs-metadata-property.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoOutputsMetadataProperty: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-pipe-impure.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-pipe-impure.ts similarity index 82% rename from src/rules/converters/codelyzer/no-pipe-impure.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-pipe-impure.ts index fd58d4c61..d44a603a2 100644 --- a/src/rules/converters/codelyzer/no-pipe-impure.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-pipe-impure.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoPipeImpure: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/no-queries-metadata-property.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-queries-metadata-property.ts similarity index 83% rename from src/rules/converters/codelyzer/no-queries-metadata-property.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-queries-metadata-property.ts index ca1fcd1ea..c8bd5092f 100644 --- a/src/rules/converters/codelyzer/no-queries-metadata-property.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/no-queries-metadata-property.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertNoQueriesMetadataProperty: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/pipe-prefix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/pipe-prefix.ts similarity index 90% rename from src/rules/converters/codelyzer/pipe-prefix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/pipe-prefix.ts index 4a927e956..5618585f6 100644 --- a/src/rules/converters/codelyzer/pipe-prefix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/pipe-prefix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertPipePrefix: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/prefer-on-push-component-change-detection.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-on-push-component-change-detection.ts similarity index 85% rename from src/rules/converters/codelyzer/prefer-on-push-component-change-detection.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-on-push-component-change-detection.ts index 5abd67934..febe192d1 100644 --- a/src/rules/converters/codelyzer/prefer-on-push-component-change-detection.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-on-push-component-change-detection.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertPreferOnPushComponentChangeDetection: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/prefer-output-readonly.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-output-readonly.ts similarity index 83% rename from src/rules/converters/codelyzer/prefer-output-readonly.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-output-readonly.ts index 32f38646b..0ede1bd61 100644 --- a/src/rules/converters/codelyzer/prefer-output-readonly.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/prefer-output-readonly.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertPreferOutputReadonly: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/relative-url-prefix.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/relative-url-prefix.ts similarity index 83% rename from src/rules/converters/codelyzer/relative-url-prefix.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/relative-url-prefix.ts index 354408fb7..354155414 100644 --- a/src/rules/converters/codelyzer/relative-url-prefix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/relative-url-prefix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertRelativeUrlPrefix: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/template-banana-in-box.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-banana-in-box.ts similarity index 83% rename from src/rules/converters/codelyzer/template-banana-in-box.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-banana-in-box.ts index fb8cb8506..7d8b55c7f 100644 --- a/src/rules/converters/codelyzer/template-banana-in-box.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-banana-in-box.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertTemplateBananaInBox: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/template-cyclomatic-complexity.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-cyclomatic-complexity.ts similarity index 91% rename from src/rules/converters/codelyzer/template-cyclomatic-complexity.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-cyclomatic-complexity.ts index 856a5167b..a7d68cd13 100644 --- a/src/rules/converters/codelyzer/template-cyclomatic-complexity.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-cyclomatic-complexity.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertTemplateCyclomaticComplexity: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/codelyzer/template-no-call-expression.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-call-expression.ts similarity index 84% rename from src/rules/converters/codelyzer/template-no-call-expression.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-call-expression.ts index 31f44524f..8f382aa6a 100644 --- a/src/rules/converters/codelyzer/template-no-call-expression.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-call-expression.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertTemplateNoCallExpression: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/template-no-negated-async.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-negated-async.ts similarity index 84% rename from src/rules/converters/codelyzer/template-no-negated-async.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-negated-async.ts index 52b9c5af5..5fb36bc7f 100644 --- a/src/rules/converters/codelyzer/template-no-negated-async.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-no-negated-async.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertTemplateNoNegatedAsync: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/tests/component-class-suffix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-class-suffix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/component-class-suffix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-class-suffix.test.ts diff --git a/src/rules/converters/codelyzer/tests/component-max-inline-declarations.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-max-inline-declarations.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/component-max-inline-declarations.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-max-inline-declarations.test.ts diff --git a/src/rules/converters/codelyzer/tests/component-selector.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-selector.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/component-selector.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/component-selector.test.ts diff --git a/src/rules/converters/codelyzer/tests/contextual-lifecycle.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/contextual-lifecycle.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/contextual-lifecycle.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/contextual-lifecycle.test.ts diff --git a/src/rules/converters/codelyzer/tests/directive-class-suffix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/directive-class-suffix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/directive-class-suffix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/directive-class-suffix.test.ts diff --git a/src/rules/converters/codelyzer/tests/directive-selector.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/directive-selector.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/directive-selector.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/directive-selector.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-attribute-decorator.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-attribute-decorator.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-attribute-decorator.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-attribute-decorator.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-conflicting-lifecycle.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-conflicting-lifecycle.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-conflicting-lifecycle.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-conflicting-lifecycle.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-forward-ref.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-forward-ref.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-forward-ref.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-forward-ref.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-host-metadata-property.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-host-metadata-property.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-host-metadata-property.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-host-metadata-property.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-input-prefix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-input-prefix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-input-prefix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-input-prefix.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-input-rename.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-input-rename.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-input-rename.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-input-rename.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-inputs-metadata-property.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-inputs-metadata-property.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-inputs-metadata-property.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-inputs-metadata-property.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-lifecycle-call.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-lifecycle-call.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-lifecycle-call.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-lifecycle-call.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-output-native.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-native.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-output-native.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-native.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-output-on-prefix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-on-prefix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-output-on-prefix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-on-prefix.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-output-rename.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-rename.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-output-rename.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-output-rename.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-outputs-metadata-property.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-outputs-metadata-property.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-outputs-metadata-property.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-outputs-metadata-property.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-pipe-impure.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-pipe-impure.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-pipe-impure.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-pipe-impure.test.ts diff --git a/src/rules/converters/codelyzer/tests/no-queries-metadata-property.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-queries-metadata-property.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/no-queries-metadata-property.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/no-queries-metadata-property.test.ts diff --git a/src/rules/converters/codelyzer/tests/pipe-prefix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/pipe-prefix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/pipe-prefix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/pipe-prefix.test.ts diff --git a/src/rules/converters/codelyzer/tests/prefer-on-push-component-change-detection.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/prefer-on-push-component-change-detection.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/prefer-on-push-component-change-detection.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/prefer-on-push-component-change-detection.test.ts diff --git a/src/rules/converters/codelyzer/tests/prefer-output-readonly.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/prefer-output-readonly.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/prefer-output-readonly.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/prefer-output-readonly.test.ts diff --git a/src/rules/converters/codelyzer/tests/relative-url-prefix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/relative-url-prefix.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/relative-url-prefix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/relative-url-prefix.test.ts diff --git a/src/rules/converters/codelyzer/tests/template-banana-in-box.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-banana-in-box.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/template-banana-in-box.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-banana-in-box.test.ts diff --git a/src/rules/converters/codelyzer/tests/template-cyclomatic-complexity.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-cyclomatic-complexity.test.ts similarity index 99% rename from src/rules/converters/codelyzer/tests/template-cyclomatic-complexity.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-cyclomatic-complexity.test.ts index 4d2be036a..4741129eb 100644 --- a/src/rules/converters/codelyzer/tests/template-cyclomatic-complexity.test.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-cyclomatic-complexity.test.ts @@ -15,7 +15,7 @@ describe(convertTemplateCyclomaticComplexity, () => { plugins: ["@angular-eslint/eslint-plugin-template"], }); }); - + test("conversion with arguments", () => { const result = convertTemplateCyclomaticComplexity({ ruleArguments: [4], diff --git a/src/rules/converters/codelyzer/tests/template-no-call-expression.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-no-call-expression.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/template-no-call-expression.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-no-call-expression.test.ts diff --git a/src/rules/converters/codelyzer/tests/template-no-negated-async.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-no-negated-async.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/template-no-negated-async.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-no-negated-async.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-component-selector.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-component-selector.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-component-selector.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-component-selector.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-component-view-encapsulation.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-component-view-encapsulation.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-component-view-encapsulation.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-component-view-encapsulation.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-injectable-provided-in.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-injectable-provided-in.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-injectable-provided-in.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-injectable-provided-in.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-lifecycle-interface.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-lifecycle-interface.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-lifecycle-interface.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-lifecycle-interface.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-pipe-decorator.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-pipe-decorator.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-pipe-decorator.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-pipe-decorator.test.ts diff --git a/src/rules/converters/codelyzer/tests/use-pipe-transform-interface.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-pipe-transform-interface.test.ts similarity index 100% rename from src/rules/converters/codelyzer/tests/use-pipe-transform-interface.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/use-pipe-transform-interface.test.ts diff --git a/src/rules/converters/codelyzer/use-component-selector.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-selector.ts similarity index 83% rename from src/rules/converters/codelyzer/use-component-selector.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-selector.ts index 76d6418b7..03d6e8557 100644 --- a/src/rules/converters/codelyzer/use-component-selector.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-selector.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUseComponentSelector: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/use-component-view-encapsulation.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-view-encapsulation.ts similarity index 84% rename from src/rules/converters/codelyzer/use-component-view-encapsulation.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-view-encapsulation.ts index 5227fb195..25e1eeebc 100644 --- a/src/rules/converters/codelyzer/use-component-view-encapsulation.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-component-view-encapsulation.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUseComponentViewEncapsulation: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/use-injectable-provided-in.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-injectable-provided-in.ts similarity index 83% rename from src/rules/converters/codelyzer/use-injectable-provided-in.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-injectable-provided-in.ts index 9f0e43298..bf4e70151 100644 --- a/src/rules/converters/codelyzer/use-injectable-provided-in.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-injectable-provided-in.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUseInjectableProvidedIn: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/use-lifecycle-interface.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-lifecycle-interface.ts similarity index 83% rename from src/rules/converters/codelyzer/use-lifecycle-interface.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-lifecycle-interface.ts index 4181d1f8a..2716f8ba7 100644 --- a/src/rules/converters/codelyzer/use-lifecycle-interface.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-lifecycle-interface.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUseLifecycleInterface: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/use-pipe-decorator.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-decorator.ts similarity index 83% rename from src/rules/converters/codelyzer/use-pipe-decorator.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-decorator.ts index b1fe01c11..840d23969 100644 --- a/src/rules/converters/codelyzer/use-pipe-decorator.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-decorator.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUsePipeDecorator: RuleConverter = () => { return { diff --git a/src/rules/converters/codelyzer/use-pipe-transform-interface.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-transform-interface.ts similarity index 83% rename from src/rules/converters/codelyzer/use-pipe-transform-interface.ts rename to src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-transform-interface.ts index 85e961b3c..38beb078e 100644 --- a/src/rules/converters/codelyzer/use-pipe-transform-interface.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/use-pipe-transform-interface.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertUsePipeTransformInterface: RuleConverter = () => { return { diff --git a/src/rules/converters/comment-format.ts b/src/converters/lintConfigs/rules/ruleConverters/comment-format.ts similarity index 97% rename from src/rules/converters/comment-format.ts rename to src/converters/lintConfigs/rules/ruleConverters/comment-format.ts index a97624c9a..12b3504a1 100644 --- a/src/rules/converters/comment-format.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/comment-format.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; type CommentFormatOptions = { "ignore-words": string[]; diff --git a/src/rules/converters/curly.ts b/src/converters/lintConfigs/rules/ruleConverters/curly.ts similarity index 91% rename from src/rules/converters/curly.ts rename to src/converters/lintConfigs/rules/ruleConverters/curly.ts index 67a8a3d48..ca83a78de 100644 --- a/src/rules/converters/curly.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/curly.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertCurly: RuleConverter = (tslintRule) => { const ruleArguments: string[] = []; diff --git a/src/rules/converters/cyclomatic-complexity.ts b/src/converters/lintConfigs/rules/ruleConverters/cyclomatic-complexity.ts similarity index 90% rename from src/rules/converters/cyclomatic-complexity.ts rename to src/converters/lintConfigs/rules/ruleConverters/cyclomatic-complexity.ts index 586438cab..be8a2bda9 100644 --- a/src/rules/converters/cyclomatic-complexity.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/cyclomatic-complexity.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertCyclomaticComplexity: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/deprecation.ts b/src/converters/lintConfigs/rules/ruleConverters/deprecation.ts similarity index 82% rename from src/rules/converters/deprecation.ts rename to src/converters/lintConfigs/rules/ruleConverters/deprecation.ts index 2a298e18e..2047aa134 100644 --- a/src/rules/converters/deprecation.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/deprecation.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertDeprecation: RuleConverter = () => { return { diff --git a/src/rules/converters/eofline.ts b/src/converters/lintConfigs/rules/ruleConverters/eofline.ts similarity index 77% rename from src/rules/converters/eofline.ts rename to src/converters/lintConfigs/rules/ruleConverters/eofline.ts index 9f79b56eb..296ca2a92 100644 --- a/src/rules/converters/eofline.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eofline.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertEofline: RuleConverter = () => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-boolean-value.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-boolean-value.ts similarity index 88% rename from src/rules/converters/eslint-plugin-react/jsx-boolean-value.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-boolean-value.ts index 5b5e29a08..5fe9d2c04 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-boolean-value.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-boolean-value.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxBooleanValue: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-curly-spacing.ts similarity index 90% rename from src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-curly-spacing.ts index 7c3a47a60..1369c5826 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-curly-spacing.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxCurlySpacing: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-equals-spacing.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-equals-spacing.ts similarity index 88% rename from src/rules/converters/eslint-plugin-react/jsx-equals-spacing.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-equals-spacing.ts index b23eaad49..a65c3a370 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-equals-spacing.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-equals-spacing.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxEqualsSpacing: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-key.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-key.ts similarity index 80% rename from src/rules/converters/eslint-plugin-react/jsx-key.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-key.ts index bf619103c..4c6390589 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-key.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-key.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxKey: RuleConverter = () => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-no-bind.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-no-bind.ts similarity index 85% rename from src/rules/converters/eslint-plugin-react/jsx-no-bind.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-no-bind.ts index d0bc22e0f..e082ec5df 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-no-bind.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-no-bind.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxNoBind: RuleConverter = () => { return { diff --git a/src/rules/converters/eslint-plugin-react/jsx-wrap-multiline.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-wrap-multiline.ts similarity index 81% rename from src/rules/converters/eslint-plugin-react/jsx-wrap-multiline.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-wrap-multiline.ts index 192982518..81a3c4f96 100644 --- a/src/rules/converters/eslint-plugin-react/jsx-wrap-multiline.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/jsx-wrap-multiline.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../../converter"; +import { RuleConverter } from "../../ruleConverter"; export const convertJsxWrapMultiline: RuleConverter = () => { return { diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-boolean-value.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-boolean-value.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-boolean-value.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-boolean-value.test.ts diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-equals-spacing.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-equals-spacing.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-equals-spacing.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-equals-spacing.test.ts diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-key.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-key.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-key.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-key.test.ts diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-no-bind.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-no-bind.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-no-bind.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-no-bind.test.ts diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-wrap-multiline.test.ts b/src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-wrap-multiline.test.ts similarity index 100% rename from src/rules/converters/eslint-plugin-react/tests/jsx-wrap-multiline.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/eslint-plugin-react/tests/jsx-wrap-multiline.test.ts diff --git a/src/rules/converters/file-name-casing.ts b/src/converters/lintConfigs/rules/ruleConverters/file-name-casing.ts similarity index 97% rename from src/rules/converters/file-name-casing.ts rename to src/converters/lintConfigs/rules/ruleConverters/file-name-casing.ts index d51bfdfc4..7dadab6c3 100644 --- a/src/rules/converters/file-name-casing.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/file-name-casing.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const IGNORE_CASE_NOTICE = "ESLint (Unicorn plugin) does not support the 'ignore' case."; const CASING_BY_FILETYPE_CHANGE = diff --git a/src/rules/converters/forin.ts b/src/converters/lintConfigs/rules/ruleConverters/forin.ts similarity index 77% rename from src/rules/converters/forin.ts rename to src/converters/lintConfigs/rules/ruleConverters/forin.ts index 0c4cccd50..6890563a9 100644 --- a/src/rules/converters/forin.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/forin.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertForin: RuleConverter = () => { return { diff --git a/src/rules/converters/function-constructor.ts b/src/converters/lintConfigs/rules/ruleConverters/function-constructor.ts similarity index 78% rename from src/rules/converters/function-constructor.ts rename to src/converters/lintConfigs/rules/ruleConverters/function-constructor.ts index 6e7ce28c0..3678bbb5e 100644 --- a/src/rules/converters/function-constructor.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/function-constructor.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertFunctionConstructor: RuleConverter = () => { return { diff --git a/src/rules/converters/import-blacklist.ts b/src/converters/lintConfigs/rules/ruleConverters/import-blacklist.ts similarity index 94% rename from src/rules/converters/import-blacklist.ts rename to src/converters/lintConfigs/rules/ruleConverters/import-blacklist.ts index 302ade16e..57d0c72fc 100644 --- a/src/rules/converters/import-blacklist.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/import-blacklist.ts @@ -1,5 +1,5 @@ -import { RuleConverter } from "../converter"; -import { RequireAtLeastOne } from "../../utils"; +import { RequireAtLeastOne } from "../../../../utils"; +import { RuleConverter } from "../ruleConverter"; type ESLintOptionPath = { name: string; diff --git a/src/rules/converters/increment-decrement.ts b/src/converters/lintConfigs/rules/ruleConverters/increment-decrement.ts similarity index 89% rename from src/rules/converters/increment-decrement.ts rename to src/converters/lintConfigs/rules/ruleConverters/increment-decrement.ts index d21f1d73a..d7a34aeb7 100644 --- a/src/rules/converters/increment-decrement.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/increment-decrement.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertIncrementDecrement: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/indent.ts b/src/converters/lintConfigs/rules/ruleConverters/indent.ts similarity index 91% rename from src/rules/converters/indent.ts rename to src/converters/lintConfigs/rules/ruleConverters/indent.ts index 5304b788d..a37c2e4fa 100644 --- a/src/rules/converters/indent.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/indent.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertIndent: RuleConverter = (tslintRule) => { let indentSize: number | string = 4; // @typescript-eslint/indent default diff --git a/src/rules/converters/interface-name.ts b/src/converters/lintConfigs/rules/ruleConverters/interface-name.ts similarity index 93% rename from src/rules/converters/interface-name.ts rename to src/converters/lintConfigs/rules/ruleConverters/interface-name.ts index a3a2949df..e44917e8b 100644 --- a/src/rules/converters/interface-name.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/interface-name.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertInterfaceName: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/interface-over-type-literal.ts b/src/converters/lintConfigs/rules/ruleConverters/interface-over-type-literal.ts similarity index 81% rename from src/rules/converters/interface-over-type-literal.ts rename to src/converters/lintConfigs/rules/ruleConverters/interface-over-type-literal.ts index 40b2a69cb..402a1fe68 100644 --- a/src/rules/converters/interface-over-type-literal.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/interface-over-type-literal.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertInterfaceOverTypeLiteral: RuleConverter = () => { return { diff --git a/src/rules/converters/jsdoc-format.ts b/src/converters/lintConfigs/rules/ruleConverters/jsdoc-format.ts similarity index 89% rename from src/rules/converters/jsdoc-format.ts rename to src/converters/lintConfigs/rules/ruleConverters/jsdoc-format.ts index 92ee7b4e5..f3a596319 100644 --- a/src/rules/converters/jsdoc-format.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/jsdoc-format.ts @@ -1,4 +1,4 @@ -import { RuleConverter, ConvertedRuleChanges } from "../converter"; +import { RuleConverter, ConvertedRuleChanges } from "../ruleConverter"; export const JSDocNoticeMsg = "ESLint does not support enforcing the first line of multiline JSDoc comments be empty."; diff --git a/src/rules/converters/label-position.ts b/src/converters/lintConfigs/rules/ruleConverters/label-position.ts similarity index 78% rename from src/rules/converters/label-position.ts rename to src/converters/lintConfigs/rules/ruleConverters/label-position.ts index 204033770..33ca34618 100644 --- a/src/rules/converters/label-position.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/label-position.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertLabelPosition: RuleConverter = () => { return { diff --git a/src/rules/converters/linebreak-style.ts b/src/converters/lintConfigs/rules/ruleConverters/linebreak-style.ts similarity index 88% rename from src/rules/converters/linebreak-style.ts rename to src/converters/lintConfigs/rules/ruleConverters/linebreak-style.ts index e7ca939fc..ebfafc64a 100644 --- a/src/rules/converters/linebreak-style.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/linebreak-style.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertLinebreakStyle: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/max-classes-per-file.ts b/src/converters/lintConfigs/rules/ruleConverters/max-classes-per-file.ts similarity index 91% rename from src/rules/converters/max-classes-per-file.ts rename to src/converters/lintConfigs/rules/ruleConverters/max-classes-per-file.ts index 0990763e0..197ea9ee0 100644 --- a/src/rules/converters/max-classes-per-file.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/max-classes-per-file.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertMaxClassesPerFile: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/max-file-line-count.ts b/src/converters/lintConfigs/rules/ruleConverters/max-file-line-count.ts similarity index 87% rename from src/rules/converters/max-file-line-count.ts rename to src/converters/lintConfigs/rules/ruleConverters/max-file-line-count.ts index fea80d35b..4e37b2a4b 100644 --- a/src/rules/converters/max-file-line-count.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/max-file-line-count.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertMaxFileLineCount: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/max-line-length.ts b/src/converters/lintConfigs/rules/ruleConverters/max-line-length.ts similarity index 95% rename from src/rules/converters/max-line-length.ts rename to src/converters/lintConfigs/rules/ruleConverters/max-line-length.ts index 005e0281e..4eb221f35 100644 --- a/src/rules/converters/max-line-length.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/max-line-length.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertMaxLineLength: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/member-access.ts b/src/converters/lintConfigs/rules/ruleConverters/member-access.ts similarity index 97% rename from src/rules/converters/member-access.ts rename to src/converters/lintConfigs/rules/ruleConverters/member-access.ts index 2335c3d8f..f2607c028 100644 --- a/src/rules/converters/member-access.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/member-access.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export enum AccessibilityLevel { Explicit = "explicit", diff --git a/src/rules/converters/member-ordering.ts b/src/converters/lintConfigs/rules/ruleConverters/member-ordering.ts similarity index 80% rename from src/rules/converters/member-ordering.ts rename to src/converters/lintConfigs/rules/ruleConverters/member-ordering.ts index 3f784e89a..82a8d7b29 100644 --- a/src/rules/converters/member-ordering.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/member-ordering.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertMemberOrdering: RuleConverter = () => { return { diff --git a/src/rules/converters/new-parens.ts b/src/converters/lintConfigs/rules/ruleConverters/new-parens.ts similarity index 77% rename from src/rules/converters/new-parens.ts rename to src/converters/lintConfigs/rules/ruleConverters/new-parens.ts index 46e4f1790..ce28f4ef9 100644 --- a/src/rules/converters/new-parens.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/new-parens.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNewParens: RuleConverter = () => { return { diff --git a/src/rules/converters/newline-before-return.ts b/src/converters/lintConfigs/rules/ruleConverters/newline-before-return.ts similarity index 89% rename from src/rules/converters/newline-before-return.ts rename to src/converters/lintConfigs/rules/ruleConverters/newline-before-return.ts index 102362ec0..fa60456f0 100644 --- a/src/rules/converters/newline-before-return.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/newline-before-return.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNewlineBeforeReturn: RuleConverter = () => { return { diff --git a/src/rules/converters/newline-per-chained-call.ts b/src/converters/lintConfigs/rules/ruleConverters/newline-per-chained-call.ts similarity index 80% rename from src/rules/converters/newline-per-chained-call.ts rename to src/converters/lintConfigs/rules/ruleConverters/newline-per-chained-call.ts index d3fb335b0..6cf7a3f4c 100644 --- a/src/rules/converters/newline-per-chained-call.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/newline-per-chained-call.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNewlinePerChainedCall: RuleConverter = () => { return { diff --git a/src/rules/converters/no-angle-bracket-type-assertion.ts b/src/converters/lintConfigs/rules/ruleConverters/no-angle-bracket-type-assertion.ts similarity index 82% rename from src/rules/converters/no-angle-bracket-type-assertion.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-angle-bracket-type-assertion.ts index 50b8c8e72..f6a41b1cb 100644 --- a/src/rules/converters/no-angle-bracket-type-assertion.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-angle-bracket-type-assertion.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoAngleBracketTypeAssertion: RuleConverter = () => { return { diff --git a/src/rules/converters/no-arg.ts b/src/converters/lintConfigs/rules/ruleConverters/no-arg.ts similarity index 82% rename from src/rules/converters/no-arg.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-arg.ts index 312f4468e..d2b2e1881 100644 --- a/src/rules/converters/no-arg.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-arg.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoArg: RuleConverter = () => { return { diff --git a/src/rules/converters/no-async-without-await.ts b/src/converters/lintConfigs/rules/ruleConverters/no-async-without-await.ts similarity index 80% rename from src/rules/converters/no-async-without-await.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-async-without-await.ts index 5dde70493..d521ee646 100644 --- a/src/rules/converters/no-async-without-await.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-async-without-await.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoAsyncWithoutAwait: RuleConverter = () => { return { diff --git a/src/rules/converters/no-banned-terms.ts b/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts similarity index 61% rename from src/rules/converters/no-banned-terms.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts index 8f7760dab..c1bc09b11 100644 --- a/src/rules/converters/no-banned-terms.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts @@ -1,8 +1,8 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoBannedTerms: RuleConverter = () => { return { - // This is mentioned in Architecture.md as a TSLint rule with two ESLint equivalents + // This is mentioned in Architecture/Linters.md as a TSLint rule with two ESLint equivalents rules: [ { ruleName: "no-caller", diff --git a/src/rules/converters/no-bitwise.ts b/src/converters/lintConfigs/rules/ruleConverters/no-bitwise.ts similarity index 77% rename from src/rules/converters/no-bitwise.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-bitwise.ts index 1af656d01..9edc40cc6 100644 --- a/src/rules/converters/no-bitwise.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-bitwise.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoBitwise: RuleConverter = () => { return { diff --git a/src/rules/converters/no-boolean-literal-compare.ts b/src/converters/lintConfigs/rules/ruleConverters/no-boolean-literal-compare.ts similarity index 82% rename from src/rules/converters/no-boolean-literal-compare.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-boolean-literal-compare.ts index 2637e786c..1289d24db 100644 --- a/src/rules/converters/no-boolean-literal-compare.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-boolean-literal-compare.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoBooleanLiteralCompare: RuleConverter = () => { return { diff --git a/src/rules/converters/no-conditional-assignment.ts b/src/converters/lintConfigs/rules/ruleConverters/no-conditional-assignment.ts similarity index 79% rename from src/rules/converters/no-conditional-assignment.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-conditional-assignment.ts index bb7da5517..b42cfc364 100644 --- a/src/rules/converters/no-conditional-assignment.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-conditional-assignment.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoConditionalAssignment: RuleConverter = () => { return { diff --git a/src/rules/converters/no-consecutive-blank-lines.ts b/src/converters/lintConfigs/rules/ruleConverters/no-consecutive-blank-lines.ts similarity index 88% rename from src/rules/converters/no-consecutive-blank-lines.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-consecutive-blank-lines.ts index 0c8c7d065..806d13fc5 100644 --- a/src/rules/converters/no-consecutive-blank-lines.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-consecutive-blank-lines.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoConsecutiveBlankLines: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-console.ts b/src/converters/lintConfigs/rules/ruleConverters/no-console.ts similarity index 93% rename from src/rules/converters/no-console.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-console.ts index 64ffb0cdd..cde7c33e8 100644 --- a/src/rules/converters/no-console.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-console.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoConsole: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-constant-condition.ts b/src/converters/lintConfigs/rules/ruleConverters/no-constant-condition.ts similarity index 79% rename from src/rules/converters/no-constant-condition.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-constant-condition.ts index 8cbe4be8e..5f4909fb4 100644 --- a/src/rules/converters/no-constant-condition.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-constant-condition.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoConstantCondition: RuleConverter = () => { return { diff --git a/src/rules/converters/no-construct.ts b/src/converters/lintConfigs/rules/ruleConverters/no-construct.ts similarity index 78% rename from src/rules/converters/no-construct.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-construct.ts index e4bd9f978..a5f16637c 100644 --- a/src/rules/converters/no-construct.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-construct.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoConstruct: RuleConverter = () => { return { diff --git a/src/rules/converters/no-control-regex.ts b/src/converters/lintConfigs/rules/ruleConverters/no-control-regex.ts similarity index 78% rename from src/rules/converters/no-control-regex.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-control-regex.ts index 0296e3536..318187379 100644 --- a/src/rules/converters/no-control-regex.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-control-regex.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoControlRegex: RuleConverter = () => { return { diff --git a/src/rules/converters/no-debugger.ts b/src/converters/lintConfigs/rules/ruleConverters/no-debugger.ts similarity index 78% rename from src/rules/converters/no-debugger.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-debugger.ts index e48e9378c..a96b4eed6 100644 --- a/src/rules/converters/no-debugger.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-debugger.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDebugger: RuleConverter = () => { return { diff --git a/src/rules/converters/no-default-export.ts b/src/converters/lintConfigs/rules/ruleConverters/no-default-export.ts similarity index 82% rename from src/rules/converters/no-default-export.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-default-export.ts index b35833568..887948653 100644 --- a/src/rules/converters/no-default-export.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-default-export.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDefaultExport: RuleConverter = () => { return { diff --git a/src/rules/converters/no-duplicate-imports.ts b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-imports.ts similarity index 89% rename from src/rules/converters/no-duplicate-imports.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-duplicate-imports.ts index df978e3d6..ac5bcc64f 100644 --- a/src/rules/converters/no-duplicate-imports.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-imports.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDuplicateImports: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-duplicate-super.ts b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-super.ts similarity index 79% rename from src/rules/converters/no-duplicate-super.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-duplicate-super.ts index 2c5091660..5da8da8e9 100644 --- a/src/rules/converters/no-duplicate-super.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-super.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDuplicateSuper: RuleConverter = () => { return { diff --git a/src/rules/converters/no-duplicate-switch-case.ts b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-switch-case.ts similarity index 79% rename from src/rules/converters/no-duplicate-switch-case.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-duplicate-switch-case.ts index 1fb0800f7..a970963ef 100644 --- a/src/rules/converters/no-duplicate-switch-case.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-switch-case.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDuplicateSwitchCase: RuleConverter = () => { return { diff --git a/src/rules/converters/no-duplicate-variable.ts b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-variable.ts similarity index 88% rename from src/rules/converters/no-duplicate-variable.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-duplicate-variable.ts index f6ad8d78c..46420778a 100644 --- a/src/rules/converters/no-duplicate-variable.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-duplicate-variable.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoDuplicateVariable: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-empty-interface.ts b/src/converters/lintConfigs/rules/ruleConverters/no-empty-interface.ts similarity index 80% rename from src/rules/converters/no-empty-interface.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-empty-interface.ts index e8805b2d8..c9f589f71 100644 --- a/src/rules/converters/no-empty-interface.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-empty-interface.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoEmptyInterface: RuleConverter = () => { return { diff --git a/src/rules/converters/no-empty.ts b/src/converters/lintConfigs/rules/ruleConverters/no-empty.ts similarity index 87% rename from src/rules/converters/no-empty.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-empty.ts index 93ea97095..5157cb2b5 100644 --- a/src/rules/converters/no-empty.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-empty.ts @@ -1,5 +1,5 @@ -import { RuleConverter, RuleConverterOptions } from "../converter"; -import { isDefined } from "../../utils"; +import { isDefined } from "../../../../utils"; +import { RuleConverter, RuleConverterOptions } from "../ruleConverter"; export const convertNoEmpty: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-eval.ts b/src/converters/lintConfigs/rules/ruleConverters/no-eval.ts similarity index 77% rename from src/rules/converters/no-eval.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-eval.ts index f6ab948d4..06655af83 100644 --- a/src/rules/converters/no-eval.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-eval.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoEval: RuleConverter = () => { return { diff --git a/src/rules/converters/no-explicit-any.ts b/src/converters/lintConfigs/rules/ruleConverters/no-explicit-any.ts similarity index 80% rename from src/rules/converters/no-explicit-any.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-explicit-any.ts index 0a4af7e10..badc008b3 100644 --- a/src/rules/converters/no-explicit-any.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-explicit-any.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoExplicitAny: RuleConverter = () => { return { diff --git a/src/rules/converters/no-floating-promises.ts b/src/converters/lintConfigs/rules/ruleConverters/no-floating-promises.ts similarity index 81% rename from src/rules/converters/no-floating-promises.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-floating-promises.ts index 4a846e640..22acde4b3 100644 --- a/src/rules/converters/no-floating-promises.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-floating-promises.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoFloatingPromises: RuleConverter = () => { return { diff --git a/src/rules/converters/no-for-in-array.ts b/src/converters/lintConfigs/rules/ruleConverters/no-for-in-array.ts similarity index 80% rename from src/rules/converters/no-for-in-array.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-for-in-array.ts index 668f83f84..1ead18d70 100644 --- a/src/rules/converters/no-for-in-array.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-for-in-array.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoForInArray: RuleConverter = () => { return { diff --git a/src/rules/converters/no-for-in.ts b/src/converters/lintConfigs/rules/ruleConverters/no-for-in.ts similarity index 82% rename from src/rules/converters/no-for-in.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-for-in.ts index ed3225970..ed46e2e4f 100644 --- a/src/rules/converters/no-for-in.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-for-in.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoForIn: RuleConverter = () => { return { diff --git a/src/rules/converters/no-implicit-dependencies.ts b/src/converters/lintConfigs/rules/ruleConverters/no-implicit-dependencies.ts similarity index 95% rename from src/rules/converters/no-implicit-dependencies.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-implicit-dependencies.ts index a353c0f1b..c1e843661 100644 --- a/src/rules/converters/no-implicit-dependencies.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-implicit-dependencies.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; type ExtraneousDependenciesArgument = Partial< Record<"devDependencies" | "optionalDependencies", boolean> diff --git a/src/rules/converters/no-import-side-effect.ts b/src/converters/lintConfigs/rules/ruleConverters/no-import-side-effect.ts similarity index 91% rename from src/rules/converters/no-import-side-effect.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-import-side-effect.ts index 59d289d72..f0e63c2dd 100644 --- a/src/rules/converters/no-import-side-effect.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-import-side-effect.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoImportSideEffect: RuleConverter = (tsLintRule) => { return { diff --git a/src/rules/converters/no-inferrable-types.ts b/src/converters/lintConfigs/rules/ruleConverters/no-inferrable-types.ts similarity index 94% rename from src/rules/converters/no-inferrable-types.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-inferrable-types.ts index 0611daa78..d364624a4 100644 --- a/src/rules/converters/no-inferrable-types.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-inferrable-types.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoInferrableTypes: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-internal-module.ts b/src/converters/lintConfigs/rules/ruleConverters/no-internal-module.ts similarity index 81% rename from src/rules/converters/no-internal-module.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-internal-module.ts index ebd4fac8a..6c18986b5 100644 --- a/src/rules/converters/no-internal-module.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-internal-module.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoInternalModule: RuleConverter = () => { return { diff --git a/src/rules/converters/no-invalid-regexp.ts b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-regexp.ts similarity index 79% rename from src/rules/converters/no-invalid-regexp.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-invalid-regexp.ts index cfe0cce50..d85108947 100644 --- a/src/rules/converters/no-invalid-regexp.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-regexp.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoInvalidRegexp: RuleConverter = () => { return { diff --git a/src/rules/converters/no-invalid-template-strings.ts b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-template-strings.ts similarity index 80% rename from src/rules/converters/no-invalid-template-strings.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-invalid-template-strings.ts index cf6a6142e..dc61b5d11 100644 --- a/src/rules/converters/no-invalid-template-strings.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-template-strings.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoInvalidTemplateStrings: RuleConverter = () => { return { diff --git a/src/rules/converters/no-invalid-this.ts b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-this.ts similarity index 88% rename from src/rules/converters/no-invalid-this.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-invalid-this.ts index b7613022f..760a30b70 100644 --- a/src/rules/converters/no-invalid-this.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-invalid-this.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoInvalidThis: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-irregular-whitespace.ts b/src/converters/lintConfigs/rules/ruleConverters/no-irregular-whitespace.ts similarity index 80% rename from src/rules/converters/no-irregular-whitespace.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-irregular-whitespace.ts index 6e3dcd875..538697a81 100644 --- a/src/rules/converters/no-irregular-whitespace.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-irregular-whitespace.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoIrregularWhitespace: RuleConverter = () => { return { diff --git a/src/rules/converters/no-magic-numbers.ts b/src/converters/lintConfigs/rules/ruleConverters/no-magic-numbers.ts similarity index 94% rename from src/rules/converters/no-magic-numbers.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-magic-numbers.ts index bc9331633..36f980c75 100644 --- a/src/rules/converters/no-magic-numbers.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-magic-numbers.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoMagicNumbers: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-misused-new.ts b/src/converters/lintConfigs/rules/ruleConverters/no-misused-new.ts similarity index 80% rename from src/rules/converters/no-misused-new.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-misused-new.ts index 216355a6c..d3804a2ff 100644 --- a/src/rules/converters/no-misused-new.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-misused-new.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoMisusedNew: RuleConverter = () => { return { diff --git a/src/rules/converters/no-multiline-string.ts b/src/converters/lintConfigs/rules/ruleConverters/no-multiline-string.ts similarity index 78% rename from src/rules/converters/no-multiline-string.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-multiline-string.ts index 72d15e51d..130184dcb 100644 --- a/src/rules/converters/no-multiline-string.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-multiline-string.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoMultilineString: RuleConverter = () => { return { diff --git a/src/rules/converters/no-namespace.ts b/src/converters/lintConfigs/rules/ruleConverters/no-namespace.ts similarity index 79% rename from src/rules/converters/no-namespace.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-namespace.ts index 4379302f4..84044b415 100644 --- a/src/rules/converters/no-namespace.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-namespace.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoNamespace: RuleConverter = () => { return { diff --git a/src/rules/converters/no-non-null-assertion.ts b/src/converters/lintConfigs/rules/ruleConverters/no-non-null-assertion.ts similarity index 81% rename from src/rules/converters/no-non-null-assertion.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-non-null-assertion.ts index 2d5d402f9..8a5ca7d3e 100644 --- a/src/rules/converters/no-non-null-assertion.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-non-null-assertion.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoNonNullAssertion: RuleConverter = () => { return { diff --git a/src/rules/converters/no-null-keyword.ts b/src/converters/lintConfigs/rules/ruleConverters/no-null-keyword.ts similarity index 85% rename from src/rules/converters/no-null-keyword.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-null-keyword.ts index bf884564e..40674fb74 100644 --- a/src/rules/converters/no-null-keyword.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-null-keyword.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoNullKeyword: RuleConverter = () => { return { diff --git a/src/rules/converters/no-object-literal-type-assertion.ts b/src/converters/lintConfigs/rules/ruleConverters/no-object-literal-type-assertion.ts similarity index 82% rename from src/rules/converters/no-object-literal-type-assertion.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-object-literal-type-assertion.ts index 4875499a0..214113f9b 100644 --- a/src/rules/converters/no-object-literal-type-assertion.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-object-literal-type-assertion.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoObjectLiteralTypeAssertion: RuleConverter = () => { return { diff --git a/src/rules/converters/no-octal-literal.ts b/src/converters/lintConfigs/rules/ruleConverters/no-octal-literal.ts similarity index 83% rename from src/rules/converters/no-octal-literal.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-octal-literal.ts index 6724da403..baf52a7d0 100644 --- a/src/rules/converters/no-octal-literal.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-octal-literal.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoOctalLiteral: RuleConverter = () => { return { diff --git a/src/rules/converters/no-parameter-properties.ts b/src/converters/lintConfigs/rules/ruleConverters/no-parameter-properties.ts similarity index 81% rename from src/rules/converters/no-parameter-properties.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-parameter-properties.ts index e5d9e24a5..c19eee12c 100644 --- a/src/rules/converters/no-parameter-properties.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-parameter-properties.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoParameterProperties: RuleConverter = () => { return { diff --git a/src/rules/converters/no-parameter-reassignment.ts b/src/converters/lintConfigs/rules/ruleConverters/no-parameter-reassignment.ts similarity index 81% rename from src/rules/converters/no-parameter-reassignment.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-parameter-reassignment.ts index 793598d37..fa23e5bdd 100644 --- a/src/rules/converters/no-parameter-reassignment.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-parameter-reassignment.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoParameterReassignment: RuleConverter = () => { return { diff --git a/src/rules/converters/no-redundant-jsdoc.ts b/src/converters/lintConfigs/rules/ruleConverters/no-redundant-jsdoc.ts similarity index 78% rename from src/rules/converters/no-redundant-jsdoc.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-redundant-jsdoc.ts index 7318520fa..7bdfefede 100644 --- a/src/rules/converters/no-redundant-jsdoc.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-redundant-jsdoc.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoRedundantJsdoc: RuleConverter = () => ({ rules: [ diff --git a/src/rules/converters/no-reference-import.ts b/src/converters/lintConfigs/rules/ruleConverters/no-reference-import.ts similarity index 89% rename from src/rules/converters/no-reference-import.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-reference-import.ts index 38f903b01..11dac357b 100644 --- a/src/rules/converters/no-reference-import.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-reference-import.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoReferenceImport: RuleConverter = () => { return { diff --git a/src/rules/converters/no-reference.ts b/src/converters/lintConfigs/rules/ruleConverters/no-reference.ts similarity index 80% rename from src/rules/converters/no-reference.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-reference.ts index a8e2ce66a..bca726e1a 100644 --- a/src/rules/converters/no-reference.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-reference.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoReference: RuleConverter = () => { return { diff --git a/src/rules/converters/no-regex-spaces.ts b/src/converters/lintConfigs/rules/ruleConverters/no-regex-spaces.ts similarity index 78% rename from src/rules/converters/no-regex-spaces.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-regex-spaces.ts index 6baa6af62..d13939742 100644 --- a/src/rules/converters/no-regex-spaces.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-regex-spaces.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoRegexSpaces: RuleConverter = () => { return { diff --git a/src/rules/converters/no-require-imports.ts b/src/converters/lintConfigs/rules/ruleConverters/no-require-imports.ts similarity index 80% rename from src/rules/converters/no-require-imports.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-require-imports.ts index e72914a9d..47146dea9 100644 --- a/src/rules/converters/no-require-imports.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-require-imports.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoRequireImports: RuleConverter = () => { return { diff --git a/src/rules/converters/no-return-await.ts b/src/converters/lintConfigs/rules/ruleConverters/no-return-await.ts similarity index 78% rename from src/rules/converters/no-return-await.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-return-await.ts index a966b5702..95fc8a430 100644 --- a/src/rules/converters/no-return-await.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-return-await.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoReturnAwait: RuleConverter = () => { return { diff --git a/src/rules/converters/no-shadowed-variable.ts b/src/converters/lintConfigs/rules/ruleConverters/no-shadowed-variable.ts similarity index 97% rename from src/rules/converters/no-shadowed-variable.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-shadowed-variable.ts index 847c73af4..c213cabb6 100644 --- a/src/rules/converters/no-shadowed-variable.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-shadowed-variable.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const SELECTIVE_DISABLE_NOTICE = "ESLint does not support selectively disabling shadowed declaration checks " + diff --git a/src/rules/converters/no-sparse-arrays.ts b/src/converters/lintConfigs/rules/ruleConverters/no-sparse-arrays.ts similarity index 78% rename from src/rules/converters/no-sparse-arrays.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-sparse-arrays.ts index be64cbfe7..822a0c538 100644 --- a/src/rules/converters/no-sparse-arrays.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-sparse-arrays.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoSparseArrays: RuleConverter = () => { return { diff --git a/src/rules/converters/no-string-literal.ts b/src/converters/lintConfigs/rules/ruleConverters/no-string-literal.ts similarity index 80% rename from src/rules/converters/no-string-literal.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-string-literal.ts index 0137e2276..25a8550c3 100644 --- a/src/rules/converters/no-string-literal.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-string-literal.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoStringLiteral: RuleConverter = () => { return { diff --git a/src/rules/converters/no-string-throw.ts b/src/converters/lintConfigs/rules/ruleConverters/no-string-throw.ts similarity index 78% rename from src/rules/converters/no-string-throw.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-string-throw.ts index 87a025032..cba1a40ac 100644 --- a/src/rules/converters/no-string-throw.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-string-throw.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoStringThrow: RuleConverter = () => { return { diff --git a/src/rules/converters/no-submodule-imports.ts b/src/converters/lintConfigs/rules/ruleConverters/no-submodule-imports.ts similarity index 93% rename from src/rules/converters/no-submodule-imports.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-submodule-imports.ts index ff87e9032..7176902b7 100644 --- a/src/rules/converters/no-submodule-imports.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-submodule-imports.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoSubmoduleImports: RuleConverter = (tslintRule) => { const allow: string[] = []; diff --git a/src/rules/converters/no-switch-case-fall-through.ts b/src/converters/lintConfigs/rules/ruleConverters/no-switch-case-fall-through.ts similarity index 79% rename from src/rules/converters/no-switch-case-fall-through.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-switch-case-fall-through.ts index 00083392d..09dc6eada 100644 --- a/src/rules/converters/no-switch-case-fall-through.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-switch-case-fall-through.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoSwitchCaseFallThrough: RuleConverter = () => { return { diff --git a/src/rules/converters/no-this-assignment.ts b/src/converters/lintConfigs/rules/ruleConverters/no-this-assignment.ts similarity index 80% rename from src/rules/converters/no-this-assignment.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-this-assignment.ts index 6b83a2bf3..ea98865e8 100644 --- a/src/rules/converters/no-this-assignment.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-this-assignment.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoThisAssignment: RuleConverter = () => { return { diff --git a/src/rules/converters/no-trailing-whitespace.ts b/src/converters/lintConfigs/rules/ruleConverters/no-trailing-whitespace.ts similarity index 95% rename from src/rules/converters/no-trailing-whitespace.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-trailing-whitespace.ts index 87a994abf..4d3740b75 100644 --- a/src/rules/converters/no-trailing-whitespace.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-trailing-whitespace.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoTrailingWhitespace: RuleConverter = (tslintRule) => { const ruleArguments: Partial>[] = []; diff --git a/src/rules/converters/no-unbound-method.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unbound-method.ts similarity index 80% rename from src/rules/converters/no-unbound-method.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unbound-method.ts index 1f0594087..88ee272bb 100644 --- a/src/rules/converters/no-unbound-method.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unbound-method.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnboundMethod: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unnecessary-class.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-class.ts similarity index 80% rename from src/rules/converters/no-unnecessary-class.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-class.ts index 3e377f309..ed71934c5 100644 --- a/src/rules/converters/no-unnecessary-class.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-class.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnnecessaryClass: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unnecessary-initializer.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-initializer.ts similarity index 79% rename from src/rules/converters/no-unnecessary-initializer.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-initializer.ts index b77d55f28..55e9fa9f8 100644 --- a/src/rules/converters/no-unnecessary-initializer.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-initializer.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnnecessaryInitializer: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unnecessary-qualifier.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-qualifier.ts similarity index 81% rename from src/rules/converters/no-unnecessary-qualifier.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-qualifier.ts index 4b2ccc0d5..087454c21 100644 --- a/src/rules/converters/no-unnecessary-qualifier.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-qualifier.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnnecessaryQualifier: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unnecessary-semicolons.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-semicolons.ts similarity index 79% rename from src/rules/converters/no-unnecessary-semicolons.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-semicolons.ts index be6dfa4eb..d1dae04c0 100644 --- a/src/rules/converters/no-unnecessary-semicolons.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-semicolons.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnnecessarySemicolons: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unnecessary-type-assertion.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-type-assertion.ts similarity index 82% rename from src/rules/converters/no-unnecessary-type-assertion.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-type-assertion.ts index 594a9694b..fb5b9ce9e 100644 --- a/src/rules/converters/no-unnecessary-type-assertion.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unnecessary-type-assertion.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnnecessaryTypeAssertion: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unsafe-finally.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unsafe-finally.ts similarity index 79% rename from src/rules/converters/no-unsafe-finally.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unsafe-finally.ts index 467d0520e..5e80e0842 100644 --- a/src/rules/converters/no-unsafe-finally.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unsafe-finally.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnsafeFinally: RuleConverter = () => { return { diff --git a/src/rules/converters/no-unused-expression.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unused-expression.ts similarity index 96% rename from src/rules/converters/no-unused-expression.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unused-expression.ts index b78e6f4fc..2f574dc03 100644 --- a/src/rules/converters/no-unused-expression.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unused-expression.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUnusedExpression: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/no-unused-variable.ts b/src/converters/lintConfigs/rules/ruleConverters/no-unused-variable.ts similarity index 90% rename from src/rules/converters/no-unused-variable.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-unused-variable.ts index 5486a4a84..1a4f090c6 100644 --- a/src/rules/converters/no-unused-variable.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-unused-variable.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const NO_UNUSED_VARIABLE_NOTICE = "Please read the following article as the rule behaviour may change on the short term: " + diff --git a/src/rules/converters/no-use-before-declare.ts b/src/converters/lintConfigs/rules/ruleConverters/no-use-before-declare.ts similarity index 81% rename from src/rules/converters/no-use-before-declare.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-use-before-declare.ts index b5c37272b..fc1f1751b 100644 --- a/src/rules/converters/no-use-before-declare.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-use-before-declare.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoUseBeforeDeclare: RuleConverter = () => { return { diff --git a/src/rules/converters/no-var-keyword.ts b/src/converters/lintConfigs/rules/ruleConverters/no-var-keyword.ts similarity index 77% rename from src/rules/converters/no-var-keyword.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-var-keyword.ts index ce309a7a9..072b69b3e 100644 --- a/src/rules/converters/no-var-keyword.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-var-keyword.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoVarKeyword: RuleConverter = () => { return { diff --git a/src/rules/converters/no-var-requires.ts b/src/converters/lintConfigs/rules/ruleConverters/no-var-requires.ts similarity index 80% rename from src/rules/converters/no-var-requires.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-var-requires.ts index 61853415d..68dcb568e 100644 --- a/src/rules/converters/no-var-requires.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-var-requires.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoVarRequires: RuleConverter = () => { return { diff --git a/src/rules/converters/no-void-expression.ts b/src/converters/lintConfigs/rules/ruleConverters/no-void-expression.ts similarity index 88% rename from src/rules/converters/no-void-expression.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-void-expression.ts index a63f9b884..7da43cb1a 100644 --- a/src/rules/converters/no-void-expression.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-void-expression.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoVoidExpression: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/object-literal-key-quotes.ts b/src/converters/lintConfigs/rules/ruleConverters/object-literal-key-quotes.ts similarity index 87% rename from src/rules/converters/object-literal-key-quotes.ts rename to src/converters/lintConfigs/rules/ruleConverters/object-literal-key-quotes.ts index a5aacd954..892f04f5b 100644 --- a/src/rules/converters/object-literal-key-quotes.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/object-literal-key-quotes.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertObjectLiteralKeyQuotes: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/object-literal-shorthand.ts b/src/converters/lintConfigs/rules/ruleConverters/object-literal-shorthand.ts similarity index 87% rename from src/rules/converters/object-literal-shorthand.ts rename to src/converters/lintConfigs/rules/ruleConverters/object-literal-shorthand.ts index feea3454e..85dc7535d 100644 --- a/src/rules/converters/object-literal-shorthand.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/object-literal-shorthand.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertObjectLiteralShorthand: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/one-line.ts b/src/converters/lintConfigs/rules/ruleConverters/one-line.ts similarity index 90% rename from src/rules/converters/one-line.ts rename to src/converters/lintConfigs/rules/ruleConverters/one-line.ts index f3743b7b1..05d0cd461 100644 --- a/src/rules/converters/one-line.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/one-line.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const CheckAllTokensMsg = "ESLint's brace-style will check all tokens."; diff --git a/src/rules/converters/one-variable-per-declaration.ts b/src/converters/lintConfigs/rules/ruleConverters/one-variable-per-declaration.ts similarity index 89% rename from src/rules/converters/one-variable-per-declaration.ts rename to src/converters/lintConfigs/rules/ruleConverters/one-variable-per-declaration.ts index eb32eec0a..c3b4728d2 100644 --- a/src/rules/converters/one-variable-per-declaration.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/one-variable-per-declaration.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertOneVariablePerDeclaration: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/only-arrow-functions.ts b/src/converters/lintConfigs/rules/ruleConverters/only-arrow-functions.ts similarity index 93% rename from src/rules/converters/only-arrow-functions.ts rename to src/converters/lintConfigs/rules/ruleConverters/only-arrow-functions.ts index 318895e32..7a83b8a01 100644 --- a/src/rules/converters/only-arrow-functions.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/only-arrow-functions.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertOnlyArrowFunctions: RuleConverter = (tslintRule) => { const notices: string[] = []; diff --git a/src/rules/converters/ordered-imports.ts b/src/converters/lintConfigs/rules/ruleConverters/ordered-imports.ts similarity index 92% rename from src/rules/converters/ordered-imports.ts rename to src/converters/lintConfigs/rules/ruleConverters/ordered-imports.ts index d3c441748..39c56272f 100644 --- a/src/rules/converters/ordered-imports.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/ordered-imports.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const unsupportedTSLintOptions = [ "import-sources-order", diff --git a/src/rules/converters/prefer-const.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-const.ts similarity index 86% rename from src/rules/converters/prefer-const.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-const.ts index 3f506856f..5f05a0f9e 100644 --- a/src/rules/converters/prefer-const.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-const.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferConst: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/prefer-for-of.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-for-of.ts similarity index 80% rename from src/rules/converters/prefer-for-of.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-for-of.ts index deb9ebee7..a0c695af0 100644 --- a/src/rules/converters/prefer-for-of.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-for-of.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferForOf: RuleConverter = () => { return { diff --git a/src/rules/converters/prefer-function-over-method.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-function-over-method.ts similarity index 91% rename from src/rules/converters/prefer-function-over-method.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-function-over-method.ts index e70be873d..fd0aff89d 100644 --- a/src/rules/converters/prefer-function-over-method.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-function-over-method.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferFunctionOverMethod: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/prefer-object-spread.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-object-spread.ts similarity index 79% rename from src/rules/converters/prefer-object-spread.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-object-spread.ts index b4810afab..560b2fa8f 100644 --- a/src/rules/converters/prefer-object-spread.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-object-spread.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferObjectSpread: RuleConverter = () => { return { diff --git a/src/rules/converters/prefer-readonly.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-readonly.ts similarity index 88% rename from src/rules/converters/prefer-readonly.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-readonly.ts index 80a8239c5..d29817fe1 100644 --- a/src/rules/converters/prefer-readonly.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-readonly.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferReadonly: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/prefer-template.ts b/src/converters/lintConfigs/rules/ruleConverters/prefer-template.ts similarity index 90% rename from src/rules/converters/prefer-template.ts rename to src/converters/lintConfigs/rules/ruleConverters/prefer-template.ts index 9bb6495d8..308e09650 100644 --- a/src/rules/converters/prefer-template.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/prefer-template.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPreferTemplate: RuleConverter = (tslintRule) => { return { diff --git a/src/rules/converters/promise-function-async.ts b/src/converters/lintConfigs/rules/ruleConverters/promise-function-async.ts similarity index 81% rename from src/rules/converters/promise-function-async.ts rename to src/converters/lintConfigs/rules/ruleConverters/promise-function-async.ts index 8e0def7c3..e08c2038e 100644 --- a/src/rules/converters/promise-function-async.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/promise-function-async.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertPromiseFunctionAsync: RuleConverter = () => { return { diff --git a/src/rules/converters/quotemark.ts b/src/converters/lintConfigs/rules/ruleConverters/quotemark.ts similarity index 95% rename from src/rules/converters/quotemark.ts rename to src/converters/lintConfigs/rules/ruleConverters/quotemark.ts index 4f3d10f2c..b32c22463 100644 --- a/src/rules/converters/quotemark.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/quotemark.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; type QuotemarkRule = string | { avoidEscape: true }; diff --git a/src/rules/converters/radix.ts b/src/converters/lintConfigs/rules/ruleConverters/radix.ts similarity index 76% rename from src/rules/converters/radix.ts rename to src/converters/lintConfigs/rules/ruleConverters/radix.ts index d05440ce6..08105231a 100644 --- a/src/rules/converters/radix.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/radix.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertRadix: RuleConverter = () => { return { diff --git a/src/rules/converters/restrict-plus-operands.ts b/src/converters/lintConfigs/rules/ruleConverters/restrict-plus-operands.ts similarity index 81% rename from src/rules/converters/restrict-plus-operands.ts rename to src/converters/lintConfigs/rules/ruleConverters/restrict-plus-operands.ts index f7587ef81..1ac571a3a 100644 --- a/src/rules/converters/restrict-plus-operands.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/restrict-plus-operands.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertRestrictPlusOperands: RuleConverter = () => { return { diff --git a/src/rules/converters/semicolon.ts b/src/converters/lintConfigs/rules/ruleConverters/semicolon.ts similarity index 96% rename from src/rules/converters/semicolon.ts rename to src/converters/lintConfigs/rules/ruleConverters/semicolon.ts index 21547d369..04707136d 100644 --- a/src/rules/converters/semicolon.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/semicolon.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertSemicolon: RuleConverter = (tslintRule) => { const getMultilineDelimiter = (strategy: "always" | "never") => { diff --git a/src/rules/converters/space-before-function-paren.ts b/src/converters/lintConfigs/rules/ruleConverters/space-before-function-paren.ts similarity index 96% rename from src/rules/converters/space-before-function-paren.ts rename to src/converters/lintConfigs/rules/ruleConverters/space-before-function-paren.ts index 0e12159e6..95fd618ee 100644 --- a/src/rules/converters/space-before-function-paren.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/space-before-function-paren.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const SUPPORTED_OPTIONS: string[] = ["anonymous", "asyncArrow", "named"]; diff --git a/src/rules/converters/space-within-parens.ts b/src/converters/lintConfigs/rules/ruleConverters/space-within-parens.ts similarity index 91% rename from src/rules/converters/space-within-parens.ts rename to src/converters/lintConfigs/rules/ruleConverters/space-within-parens.ts index 3a8bf9e1c..6d2a0e1a5 100644 --- a/src/rules/converters/space-within-parens.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/space-within-parens.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertSpaceWithinParens: RuleConverter = (tslintRule) => { let notices: string[] | undefined; diff --git a/src/rules/converters/strict-boolean-expressions.ts b/src/converters/lintConfigs/rules/ruleConverters/strict-boolean-expressions.ts similarity index 96% rename from src/rules/converters/strict-boolean-expressions.ts rename to src/converters/lintConfigs/rules/ruleConverters/strict-boolean-expressions.ts index 169155fb5..bcdfe6c73 100644 --- a/src/rules/converters/strict-boolean-expressions.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/strict-boolean-expressions.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const ForbiddenOtherNonBooleanTypes = "String, number, enum, and mixed union types are now forbidden."; diff --git a/src/rules/converters/switch-default.ts b/src/converters/lintConfigs/rules/ruleConverters/switch-default.ts similarity index 78% rename from src/rules/converters/switch-default.ts rename to src/converters/lintConfigs/rules/ruleConverters/switch-default.ts index 4f6749f44..2f11c1b1b 100644 --- a/src/rules/converters/switch-default.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/switch-default.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertSwitchDefault: RuleConverter = () => { return { diff --git a/src/rules/converters/tests/adjacent-overload-signatures.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/adjacent-overload-signatures.test.ts similarity index 100% rename from src/rules/converters/tests/adjacent-overload-signatures.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/adjacent-overload-signatures.test.ts diff --git a/src/rules/converters/tests/align.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/align.test.ts similarity index 100% rename from src/rules/converters/tests/align.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/align.test.ts diff --git a/src/rules/converters/tests/array-type.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/array-type.test.ts similarity index 100% rename from src/rules/converters/tests/array-type.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/array-type.test.ts diff --git a/src/rules/converters/tests/arrow-parens.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/arrow-parens.test.ts similarity index 100% rename from src/rules/converters/tests/arrow-parens.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/arrow-parens.test.ts diff --git a/src/rules/converters/tests/arrow-return-shorthand.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/arrow-return-shorthand.test.ts similarity index 100% rename from src/rules/converters/tests/arrow-return-shorthand.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/arrow-return-shorthand.test.ts diff --git a/src/rules/converters/tests/await-promise.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/await-promise.test.ts similarity index 100% rename from src/rules/converters/tests/await-promise.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/await-promise.test.ts diff --git a/src/rules/converters/tests/ban-comma-operator.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/ban-comma-operator.test.ts similarity index 100% rename from src/rules/converters/tests/ban-comma-operator.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/ban-comma-operator.test.ts diff --git a/src/rules/converters/tests/ban-ts-ignore.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/ban-ts-ignore.test.ts similarity index 100% rename from src/rules/converters/tests/ban-ts-ignore.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/ban-ts-ignore.test.ts diff --git a/src/rules/converters/tests/ban-types.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/ban-types.test.ts similarity index 100% rename from src/rules/converters/tests/ban-types.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/ban-types.test.ts diff --git a/src/rules/converters/tests/binary-expression-operand-order.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/binary-expression-operand-order.test.ts similarity index 100% rename from src/rules/converters/tests/binary-expression-operand-order.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/binary-expression-operand-order.test.ts diff --git a/src/rules/converters/tests/callable-types.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/callable-types.test.ts similarity index 100% rename from src/rules/converters/tests/callable-types.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/callable-types.test.ts diff --git a/src/rules/converters/tests/class-name.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/class-name.test.ts similarity index 100% rename from src/rules/converters/tests/class-name.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/class-name.test.ts diff --git a/src/rules/converters/tests/comment-format.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/comment-format.test.ts similarity index 100% rename from src/rules/converters/tests/comment-format.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/comment-format.test.ts diff --git a/src/rules/converters/tests/curly.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/curly.test.ts similarity index 100% rename from src/rules/converters/tests/curly.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/curly.test.ts diff --git a/src/rules/converters/tests/cyclomatic-complexity.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/cyclomatic-complexity.test.ts similarity index 100% rename from src/rules/converters/tests/cyclomatic-complexity.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/cyclomatic-complexity.test.ts diff --git a/src/rules/converters/tests/deprecation.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/deprecation.test.ts similarity index 100% rename from src/rules/converters/tests/deprecation.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/deprecation.test.ts diff --git a/src/rules/converters/tests/eofline.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/eofline.test.ts similarity index 100% rename from src/rules/converters/tests/eofline.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/eofline.test.ts diff --git a/src/rules/converters/tests/file-name-casing.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/file-name-casing.test.ts similarity index 100% rename from src/rules/converters/tests/file-name-casing.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/file-name-casing.test.ts diff --git a/src/rules/converters/tests/forin.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/forin.test.ts similarity index 100% rename from src/rules/converters/tests/forin.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/forin.test.ts diff --git a/src/rules/converters/tests/function-constructor.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/function-constructor.test.ts similarity index 100% rename from src/rules/converters/tests/function-constructor.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/function-constructor.test.ts diff --git a/src/rules/converters/tests/import-blacklist.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/import-blacklist.test.ts similarity index 100% rename from src/rules/converters/tests/import-blacklist.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/import-blacklist.test.ts diff --git a/src/rules/converters/tests/increment-decrement.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/increment-decrement.test.ts similarity index 100% rename from src/rules/converters/tests/increment-decrement.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/increment-decrement.test.ts diff --git a/src/rules/converters/tests/indent.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/indent.test.ts similarity index 100% rename from src/rules/converters/tests/indent.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/indent.test.ts diff --git a/src/rules/converters/tests/interface-name.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/interface-name.test.ts similarity index 100% rename from src/rules/converters/tests/interface-name.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/interface-name.test.ts diff --git a/src/rules/converters/tests/interface-over-type-literal.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/interface-over-type-literal.test.ts similarity index 100% rename from src/rules/converters/tests/interface-over-type-literal.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/interface-over-type-literal.test.ts diff --git a/src/rules/converters/tests/jsdoc-format.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/jsdoc-format.test.ts similarity index 100% rename from src/rules/converters/tests/jsdoc-format.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/jsdoc-format.test.ts diff --git a/src/rules/converters/tests/label-position.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/label-position.test.ts similarity index 100% rename from src/rules/converters/tests/label-position.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/label-position.test.ts diff --git a/src/rules/converters/tests/linebreak-style.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/linebreak-style.test.ts similarity index 100% rename from src/rules/converters/tests/linebreak-style.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/linebreak-style.test.ts diff --git a/src/rules/converters/tests/max-classes-per-file.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/max-classes-per-file.test.ts similarity index 100% rename from src/rules/converters/tests/max-classes-per-file.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/max-classes-per-file.test.ts diff --git a/src/rules/converters/tests/max-file-line-count.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/max-file-line-count.test.ts similarity index 100% rename from src/rules/converters/tests/max-file-line-count.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/max-file-line-count.test.ts diff --git a/src/rules/converters/tests/max-line-length.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/max-line-length.test.ts similarity index 100% rename from src/rules/converters/tests/max-line-length.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/max-line-length.test.ts diff --git a/src/rules/converters/tests/member-access.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/member-access.test.ts similarity index 100% rename from src/rules/converters/tests/member-access.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/member-access.test.ts diff --git a/src/rules/converters/tests/member-ordering.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/member-ordering.test.ts similarity index 100% rename from src/rules/converters/tests/member-ordering.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/member-ordering.test.ts diff --git a/src/rules/converters/tests/new-parens.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/new-parens.test.ts similarity index 100% rename from src/rules/converters/tests/new-parens.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/new-parens.test.ts diff --git a/src/rules/converters/tests/newline-before-return.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/newline-before-return.test.ts similarity index 100% rename from src/rules/converters/tests/newline-before-return.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/newline-before-return.test.ts diff --git a/src/rules/converters/tests/newline-per-chained-call.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/newline-per-chained-call.test.ts similarity index 100% rename from src/rules/converters/tests/newline-per-chained-call.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/newline-per-chained-call.test.ts diff --git a/src/rules/converters/tests/no-angle-bracket-type-assertion.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-angle-bracket-type-assertion.test.ts similarity index 100% rename from src/rules/converters/tests/no-angle-bracket-type-assertion.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-angle-bracket-type-assertion.test.ts diff --git a/src/rules/converters/tests/no-arg.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-arg.test.ts similarity index 100% rename from src/rules/converters/tests/no-arg.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-arg.test.ts diff --git a/src/rules/converters/tests/no-async-without-await.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-async-without-await.test.ts similarity index 100% rename from src/rules/converters/tests/no-async-without-await.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-async-without-await.test.ts diff --git a/src/rules/converters/tests/no-banned-terms.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-banned-terms.test.ts similarity index 100% rename from src/rules/converters/tests/no-banned-terms.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-banned-terms.test.ts diff --git a/src/rules/converters/tests/no-bitwise.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-bitwise.test.ts similarity index 100% rename from src/rules/converters/tests/no-bitwise.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-bitwise.test.ts diff --git a/src/rules/converters/tests/no-boolean-literal-compare.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-boolean-literal-compare.test.ts similarity index 100% rename from src/rules/converters/tests/no-boolean-literal-compare.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-boolean-literal-compare.test.ts diff --git a/src/rules/converters/tests/no-conditional-assignment.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-conditional-assignment.test.ts similarity index 100% rename from src/rules/converters/tests/no-conditional-assignment.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-conditional-assignment.test.ts diff --git a/src/rules/converters/tests/no-consecutive-blank-lines.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-consecutive-blank-lines.test.ts similarity index 100% rename from src/rules/converters/tests/no-consecutive-blank-lines.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-consecutive-blank-lines.test.ts diff --git a/src/rules/converters/tests/no-console.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-console.test.ts similarity index 100% rename from src/rules/converters/tests/no-console.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-console.test.ts diff --git a/src/rules/converters/tests/no-constant-condition.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-constant-condition.test.ts similarity index 100% rename from src/rules/converters/tests/no-constant-condition.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-constant-condition.test.ts diff --git a/src/rules/converters/tests/no-construct.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-construct.test.ts similarity index 100% rename from src/rules/converters/tests/no-construct.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-construct.test.ts diff --git a/src/rules/converters/tests/no-control-regex.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-control-regex.test.ts similarity index 100% rename from src/rules/converters/tests/no-control-regex.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-control-regex.test.ts diff --git a/src/rules/converters/tests/no-debugger.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-debugger.test.ts similarity index 100% rename from src/rules/converters/tests/no-debugger.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-debugger.test.ts diff --git a/src/rules/converters/tests/no-default-export.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-default-export.test.ts similarity index 100% rename from src/rules/converters/tests/no-default-export.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-default-export.test.ts diff --git a/src/rules/converters/tests/no-duplicate-imports.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-imports.test.ts similarity index 100% rename from src/rules/converters/tests/no-duplicate-imports.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-imports.test.ts diff --git a/src/rules/converters/tests/no-duplicate-super.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-super.test.ts similarity index 100% rename from src/rules/converters/tests/no-duplicate-super.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-super.test.ts diff --git a/src/rules/converters/tests/no-duplicate-switch-case.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-switch-case.test.ts similarity index 100% rename from src/rules/converters/tests/no-duplicate-switch-case.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-switch-case.test.ts diff --git a/src/rules/converters/tests/no-duplicate-variable.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-variable.test.ts similarity index 100% rename from src/rules/converters/tests/no-duplicate-variable.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-duplicate-variable.test.ts diff --git a/src/rules/converters/tests/no-empty-interface.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-empty-interface.test.ts similarity index 100% rename from src/rules/converters/tests/no-empty-interface.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-empty-interface.test.ts diff --git a/src/rules/converters/tests/no-empty.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-empty.test.ts similarity index 100% rename from src/rules/converters/tests/no-empty.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-empty.test.ts diff --git a/src/rules/converters/tests/no-eval.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-eval.test.ts similarity index 100% rename from src/rules/converters/tests/no-eval.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-eval.test.ts diff --git a/src/rules/converters/tests/no-explicit-any.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-explicit-any.test.ts similarity index 100% rename from src/rules/converters/tests/no-explicit-any.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-explicit-any.test.ts diff --git a/src/rules/converters/tests/no-floating-promises.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-floating-promises.test.ts similarity index 100% rename from src/rules/converters/tests/no-floating-promises.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-floating-promises.test.ts diff --git a/src/rules/converters/tests/no-for-in-array.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-for-in-array.test.ts similarity index 100% rename from src/rules/converters/tests/no-for-in-array.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-for-in-array.test.ts diff --git a/src/rules/converters/tests/no-for-in.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-for-in.test.ts similarity index 100% rename from src/rules/converters/tests/no-for-in.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-for-in.test.ts diff --git a/src/rules/converters/tests/no-implicit-dependencies.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-implicit-dependencies.test.ts similarity index 100% rename from src/rules/converters/tests/no-implicit-dependencies.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-implicit-dependencies.test.ts diff --git a/src/rules/converters/tests/no-import-side-effect.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-import-side-effect.test.ts similarity index 100% rename from src/rules/converters/tests/no-import-side-effect.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-import-side-effect.test.ts diff --git a/src/rules/converters/tests/no-inferrable-types.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-inferrable-types.test.ts similarity index 100% rename from src/rules/converters/tests/no-inferrable-types.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-inferrable-types.test.ts diff --git a/src/rules/converters/tests/no-internal-module.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-internal-module.test.ts similarity index 100% rename from src/rules/converters/tests/no-internal-module.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-internal-module.test.ts diff --git a/src/rules/converters/tests/no-invalid-regexp.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-regexp.test.ts similarity index 100% rename from src/rules/converters/tests/no-invalid-regexp.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-regexp.test.ts diff --git a/src/rules/converters/tests/no-invalid-template-strings.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-template-strings.test.ts similarity index 100% rename from src/rules/converters/tests/no-invalid-template-strings.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-template-strings.test.ts diff --git a/src/rules/converters/tests/no-invalid-this.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-this.test.ts similarity index 100% rename from src/rules/converters/tests/no-invalid-this.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-invalid-this.test.ts diff --git a/src/rules/converters/tests/no-irregular-whitespace.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-irregular-whitespace.test.ts similarity index 100% rename from src/rules/converters/tests/no-irregular-whitespace.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-irregular-whitespace.test.ts diff --git a/src/rules/converters/tests/no-magic-numbers.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-magic-numbers.test.ts similarity index 100% rename from src/rules/converters/tests/no-magic-numbers.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-magic-numbers.test.ts diff --git a/src/rules/converters/tests/no-misused-new.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-misused-new.test.ts similarity index 100% rename from src/rules/converters/tests/no-misused-new.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-misused-new.test.ts diff --git a/src/rules/converters/tests/no-multiline-string.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-multiline-string.test.ts similarity index 100% rename from src/rules/converters/tests/no-multiline-string.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-multiline-string.test.ts diff --git a/src/rules/converters/tests/no-namespace.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-namespace.test.ts similarity index 100% rename from src/rules/converters/tests/no-namespace.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-namespace.test.ts diff --git a/src/rules/converters/tests/no-non-null-assertion.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-non-null-assertion.test.ts similarity index 100% rename from src/rules/converters/tests/no-non-null-assertion.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-non-null-assertion.test.ts diff --git a/src/rules/converters/tests/no-null-keyword.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-null-keyword.test.ts similarity index 100% rename from src/rules/converters/tests/no-null-keyword.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-null-keyword.test.ts diff --git a/src/rules/converters/tests/no-object-literal-type-assertion.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-object-literal-type-assertion.test.ts similarity index 100% rename from src/rules/converters/tests/no-object-literal-type-assertion.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-object-literal-type-assertion.test.ts diff --git a/src/rules/converters/tests/no-octal-literal.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-octal-literal.test.ts similarity index 100% rename from src/rules/converters/tests/no-octal-literal.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-octal-literal.test.ts diff --git a/src/rules/converters/tests/no-parameter-properties.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-parameter-properties.test.ts similarity index 100% rename from src/rules/converters/tests/no-parameter-properties.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-parameter-properties.test.ts diff --git a/src/rules/converters/tests/no-parameter-reassignment.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-parameter-reassignment.test.ts similarity index 100% rename from src/rules/converters/tests/no-parameter-reassignment.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-parameter-reassignment.test.ts diff --git a/src/rules/converters/tests/no-redundant-jsdoc.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-redundant-jsdoc.test.ts similarity index 100% rename from src/rules/converters/tests/no-redundant-jsdoc.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-redundant-jsdoc.test.ts diff --git a/src/rules/converters/tests/no-reference-import.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-reference-import.test.ts similarity index 100% rename from src/rules/converters/tests/no-reference-import.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-reference-import.test.ts diff --git a/src/rules/converters/tests/no-reference.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-reference.test.ts similarity index 100% rename from src/rules/converters/tests/no-reference.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-reference.test.ts diff --git a/src/rules/converters/tests/no-regex-spaces.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-regex-spaces.test.ts similarity index 100% rename from src/rules/converters/tests/no-regex-spaces.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-regex-spaces.test.ts diff --git a/src/rules/converters/tests/no-require-imports.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-require-imports.test.ts similarity index 100% rename from src/rules/converters/tests/no-require-imports.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-require-imports.test.ts diff --git a/src/rules/converters/tests/no-return-await.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-return-await.test.ts similarity index 100% rename from src/rules/converters/tests/no-return-await.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-return-await.test.ts diff --git a/src/rules/converters/tests/no-shadowed-variable.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-shadowed-variable.test.ts similarity index 100% rename from src/rules/converters/tests/no-shadowed-variable.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-shadowed-variable.test.ts diff --git a/src/rules/converters/tests/no-sparse-arrays.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-sparse-arrays.test.ts similarity index 100% rename from src/rules/converters/tests/no-sparse-arrays.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-sparse-arrays.test.ts diff --git a/src/rules/converters/tests/no-string-literal.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-string-literal.test.ts similarity index 100% rename from src/rules/converters/tests/no-string-literal.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-string-literal.test.ts diff --git a/src/rules/converters/tests/no-string-throw.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-string-throw.test.ts similarity index 100% rename from src/rules/converters/tests/no-string-throw.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-string-throw.test.ts diff --git a/src/rules/converters/tests/no-submodule-imports.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-submodule-imports.test.ts similarity index 100% rename from src/rules/converters/tests/no-submodule-imports.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-submodule-imports.test.ts diff --git a/src/rules/converters/tests/no-switch-case-fall-through.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-switch-case-fall-through.test.ts similarity index 100% rename from src/rules/converters/tests/no-switch-case-fall-through.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-switch-case-fall-through.test.ts diff --git a/src/rules/converters/tests/no-this-assignment.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-this-assignment.test.ts similarity index 100% rename from src/rules/converters/tests/no-this-assignment.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-this-assignment.test.ts diff --git a/src/rules/converters/tests/no-trailing-whitespace.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-trailing-whitespace.test.ts similarity index 100% rename from src/rules/converters/tests/no-trailing-whitespace.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-trailing-whitespace.test.ts diff --git a/src/rules/converters/tests/no-unbound-method.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unbound-method.test.ts similarity index 100% rename from src/rules/converters/tests/no-unbound-method.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unbound-method.test.ts diff --git a/src/rules/converters/tests/no-unnecessary-class.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-class.test.ts similarity index 100% rename from src/rules/converters/tests/no-unnecessary-class.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-class.test.ts diff --git a/src/rules/converters/tests/no-unnecessary-initializer.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-initializer.test.ts similarity index 100% rename from src/rules/converters/tests/no-unnecessary-initializer.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-initializer.test.ts diff --git a/src/rules/converters/tests/no-unnecessary-qualifier.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-qualifier.test.ts similarity index 100% rename from src/rules/converters/tests/no-unnecessary-qualifier.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-qualifier.test.ts diff --git a/src/rules/converters/tests/no-unnecessary-semicolons.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-semicolons.test.ts similarity index 100% rename from src/rules/converters/tests/no-unnecessary-semicolons.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-semicolons.test.ts diff --git a/src/rules/converters/tests/no-unnecessary-type-assertion.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-type-assertion.test.ts similarity index 100% rename from src/rules/converters/tests/no-unnecessary-type-assertion.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unnecessary-type-assertion.test.ts diff --git a/src/rules/converters/tests/no-unsafe-finally.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unsafe-finally.test.ts similarity index 100% rename from src/rules/converters/tests/no-unsafe-finally.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unsafe-finally.test.ts diff --git a/src/rules/converters/tests/no-unused-expression.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unused-expression.test.ts similarity index 100% rename from src/rules/converters/tests/no-unused-expression.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unused-expression.test.ts diff --git a/src/rules/converters/tests/no-unused-variable.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-unused-variable.test.ts similarity index 100% rename from src/rules/converters/tests/no-unused-variable.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-unused-variable.test.ts diff --git a/src/rules/converters/tests/no-use-before-declare.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-use-before-declare.test.ts similarity index 100% rename from src/rules/converters/tests/no-use-before-declare.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-use-before-declare.test.ts diff --git a/src/rules/converters/tests/no-var-keyword.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-var-keyword.test.ts similarity index 100% rename from src/rules/converters/tests/no-var-keyword.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-var-keyword.test.ts diff --git a/src/rules/converters/tests/no-var-requires.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-var-requires.test.ts similarity index 100% rename from src/rules/converters/tests/no-var-requires.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-var-requires.test.ts diff --git a/src/rules/converters/tests/no-void-expression.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/no-void-expression.test.ts similarity index 100% rename from src/rules/converters/tests/no-void-expression.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/no-void-expression.test.ts diff --git a/src/rules/converters/tests/object-literal-key-quotes.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/object-literal-key-quotes.test.ts similarity index 100% rename from src/rules/converters/tests/object-literal-key-quotes.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/object-literal-key-quotes.test.ts diff --git a/src/rules/converters/tests/object-literal-shorthand.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/object-literal-shorthand.test.ts similarity index 100% rename from src/rules/converters/tests/object-literal-shorthand.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/object-literal-shorthand.test.ts diff --git a/src/rules/converters/tests/one-line.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/one-line.test.ts similarity index 100% rename from src/rules/converters/tests/one-line.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/one-line.test.ts diff --git a/src/rules/converters/tests/one-variable-per-declaration.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/one-variable-per-declaration.test.ts similarity index 100% rename from src/rules/converters/tests/one-variable-per-declaration.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/one-variable-per-declaration.test.ts diff --git a/src/rules/converters/tests/only-arrow-functions.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/only-arrow-functions.test.ts similarity index 100% rename from src/rules/converters/tests/only-arrow-functions.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/only-arrow-functions.test.ts diff --git a/src/rules/converters/tests/ordered-imports.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/ordered-imports.test.ts similarity index 100% rename from src/rules/converters/tests/ordered-imports.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/ordered-imports.test.ts diff --git a/src/rules/converters/tests/prefer-const.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-const.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-const.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-const.test.ts diff --git a/src/rules/converters/tests/prefer-for-of.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-for-of.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-for-of.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-for-of.test.ts diff --git a/src/rules/converters/tests/prefer-function-over-method.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-function-over-method.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-function-over-method.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-function-over-method.test.ts diff --git a/src/rules/converters/tests/prefer-object-spread.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-object-spread.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-object-spread.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-object-spread.test.ts diff --git a/src/rules/converters/tests/prefer-readonly.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-readonly.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-readonly.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-readonly.test.ts diff --git a/src/rules/converters/tests/prefer-template.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/prefer-template.test.ts similarity index 100% rename from src/rules/converters/tests/prefer-template.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/prefer-template.test.ts diff --git a/src/rules/converters/tests/promise-function-async.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/promise-function-async.test.ts similarity index 100% rename from src/rules/converters/tests/promise-function-async.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/promise-function-async.test.ts diff --git a/src/rules/converters/tests/quotemark.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/quotemark.test.ts similarity index 100% rename from src/rules/converters/tests/quotemark.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/quotemark.test.ts diff --git a/src/rules/converters/tests/radix.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/radix.test.ts similarity index 100% rename from src/rules/converters/tests/radix.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/radix.test.ts diff --git a/src/rules/converters/tests/restrict-plus-operands.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/restrict-plus-operands.test.ts similarity index 100% rename from src/rules/converters/tests/restrict-plus-operands.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/restrict-plus-operands.test.ts diff --git a/src/rules/converters/tests/semicolon.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/semicolon.test.ts similarity index 100% rename from src/rules/converters/tests/semicolon.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/semicolon.test.ts diff --git a/src/rules/converters/tests/space-before-function-paren.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/space-before-function-paren.test.ts similarity index 100% rename from src/rules/converters/tests/space-before-function-paren.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/space-before-function-paren.test.ts diff --git a/src/rules/converters/tests/space-within-parens.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/space-within-parens.test.ts similarity index 100% rename from src/rules/converters/tests/space-within-parens.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/space-within-parens.test.ts diff --git a/src/rules/converters/tests/strict-boolean-expressions.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/strict-boolean-expressions.test.ts similarity index 100% rename from src/rules/converters/tests/strict-boolean-expressions.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/strict-boolean-expressions.test.ts diff --git a/src/rules/converters/tests/switch-default.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/switch-default.test.ts similarity index 100% rename from src/rules/converters/tests/switch-default.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/switch-default.test.ts diff --git a/src/rules/converters/tests/trailing-comma.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/trailing-comma.test.ts similarity index 100% rename from src/rules/converters/tests/trailing-comma.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/trailing-comma.test.ts diff --git a/src/rules/converters/tests/triple-equals.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/triple-equals.test.ts similarity index 100% rename from src/rules/converters/tests/triple-equals.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/triple-equals.test.ts diff --git a/src/rules/converters/tests/type-literal-delimiter.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/type-literal-delimiter.test.ts similarity index 100% rename from src/rules/converters/tests/type-literal-delimiter.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/type-literal-delimiter.test.ts diff --git a/src/rules/converters/tests/typedef-whitespace.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/typedef-whitespace.test.ts similarity index 100% rename from src/rules/converters/tests/typedef-whitespace.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/typedef-whitespace.test.ts diff --git a/src/rules/converters/tests/typeof-compare.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/typeof-compare.test.ts similarity index 100% rename from src/rules/converters/tests/typeof-compare.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/typeof-compare.test.ts diff --git a/src/rules/converters/tests/unified-signatures.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/unified-signatures.test.ts similarity index 100% rename from src/rules/converters/tests/unified-signatures.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/unified-signatures.test.ts diff --git a/src/rules/converters/tests/unnecessary-bind.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/unnecessary-bind.test.ts similarity index 100% rename from src/rules/converters/tests/unnecessary-bind.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/unnecessary-bind.test.ts diff --git a/src/rules/converters/tests/unnecessary-constructor.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/unnecessary-constructor.test.ts similarity index 100% rename from src/rules/converters/tests/unnecessary-constructor.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/unnecessary-constructor.test.ts diff --git a/src/rules/converters/tests/use-default-type-parameter.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/use-default-type-parameter.test.ts similarity index 100% rename from src/rules/converters/tests/use-default-type-parameter.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/use-default-type-parameter.test.ts diff --git a/src/rules/converters/tests/use-isnan.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/use-isnan.test.ts similarity index 100% rename from src/rules/converters/tests/use-isnan.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/use-isnan.test.ts diff --git a/src/rules/converters/tests/variable-name.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/variable-name.test.ts similarity index 100% rename from src/rules/converters/tests/variable-name.test.ts rename to src/converters/lintConfigs/rules/ruleConverters/tests/variable-name.test.ts diff --git a/src/rules/converters/trailing-comma.ts b/src/converters/lintConfigs/rules/ruleConverters/trailing-comma.ts similarity index 99% rename from src/rules/converters/trailing-comma.ts rename to src/converters/lintConfigs/rules/ruleConverters/trailing-comma.ts index 1755a314a..ab344c0e4 100644 --- a/src/rules/converters/trailing-comma.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/trailing-comma.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const unsupportedKeyInEsLint = "typeLiterals"; diff --git a/src/rules/converters/triple-equals.ts b/src/converters/lintConfigs/rules/ruleConverters/triple-equals.ts similarity index 96% rename from src/rules/converters/triple-equals.ts rename to src/converters/lintConfigs/rules/ruleConverters/triple-equals.ts index fc39ac599..81f586c62 100644 --- a/src/rules/converters/triple-equals.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/triple-equals.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; const smartOptionNotice = 'Option "smart" allows for comparing two literal values, evaluating the value of typeof and null comparisons.'; diff --git a/src/rules/converters/type-literal-delimiter.ts b/src/converters/lintConfigs/rules/ruleConverters/type-literal-delimiter.ts similarity index 81% rename from src/rules/converters/type-literal-delimiter.ts rename to src/converters/lintConfigs/rules/ruleConverters/type-literal-delimiter.ts index 39ecdfa79..afaf7d679 100644 --- a/src/rules/converters/type-literal-delimiter.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/type-literal-delimiter.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertTypeLiteralDelimiter: RuleConverter = () => { return { diff --git a/src/rules/converters/typedef-whitespace.ts b/src/converters/lintConfigs/rules/ruleConverters/typedef-whitespace.ts similarity index 81% rename from src/rules/converters/typedef-whitespace.ts rename to src/converters/lintConfigs/rules/ruleConverters/typedef-whitespace.ts index b8bf4d744..a9852a8ad 100644 --- a/src/rules/converters/typedef-whitespace.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/typedef-whitespace.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertTypedefWhitespace: RuleConverter = () => { return { diff --git a/src/rules/converters/typeof-compare.ts b/src/converters/lintConfigs/rules/ruleConverters/typeof-compare.ts similarity index 78% rename from src/rules/converters/typeof-compare.ts rename to src/converters/lintConfigs/rules/ruleConverters/typeof-compare.ts index 50aaea2de..f0f966865 100644 --- a/src/rules/converters/typeof-compare.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/typeof-compare.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertTypeofCompare: RuleConverter = () => { return { diff --git a/src/rules/converters/unified-signatures.ts b/src/converters/lintConfigs/rules/ruleConverters/unified-signatures.ts similarity index 80% rename from src/rules/converters/unified-signatures.ts rename to src/converters/lintConfigs/rules/ruleConverters/unified-signatures.ts index b8ee26c42..f0ea3c199 100644 --- a/src/rules/converters/unified-signatures.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/unified-signatures.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertUnifiedSignatures: RuleConverter = () => { return { diff --git a/src/rules/converters/unnecessary-bind.ts b/src/converters/lintConfigs/rules/ruleConverters/unnecessary-bind.ts similarity index 78% rename from src/rules/converters/unnecessary-bind.ts rename to src/converters/lintConfigs/rules/ruleConverters/unnecessary-bind.ts index 42c92aea5..f30a29946 100644 --- a/src/rules/converters/unnecessary-bind.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/unnecessary-bind.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertUnnecessaryBind: RuleConverter = () => { return { diff --git a/src/rules/converters/unnecessary-constructor.ts b/src/converters/lintConfigs/rules/ruleConverters/unnecessary-constructor.ts similarity index 80% rename from src/rules/converters/unnecessary-constructor.ts rename to src/converters/lintConfigs/rules/ruleConverters/unnecessary-constructor.ts index d67c44e92..56464bc7c 100644 --- a/src/rules/converters/unnecessary-constructor.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/unnecessary-constructor.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertUnnecessaryConstructor: RuleConverter = () => { return { diff --git a/src/rules/converters/use-default-type-parameter.ts b/src/converters/lintConfigs/rules/ruleConverters/use-default-type-parameter.ts similarity index 82% rename from src/rules/converters/use-default-type-parameter.ts rename to src/converters/lintConfigs/rules/ruleConverters/use-default-type-parameter.ts index 092f9725d..d53329b12 100644 --- a/src/rules/converters/use-default-type-parameter.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/use-default-type-parameter.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertUseDefaultTypeParameter: RuleConverter = () => { return { diff --git a/src/rules/converters/use-isnan.ts b/src/converters/lintConfigs/rules/ruleConverters/use-isnan.ts similarity index 77% rename from src/rules/converters/use-isnan.ts rename to src/converters/lintConfigs/rules/ruleConverters/use-isnan.ts index ca5f06c4c..208ad56c9 100644 --- a/src/rules/converters/use-isnan.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/use-isnan.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertUseIsnan: RuleConverter = () => { return { diff --git a/src/rules/converters/variable-name.ts b/src/converters/lintConfigs/rules/ruleConverters/variable-name.ts similarity index 98% rename from src/rules/converters/variable-name.ts rename to src/converters/lintConfigs/rules/ruleConverters/variable-name.ts index 0fef98663..2ceaa5c4c 100644 --- a/src/rules/converters/variable-name.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/variable-name.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const ConstRequiredForAllCapsMsg = "typescript-eslint does not enforce uppercase for const only."; diff --git a/src/rules/merger.ts b/src/converters/lintConfigs/rules/ruleMerger.ts similarity index 100% rename from src/rules/merger.ts rename to src/converters/lintConfigs/rules/ruleMerger.ts diff --git a/src/converters/lintConfigs/rules/ruleMergers.ts b/src/converters/lintConfigs/rules/ruleMergers.ts new file mode 100644 index 000000000..66343a16f --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleMergers.ts @@ -0,0 +1,21 @@ +import { mergeBanTypes } from "./ruleMergers/ban-types"; +import { mergeConsistentTypeAssertions } from "./ruleMergers/consistent-type-assertions"; +import { mergeIndent } from "./ruleMergers/indent"; +import { mergeNamingConvention } from "./ruleMergers/naming-convention"; +import { mergeNoCaller } from "./ruleMergers/no-caller"; +import { mergeNoEval } from "./ruleMergers/no-eval"; +import { mergeNoMemberDelimiterStyle } from "./ruleMergers/member-delimiter-style"; +import { mergeNoUnnecessaryTypeAssertion } from "./ruleMergers/no-unnecessary-type-assertion"; +import { mergeTripleSlashReference } from "./ruleMergers/triple-slash-reference"; + +export const ruleMergers = new Map([ + ["@typescript-eslint/ban-types", mergeBanTypes], + ["@typescript-eslint/consistent-type-assertions", mergeConsistentTypeAssertions], + ["@typescript-eslint/indent", mergeIndent], + ["@typescript-eslint/member-delimiter-style", mergeNoMemberDelimiterStyle], + ["@typescript-eslint/naming-convention", mergeNamingConvention], + ["@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/ban-types.ts b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts similarity index 72% rename from src/rules/mergers/ban-types.ts rename to src/converters/lintConfigs/rules/ruleMergers/ban-types.ts index 6c66d27b0..32823f97c 100644 --- a/src/rules/mergers/ban-types.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts @@ -1,11 +1,11 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeBanTypes: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { return []; } - // This is mentioned in Architecture.md as an ESLint rule with a merger + // This is mentioned in Architecture/Linters.md as an ESLint rule with a merger return [ { types: { diff --git a/src/rules/mergers/consistent-type-assertions.ts b/src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts similarity index 79% rename from src/rules/mergers/consistent-type-assertions.ts rename to src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts index 24e943df7..7bf79e2f0 100644 --- a/src/rules/mergers/consistent-type-assertions.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeConsistentTypeAssertions: RuleMerger = (existingOptions, newOptions) => { return [existingOptions?.[0] ?? newOptions?.[0]].filter(Boolean); diff --git a/src/rules/mergers/indent.ts b/src/converters/lintConfigs/rules/ruleMergers/indent.ts similarity index 96% rename from src/rules/mergers/indent.ts rename to src/converters/lintConfigs/rules/ruleMergers/indent.ts index c9b8ae69c..ace14ca9d 100644 --- a/src/rules/mergers/indent.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/indent.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; const ESLINT_INDENT_DEFAULT = 4; diff --git a/src/rules/mergers/member-delimiter-style.ts b/src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts similarity index 92% rename from src/rules/mergers/member-delimiter-style.ts rename to src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts index 90dd1b054..6a224dd7c 100644 --- a/src/rules/mergers/member-delimiter-style.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeNoMemberDelimiterStyle: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { diff --git a/src/rules/mergers/naming-convention.ts b/src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts similarity index 84% rename from src/rules/mergers/naming-convention.ts rename to src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts index 78b3614b5..c22ca7c96 100644 --- a/src/rules/mergers/naming-convention.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeNamingConvention: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { diff --git a/src/rules/mergers/no-caller.ts b/src/converters/lintConfigs/rules/ruleMergers/no-caller.ts similarity index 72% rename from src/rules/mergers/no-caller.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-caller.ts index 1d2450fa6..687444e86 100644 --- a/src/rules/mergers/no-caller.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/no-caller.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeNoCaller: RuleMerger = () => { // no-caller rule does not accept any options diff --git a/src/rules/mergers/no-eval.ts b/src/converters/lintConfigs/rules/ruleMergers/no-eval.ts similarity index 93% rename from src/rules/mergers/no-eval.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-eval.ts index 59cf5afe0..da4cff2d4 100644 --- a/src/rules/mergers/no-eval.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/no-eval.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeNoEval: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { diff --git a/src/rules/mergers/no-unnecessary-type-assertion.ts b/src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts similarity index 94% rename from src/rules/mergers/no-unnecessary-type-assertion.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts index fc230e17c..983aeb430 100644 --- a/src/rules/mergers/no-unnecessary-type-assertion.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeNoUnnecessaryTypeAssertion: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { diff --git a/src/rules/mergers/tests/ban-types.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/ban-types.test.ts similarity index 100% rename from src/rules/mergers/tests/ban-types.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/ban-types.test.ts diff --git a/src/rules/mergers/tests/consistent-type-assertions.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/consistent-type-assertions.test.ts similarity index 100% rename from src/rules/mergers/tests/consistent-type-assertions.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/consistent-type-assertions.test.ts diff --git a/src/rules/mergers/tests/indent.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/indent.test.ts similarity index 100% rename from src/rules/mergers/tests/indent.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/indent.test.ts diff --git a/src/rules/mergers/tests/member-delimiter-style.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/member-delimiter-style.test.ts similarity index 100% rename from src/rules/mergers/tests/member-delimiter-style.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/member-delimiter-style.test.ts diff --git a/src/rules/mergers/tests/naming-convention.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/naming-convention.test.ts similarity index 100% rename from src/rules/mergers/tests/naming-convention.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/naming-convention.test.ts diff --git a/src/rules/mergers/tests/no-caller.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/no-caller.test.ts similarity index 100% rename from src/rules/mergers/tests/no-caller.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/no-caller.test.ts diff --git a/src/rules/mergers/tests/no-eval.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/no-eval.test.ts similarity index 100% rename from src/rules/mergers/tests/no-eval.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/no-eval.test.ts diff --git a/src/rules/mergers/tests/no-unnecessary-type-assertion.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/no-unnecessary-type-assertion.test.ts similarity index 100% rename from src/rules/mergers/tests/no-unnecessary-type-assertion.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/no-unnecessary-type-assertion.test.ts diff --git a/src/rules/mergers/tests/triple-slash-reference.test.ts b/src/converters/lintConfigs/rules/ruleMergers/tests/triple-slash-reference.test.ts similarity index 100% rename from src/rules/mergers/tests/triple-slash-reference.test.ts rename to src/converters/lintConfigs/rules/ruleMergers/tests/triple-slash-reference.test.ts diff --git a/src/rules/mergers/triple-slash-reference.ts b/src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts similarity index 78% rename from src/rules/mergers/triple-slash-reference.ts rename to src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts index d89202e19..366e9903a 100644 --- a/src/rules/mergers/triple-slash-reference.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeTripleSlashReference: RuleMerger = (existingOptions, newOptions) => { return [existingOptions?.[0] ?? newOptions?.[0]].filter(Boolean); diff --git a/src/rules/types.ts b/src/converters/lintConfigs/rules/types.ts similarity index 100% rename from src/rules/types.ts rename to src/converters/lintConfigs/rules/types.ts diff --git a/src/creation/summarization/collectTSLintRulesets.test.ts b/src/converters/lintConfigs/summarization/collectTSLintRulesets.test.ts similarity index 100% rename from src/creation/summarization/collectTSLintRulesets.test.ts rename to src/converters/lintConfigs/summarization/collectTSLintRulesets.test.ts diff --git a/src/creation/summarization/collectTSLintRulesets.ts b/src/converters/lintConfigs/summarization/collectTSLintRulesets.ts similarity index 81% rename from src/creation/summarization/collectTSLintRulesets.ts rename to src/converters/lintConfigs/summarization/collectTSLintRulesets.ts index 5d82c3d62..df81f48a2 100644 --- a/src/creation/summarization/collectTSLintRulesets.ts +++ b/src/converters/lintConfigs/summarization/collectTSLintRulesets.ts @@ -1,6 +1,6 @@ -import { OriginalConfigurations } from "../../input/findOriginalConfigurations"; -import { TSLintConfiguration } from "../../input/findTSLintConfiguration"; -import { uniqueFromSources } from "../../utils"; +import { OriginalConfigurations } from "../../../input/findOriginalConfigurations"; +import { TSLintConfiguration } from "../../../input/findTSLintConfiguration"; +import { uniqueFromSources } from "../../../utils"; const nativeExtensions = new Map([ ["tslint:all", ["plugin:@typescript-eslint/all"]], diff --git a/src/creation/summarization/normalizeESLintRules.test.ts b/src/converters/lintConfigs/summarization/normalizeESLintRules.test.ts similarity index 96% rename from src/creation/summarization/normalizeESLintRules.test.ts rename to src/converters/lintConfigs/summarization/normalizeESLintRules.test.ts index a3779b76f..9c56ac898 100644 --- a/src/creation/summarization/normalizeESLintRules.test.ts +++ b/src/converters/lintConfigs/summarization/normalizeESLintRules.test.ts @@ -1,4 +1,4 @@ -import { ESLintConfigurationRules } from "../../input/findESLintConfiguration"; +import { ESLintConfigurationRules } from "../../../input/findESLintConfiguration"; import { normalizeESLintRules } from "./normalizeESLintRules"; const ruleName = "rule-a"; diff --git a/src/creation/summarization/normalizeESLintRules.ts b/src/converters/lintConfigs/summarization/normalizeESLintRules.ts similarity index 88% rename from src/creation/summarization/normalizeESLintRules.ts rename to src/converters/lintConfigs/summarization/normalizeESLintRules.ts index 9c0855c10..9da6ed1c3 100644 --- a/src/creation/summarization/normalizeESLintRules.ts +++ b/src/converters/lintConfigs/summarization/normalizeESLintRules.ts @@ -1,9 +1,9 @@ import { ESLintConfigurationRules, ESLintConfigurationRuleValue, -} from "../../input/findESLintConfiguration"; -import { ESLintRuleOptions, RawESLintRuleSeverity } from "../../rules/types"; +} from "../../../input/findESLintConfiguration"; import { normalizeRawESLintRuleSeverity } from "../pruning/normalizeRawESLintRuleSeverity"; +import { ESLintRuleOptions, RawESLintRuleSeverity } from "../rules/types"; /** * Normalizes raw ESLint rule configurations into our standardized output format. diff --git a/src/creation/summarization/prettier/addPrettierExtensions.test.ts b/src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.test.ts similarity index 80% rename from src/creation/summarization/prettier/addPrettierExtensions.test.ts rename to src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.test.ts index 2f21ece5b..bdbde621f 100644 --- a/src/creation/summarization/prettier/addPrettierExtensions.test.ts +++ b/src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.test.ts @@ -1,4 +1,4 @@ -import { createEmptyConversionResults } from "../../../conversion/conversionResults.stubs"; +import { createEmptyConfigConversionResults } from "../../configConversionResults.stubs"; import { addPrettierExtensions } from "./addPrettierExtensions"; const createStubRuleConversions = (ruleName: string, ruleSeverity: "error" | "off") => @@ -7,7 +7,7 @@ const createStubRuleConversions = (ruleName: string, ruleSeverity: "error" | "of describe("addPrettierExtensions", () => { it("returns false when a matching converted rule is enabled", async () => { // Arrange - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ converted: createStubRuleConversions("max-len", "error"), }); @@ -20,7 +20,7 @@ describe("addPrettierExtensions", () => { it("returns true when a matching converted rule is disabled", async () => { // Arrange - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ converted: createStubRuleConversions("max-len", "off"), }); @@ -33,7 +33,7 @@ describe("addPrettierExtensions", () => { it("returns true when there are no matching converted rules", async () => { // Arrange - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ converted: createStubRuleConversions("unknown", "error"), }); @@ -46,7 +46,7 @@ describe("addPrettierExtensions", () => { it("returns true when prettier is requested", async () => { // Arrange - const ruleConversionResults = createEmptyConversionResults({ + const ruleConversionResults = createEmptyConfigConversionResults({ converted: createStubRuleConversions("max-len", "off"), }); diff --git a/src/creation/summarization/prettier/addPrettierExtensions.ts b/src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.ts similarity index 88% rename from src/creation/summarization/prettier/addPrettierExtensions.ts rename to src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.ts index 703cb6f85..357c6a654 100644 --- a/src/creation/summarization/prettier/addPrettierExtensions.ts +++ b/src/converters/lintConfigs/summarization/prettier/addPrettierExtensions.ts @@ -1,6 +1,6 @@ import prettierRuleSettings from "eslint-config-prettier"; -import { RuleConversionResults } from "../../../rules/convertRules"; +import { RuleConversionResults } from "../../rules/convertRules"; export const addPrettierExtensions = async ( ruleConversionResults: Pick, diff --git a/src/creation/summarization/resolveExtensionNames.test.ts b/src/converters/lintConfigs/summarization/resolveExtensionNames.test.ts similarity index 100% rename from src/creation/summarization/resolveExtensionNames.test.ts rename to src/converters/lintConfigs/summarization/resolveExtensionNames.test.ts diff --git a/src/creation/summarization/resolveExtensionNames.ts b/src/converters/lintConfigs/summarization/resolveExtensionNames.ts similarity index 100% rename from src/creation/summarization/resolveExtensionNames.ts rename to src/converters/lintConfigs/summarization/resolveExtensionNames.ts diff --git a/src/creation/summarization/retrieveExtendsValues.test.ts b/src/converters/lintConfigs/summarization/retrieveExtendsValues.test.ts similarity index 100% rename from src/creation/summarization/retrieveExtendsValues.test.ts rename to src/converters/lintConfigs/summarization/retrieveExtendsValues.test.ts diff --git a/src/creation/summarization/retrieveExtendsValues.ts b/src/converters/lintConfigs/summarization/retrieveExtendsValues.ts similarity index 92% rename from src/creation/summarization/retrieveExtendsValues.ts rename to src/converters/lintConfigs/summarization/retrieveExtendsValues.ts index dced32d41..bd5f5ac6b 100644 --- a/src/creation/summarization/retrieveExtendsValues.ts +++ b/src/converters/lintConfigs/summarization/retrieveExtendsValues.ts @@ -1,7 +1,7 @@ -import { SansDependencies } from "../../binding"; -import { ConfigurationError } from "../../errors/configurationError"; -import { ESLintConfiguration } from "../../input/findESLintConfiguration"; -import { importer } from "../../input/importer"; +import { SansDependencies } from "../../../binding"; +import { ConfigurationError } from "../../../errors/configurationError"; +import { ESLintConfiguration } from "../../../input/findESLintConfiguration"; +import { importer } from "../../../input/importer"; import { resolveExtensionNames } from "./resolveExtensionNames"; export type RetrieveExtendsValuesDependencies = { diff --git a/src/creation/summarization/summarizePackageRules.test.ts b/src/converters/lintConfigs/summarization/summarizePackageRules.test.ts similarity index 89% rename from src/creation/summarization/summarizePackageRules.test.ts rename to src/converters/lintConfigs/summarization/summarizePackageRules.test.ts index e86e8370e..9515616a5 100644 --- a/src/creation/summarization/summarizePackageRules.test.ts +++ b/src/converters/lintConfigs/summarization/summarizePackageRules.test.ts @@ -1,6 +1,6 @@ -import { ConfigurationError } from "../../errors/configurationError"; -import { ESLintRuleOptionsWithArguments } from "../../rules/types"; -import { createEmptyConversionResults } from "../../conversion/conversionResults.stubs"; +import { ConfigurationError } from "../../../errors/configurationError"; +import { createEmptyConfigConversionResults } from "../configConversionResults.stubs"; +import { ESLintRuleOptionsWithArguments } from "../rules/types"; import { summarizePackageRules, SummarizePackageRulesDependencies } from "./summarizePackageRules"; const createStubDependencies = (overrides: Partial = {}) => ({ @@ -35,7 +35,7 @@ describe("summarizePackageRules", () => { const dependencies = createStubDependencies(); const eslint = undefined; const tslint = createStubTSLintConfiguration(); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act const summarizedResults = await summarizePackageRules( @@ -56,7 +56,7 @@ describe("summarizePackageRules", () => { }); const eslint = undefined; const tslint = createStubTSLintConfiguration(); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act const summarizedResults = await summarizePackageRules( @@ -80,7 +80,7 @@ describe("summarizePackageRules", () => { const dependencies = createStubDependencies(); const eslint = createStubESLintConfiguration([]); const tslint = createStubTSLintConfiguration(); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act const summarizedResults = await summarizePackageRules( @@ -118,7 +118,7 @@ describe("summarizePackageRules", () => { const eslintExtends = ["extension-name"]; const eslint = createStubESLintConfiguration(eslintExtends); const tslint = createStubTSLintConfiguration(); - const ruleConversionResults = createEmptyConversionResults(); + const ruleConversionResults = createEmptyConfigConversionResults(); // Act const summarizedResults = await summarizePackageRules( diff --git a/src/creation/summarization/summarizePackageRules.ts b/src/converters/lintConfigs/summarization/summarizePackageRules.ts similarity index 83% rename from src/creation/summarization/summarizePackageRules.ts rename to src/converters/lintConfigs/summarization/summarizePackageRules.ts index fd94473cc..6e13fd3b6 100644 --- a/src/creation/summarization/summarizePackageRules.ts +++ b/src/converters/lintConfigs/summarization/summarizePackageRules.ts @@ -1,16 +1,16 @@ -import { SansDependencies } from "../../binding"; -import { ESLintConfiguration } from "../../input/findESLintConfiguration"; -import { OriginalConfigurations } from "../../input/findOriginalConfigurations"; -import { TSLintConfiguration } from "../../input/findTSLintConfiguration"; -import { RuleConversionResults } from "../../rules/convertRules"; -import { uniqueFromSources } from "../../utils"; +import { SansDependencies } from "../../../binding"; +import { ESLintConfiguration } from "../../../input/findESLintConfiguration"; +import { OriginalConfigurations } from "../../../input/findOriginalConfigurations"; +import { TSLintConfiguration } from "../../../input/findTSLintConfiguration"; +import { uniqueFromSources } from "../../../utils"; import { removeExtendsDuplicatedRules } from "../pruning/removeExtendsDuplicatedRules"; import { normalizeExtensions } from "../pruning/normalizeExtensions"; +import { RuleConversionResults } from "../rules/convertRules"; import { collectTSLintRulesets } from "./collectTSLintRulesets"; +import { normalizeESLintRules } from "./normalizeESLintRules"; import { addPrettierExtensions } from "./prettier/addPrettierExtensions"; import { retrieveExtendsValues } from "./retrieveExtendsValues"; -import { SummarizedResultsConfiguration } from "./types"; -import { normalizeESLintRules } from "./normalizeESLintRules"; +import { SummarizedConfigResultsConfiguration } from "./types"; export type SummarizePackageRulesDependencies = { addPrettierExtensions: typeof addPrettierExtensions; @@ -28,7 +28,7 @@ export const summarizePackageRules = async ( tslint: OriginalConfigurations>, ruleConversionResults: RuleConversionResults, prettierRequested?: boolean, -): Promise => { +): Promise => { const extendedESLintRulesets = eslint?.full.extends ?? []; const extendedTSLintRulesets = collectTSLintRulesets(tslint); const allExtensions = uniqueFromSources(extendedESLintRulesets, extendedTSLintRulesets); diff --git a/src/converters/lintConfigs/summarization/types.ts b/src/converters/lintConfigs/summarization/types.ts new file mode 100644 index 000000000..38f6f9aeb --- /dev/null +++ b/src/converters/lintConfigs/summarization/types.ts @@ -0,0 +1,7 @@ +import { RuleConversionResults } from "../rules/convertRules"; +import { ESLintRuleOptions } from "../rules/types"; + +export type SummarizedConfigResultsConfiguration = RuleConversionResults & { + extends: string[]; + extensionRules: Map; +}; diff --git a/src/creation/writeConversionResults.test.ts b/src/converters/lintConfigs/writeConfigConversionResults.test.ts similarity index 87% rename from src/creation/writeConversionResults.test.ts rename to src/converters/lintConfigs/writeConfigConversionResults.test.ts index 3f21d7a4a..733a5464e 100644 --- a/src/creation/writeConversionResults.test.ts +++ b/src/converters/lintConfigs/writeConfigConversionResults.test.ts @@ -1,11 +1,11 @@ -import { createEmptyConversionResults } from "../conversion/conversionResults.stubs"; -import { AllOriginalConfigurations } from "../input/findOriginalConfigurations"; +import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { createEmptyConfigConversionResults } from "./configConversionResults.stubs"; import { formatJsonOutput } from "./formatting/formatters/formatJsonOutput"; -import { SummarizedResultsConfiguration } from "./summarization/types"; -import { writeConversionResults } from "./writeConversionResults"; +import { SummarizedConfigResultsConfiguration } from "./summarization/types"; +import { writeConfigConversionResults } from "./writeConfigConversionResults"; const createStubOriginalConfigurations = ( - overrides: Partial = {}, + overrides: Partial = {}, ) => ({ tslint: { full: { @@ -20,11 +20,11 @@ const createStubOriginalConfigurations = ( describe("writeConversionResults", () => { it("excludes the tslint plugin when there are no missing rules", async () => { // Arrange - const conversionResults = createEmptyConversionResults(); + const conversionResults = createEmptyConfigConversionResults(); const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -52,7 +52,7 @@ describe("writeConversionResults", () => { it("includes typescript-eslint plugin settings when there are missing rules", async () => { // Arrange - const conversionResults = createEmptyConversionResults({ + const conversionResults = createEmptyConfigConversionResults({ missing: [ { ruleArguments: [], @@ -65,7 +65,7 @@ describe("writeConversionResults", () => { const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -107,7 +107,7 @@ describe("writeConversionResults", () => { it("includes the original eslint configuration when it exists", async () => { // Arrange - const conversionResults = createEmptyConversionResults(); + const conversionResults = createEmptyConfigConversionResults(); const eslint = { full: { env: {}, @@ -125,7 +125,7 @@ describe("writeConversionResults", () => { const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -155,13 +155,13 @@ describe("writeConversionResults", () => { // Arrange const extension = ["stub-extension"]; const conversionResults = { - ...createEmptyConversionResults(), + ...createEmptyConfigConversionResults(), extends: extension, }; const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -190,7 +190,7 @@ describe("writeConversionResults", () => { it("includes raw globals when they exist", async () => { // Arrange - const conversionResults = createEmptyConversionResults(); + const conversionResults = createEmptyConfigConversionResults(); const eslint = { full: { env: {}, @@ -209,7 +209,7 @@ describe("writeConversionResults", () => { const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, diff --git a/src/creation/writeConversionResults.ts b/src/converters/lintConfigs/writeConfigConversionResults.ts similarity index 77% rename from src/creation/writeConversionResults.ts rename to src/converters/lintConfigs/writeConfigConversionResults.ts index 0d1823939..b6254ea45 100644 --- a/src/creation/writeConversionResults.ts +++ b/src/converters/lintConfigs/writeConfigConversionResults.ts @@ -1,19 +1,19 @@ -import { FileSystem } from "../adapters/fileSystem"; -import { AllOriginalConfigurations } from "../input/findOriginalConfigurations"; -import { removeEmptyMembers } from "../utils"; +import { FileSystem } from "../../adapters/fileSystem"; +import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { removeEmptyMembers } from "../../utils"; import { createEnv } from "./eslint/createEnv"; import { formatConvertedRules } from "./formatConvertedRules"; import { formatOutput } from "./formatting/formatOutput"; -import { SummarizedResultsConfiguration } from "./summarization/types"; +import { SummarizedConfigResultsConfiguration } from "./summarization/types"; export type WriteConversionResultsDependencies = { fileSystem: Pick; }; -export const writeConversionResults = async ( +export const writeConfigConversionResults = async ( dependencies: WriteConversionResultsDependencies, outputPath: string, - summarizedResults: SummarizedResultsConfiguration, + summarizedResults: SummarizedConfigResultsConfiguration, originalConfigurations: AllOriginalConfigurations, ) => { const plugins = new Set([...summarizedResults.plugins, "@typescript-eslint"]); diff --git a/src/creation/writeEditorConfigConversionResults.test.ts b/src/converters/lintConfigs/writeEditorConfigConversionResults.test.ts similarity index 77% rename from src/creation/writeEditorConfigConversionResults.test.ts rename to src/converters/lintConfigs/writeEditorConfigConversionResults.test.ts index 4a09d8ecb..7900e2e4c 100644 --- a/src/creation/writeEditorConfigConversionResults.test.ts +++ b/src/converters/lintConfigs/writeEditorConfigConversionResults.test.ts @@ -1,12 +1,12 @@ -import { createStubFileSystem } from "../adapters/fileSystem.stub"; -import { createEmptySettingConversionResults } from "../conversion/conversionResults.stubs"; -import { EditorSettingConversionResults } from "../editorSettings/convertEditorSettings"; -import { EditorSetting } from "../editorSettings/types"; -import { EditorConfiguration } from "../input/editorConfiguration"; -import { DeepPartial } from "../input/findReportedConfiguration"; +import { createStubFileSystem } from "../../adapters/fileSystem.stub"; +import { EditorConfiguration } from "../../input/editorConfiguration"; +import { DeepPartial } from "../../input/findReportedConfiguration"; +import { EditorSettingConversionResults } from "../editorConfigs/convertEditorSettings"; +import { createEmptyEditorSettingConversionResults } from "../editorConfigs/editorConversionResults.stubs"; +import { EditorSetting } from "../editorConfigs/types"; import { formatJsonOutput } from "./formatting/formatters/formatJsonOutput"; import { - writeConversionResults, + writeEditorConfigConversionResults, WriteConversionResultsDependencies, } from "./writeEditorConfigConversionResults"; @@ -23,7 +23,12 @@ describe("writeConversionResults", () => { const { originalConfig, conversionResults } = setupConversionEnvironment(); // Act - await writeConversionResults(dependencies, outputPath, conversionResults, originalConfig); + await writeEditorConfigConversionResults( + dependencies, + outputPath, + conversionResults, + originalConfig, + ); // Assert expect(dependencies.fileSystem.writeFile).toHaveBeenCalledWith( @@ -46,7 +51,7 @@ describe("writeConversionResults", () => { "unsorted.sub.property.a": false, }, }, - conversionResults: createEmptySettingConversionResults({ + conversionResults: createEmptyEditorSettingConversionResults({ converted: new Map([ [ "eslint-setting-b", @@ -78,7 +83,12 @@ describe("writeConversionResults", () => { }); // Act - await writeConversionResults(dependencies, outputPath, conversionResults, originalConfig); + await writeEditorConfigConversionResults( + dependencies, + outputPath, + conversionResults, + originalConfig, + ); // Assert expect(dependencies.fileSystem.writeFile).toHaveBeenCalledWith( @@ -102,7 +112,7 @@ function setupConversionEnvironment( "source.organizeImports": false, }, }, - conversionResults: createEmptySettingConversionResults({ + conversionResults: createEmptyEditorSettingConversionResults({ converted: new Map([ [ "tslint-editor-setting-one", diff --git a/src/creation/writeEditorConfigConversionResults.ts b/src/converters/lintConfigs/writeEditorConfigConversionResults.ts similarity index 74% rename from src/creation/writeEditorConfigConversionResults.ts rename to src/converters/lintConfigs/writeEditorConfigConversionResults.ts index 0d9deba50..7c4bd9dc9 100644 --- a/src/creation/writeEditorConfigConversionResults.ts +++ b/src/converters/lintConfigs/writeEditorConfigConversionResults.ts @@ -1,14 +1,14 @@ -import { FileSystem } from "../adapters/fileSystem"; -import { EditorSettingConversionResults } from "../editorSettings/convertEditorSettings"; -import { EditorConfiguration } from "../input/editorConfiguration"; -import { DeepPartial } from "../input/findReportedConfiguration"; +import { FileSystem } from "../../adapters/fileSystem"; +import { EditorConfiguration } from "../../input/editorConfiguration"; +import { DeepPartial } from "../../input/findReportedConfiguration"; +import { EditorSettingConversionResults } from "../editorConfigs/convertEditorSettings"; import { formatOutput } from "./formatting/formatOutput"; export type WriteConversionResultsDependencies = { fileSystem: Pick; }; -export const writeConversionResults = async ( +export const writeEditorConfigConversionResults = async ( dependencies: WriteConversionResultsDependencies, outputPath: string, conversionResults: EditorSettingConversionResults, diff --git a/src/converters/types.ts b/src/converters/types.ts new file mode 100644 index 000000000..0b64677c5 --- /dev/null +++ b/src/converters/types.ts @@ -0,0 +1,11 @@ +import { AllOriginalConfigurations } from "../input/findOriginalConfigurations"; +import { ResultWithStatus, TSLintToESLintSettings } from "../types"; + +/** + * Standalone (sans dependencies) type for a converter to run in the CLI. + */ +export type Converter = ( + settings: TSLintToESLintSettings, + originalConfigurations: AllOriginalConfigurations, + ruleEquivalents: Map, +) => Promise; diff --git a/src/creation/summarization/types.ts b/src/creation/summarization/types.ts deleted file mode 100644 index 250ae65af..000000000 --- a/src/creation/summarization/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RuleConversionResults } from "../../rules/convertRules"; -import { ESLintRuleOptions } from "../../rules/types"; - -export type SummarizedResultsConfiguration = RuleConversionResults & { - extends: string[]; - extensionRules: Map; -}; diff --git a/src/errors/conversionError.test.ts b/src/errors/conversionError.test.ts index c9981f296..cdfd8e91a 100644 --- a/src/errors/conversionError.test.ts +++ b/src/errors/conversionError.test.ts @@ -1,7 +1,7 @@ import { EOL } from "os"; +import { TSLintRuleOptions } from "../converters/lintConfigs/rules/types"; import { ConversionError } from "./conversionError"; -import { TSLintRuleOptions } from "../rules/types"; describe(ConversionError, () => { describe("getSummary", () => { diff --git a/src/errors/conversionError.ts b/src/errors/conversionError.ts index 1482a5e17..472d0203d 100644 --- a/src/errors/conversionError.ts +++ b/src/errors/conversionError.ts @@ -1,7 +1,7 @@ import { EOL } from "os"; -import { EditorSetting } from "../editorSettings/types"; -import { TSLintRuleOptions } from "../rules/types"; +import { EditorSetting } from "../converters/editorConfigs/types"; +import { TSLintRuleOptions } from "../converters/lintConfigs/rules/types"; import { ErrorSummary } from "./errorSummary"; export class ConversionError implements ErrorSummary { diff --git a/src/input/findESLintConfiguration.ts b/src/input/findESLintConfiguration.ts index 34175eabb..6024c3482 100644 --- a/src/input/findESLintConfiguration.ts +++ b/src/input/findESLintConfiguration.ts @@ -1,6 +1,6 @@ import { Exec } from "../adapters/exec"; import { SansDependencies } from "../binding"; -import { RawESLintRuleSeverity } from "../rules/types"; +import { RawESLintRuleSeverity } from "../converters/lintConfigs/rules/types"; import { TSLintToESLintSettings } from "../types"; import { uniqueFromSources } from "../utils"; import { findRawConfiguration } from "./findRawConfiguration"; diff --git a/src/reporting/reportOutputs.ts b/src/reporting.ts similarity index 64% rename from src/reporting/reportOutputs.ts rename to src/reporting.ts index 3d62799ee..b41f04875 100644 --- a/src/reporting/reportOutputs.ts +++ b/src/reporting.ts @@ -1,16 +1,37 @@ import chalk from "chalk"; import { EOL } from "os"; -import { Logger } from "../adapters/logger"; -import { EditorSetting } from "../editorSettings/types"; -import { ErrorSummary } from "../errors/errorSummary"; -import { ESLintRuleOptions } from "../rules/types"; +import { Logger } from "./adapters/logger"; +import { ErrorSummary } from "./errors/errorSummary"; +import { ResultWithStatus, ResultStatus } from "./types"; -export type EditorSettingEntry = Pick; +export const logErrorResult = (result: ResultWithStatus, logger: Logger) => { + switch (result.status) { + case ResultStatus.ConfigurationError: + logger.stderr.write(chalk.redBright("❌ ")); + logger.stderr.write(chalk.red("Could not start tslint-to-eslint:")); + logger.stderr.write(chalk.redBright(` ❌${EOL}`)); + for (const complaint of result.complaints) { + logger.stderr.write(chalk.yellowBright(` ${complaint}${EOL}`)); + } + break; + + case ResultStatus.Failed: + logger.stderr.write(chalk.redBright("❌ ")); + logger.stderr.write(chalk.red(`${result.errors.length} error`)); + logger.stderr.write(chalk.red(result.errors.length === 1 ? "" : "s")); + logger.stderr.write(chalk.red(" running tslint-to-eslint:")); + logger.stderr.write(chalk.redBright(` ❌${EOL}`)); + for (const error of result.errors) { + logger.stderr.write(chalk.gray(` ${error.stack}${EOL}`)); + } + break; + } +}; export const logSuccessfulConversions = ( conversionTypeName: string, - converted: Map, + converted: Map, logger: Logger, ) => { logger.stdout.write(chalk.greenBright(`${EOL}✨ ${converted.size}`)); diff --git a/src/reporting/reportCommentResults.test.ts b/src/reporting/reportCommentResults.test.ts deleted file mode 100644 index e948da6bb..000000000 --- a/src/reporting/reportCommentResults.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { createStubLogger, expectEqualWrites } from "../adapters/logger.stubs"; -import { ResultStatus } from "../types"; -import { reportCommentResults } from "./reportCommentResults"; - -describe("reportCommentResults", () => { - it("logs a suggestion when no comment globs were requested", () => { - // Arrange - const logger = createStubLogger(); - - // Act - reportCommentResults({ logger }, { data: undefined, status: ResultStatus.Succeeded }); - - // Assert - expectEqualWrites( - logger.stdout.write, - `♻ Consider using --comments to replace TSLint comment directives in your source files. ♻`, - ); - }); - - it("logs a singular complaint when one comment conversion fails", () => { - // Arrange - const logger = createStubLogger(); - const errors = [new Error("Hello")]; - - // Act - reportCommentResults({ logger }, { errors, status: ResultStatus.Failed }); - - // Assert - expectEqualWrites( - logger.stderr.write, - `❌ 1 error converting TSLint comment directives in --comments files. ❌`, - ` Check ${logger.debugFileName} for details.`, - ); - expectEqualWrites( - logger.info.write, - `1 error converting TSLint comment directives in --comments files:`, - ` * Hello`, - ); - }); - - it("logs a plural complaint when multiple comment conversions fail", () => { - // Arrange - const logger = createStubLogger(); - const errors = [new Error("Hello"), new Error("World")]; - - // Act - reportCommentResults({ logger }, { errors, status: ResultStatus.Failed }); - - // Assert - expectEqualWrites( - logger.stderr.write, - `❌ 2 errors converting TSLint comment directives in --comments files. ❌`, - ` Check ${logger.debugFileName} for details.`, - ); - expectEqualWrites( - logger.info.write, - `2 errors converting TSLint comment directives in --comments files:`, - ` * Hello`, - ` * World`, - ); - }); - - it("logs a singular success message when comment conversions succeeded on one file", () => { - // Arrange - const logger = createStubLogger(); - - // Act - reportCommentResults( - { logger }, - { - data: ["src/index.ts"], - status: ResultStatus.Succeeded, - }, - ); - - // Assert - expectEqualWrites( - logger.stdout.write, - `♻ 1 file of TSLint comment directives converted to ESLint. ♻ `, - ); - }); - - it("logs a plural success message when comment conversions succeeded on two files", () => { - // Arrange - const logger = createStubLogger(); - - // Act - reportCommentResults( - { logger }, - { - data: ["src/index.ts", "src/data.ts"], - status: ResultStatus.Succeeded, - }, - ); - - // Assert - expectEqualWrites( - logger.stdout.write, - `♻ 2 files of TSLint comment directives converted to ESLint. ♻ `, - ); - }); -}); diff --git a/src/reporting/reportCommentResults.ts b/src/reporting/reportCommentResults.ts deleted file mode 100644 index 50f728847..000000000 --- a/src/reporting/reportCommentResults.ts +++ /dev/null @@ -1,50 +0,0 @@ -import chalk from "chalk"; -import { EOL } from "os"; - -import { Logger } from "../adapters/logger"; -import { ResultWithDataStatus, ResultStatus } from "../types"; - -export type ReportCommentResultsDependencies = { - logger: Logger; -}; - -export const reportCommentResults = ( - dependencies: ReportCommentResultsDependencies, - commentsResult: ResultWithDataStatus, -) => { - if (commentsResult.status === ResultStatus.Failed) { - const headline = `${commentsResult.errors.length} error${ - commentsResult.errors.length === 1 ? "" : "s" - } converting TSLint comment directives in --comments files`; - - dependencies.logger.stderr.write(chalk.magentaBright(`${EOL}❌ ${headline}. ❌${EOL}`)); - dependencies.logger.stderr.write( - chalk.magenta(` Check ${dependencies.logger.debugFileName} for details.${EOL}`), - ); - - dependencies.logger.info.write(`${headline}:${EOL}`); - dependencies.logger.info.write( - commentsResult.errors.map((error) => ` * ${error.message}${EOL}`).join(""), - ); - dependencies.logger.info.write(EOL); - return; - } - - if (commentsResult.data === undefined) { - dependencies.logger.stdout.write( - chalk.magentaBright( - `${EOL}♻ Consider using --comments to replace TSLint comment directives in your source files. ♻${EOL}`, - ), - ); - return; - } - - dependencies.logger.stdout.write(chalk.magentaBright(`${EOL}♻ ${commentsResult.data.length}`)); - dependencies.logger.stdout.write( - chalk.magenta(` file${commentsResult.data.length === 1 ? "" : "s"}`), - ); - dependencies.logger.stdout.write( - chalk.magenta(` of TSLint comment directives converted to ESLint.`), - ); - dependencies.logger.stdout.write(chalk.magentaBright(` ♻${EOL}`)); -}; diff --git a/src/rules/mergers.ts b/src/rules/mergers.ts deleted file mode 100644 index 667219a2e..000000000 --- a/src/rules/mergers.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { mergeBanTypes } from "./mergers/ban-types"; -import { mergeConsistentTypeAssertions } from "./mergers/consistent-type-assertions"; -import { mergeIndent } from "./mergers/indent"; -import { mergeNamingConvention } from "./mergers/naming-convention"; -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], - ["@typescript-eslint/consistent-type-assertions", mergeConsistentTypeAssertions], - ["@typescript-eslint/indent", mergeIndent], - ["@typescript-eslint/member-delimiter-style", mergeNoMemberDelimiterStyle], - ["@typescript-eslint/naming-convention", mergeNamingConvention], - ["@typescript-eslint/no-unnecessary-type-assertion", mergeNoUnnecessaryTypeAssertion], - ["@typescript-eslint/triple-slash-reference", mergeTripleSlashReference], - ["no-caller", mergeNoCaller], - ["no-eval", mergeNoEval], -]); diff --git a/src/rules/rulesConverters.ts b/src/rules/rulesConverters.ts deleted file mode 100644 index fc532fdf6..000000000 --- a/src/rules/rulesConverters.ts +++ /dev/null @@ -1,382 +0,0 @@ -import { convertAdjacentOverloadSignatures } from "./converters/adjacent-overload-signatures"; -import { convertAlign } from "./converters/align"; -import { convertArrayType } from "./converters/array-type"; -import { convertArrowParens } from "./converters/arrow-parens"; -import { convertArrowReturnShorthand } from "./converters/arrow-return-shorthand"; -import { convertAwaitPromise } from "./converters/await-promise"; -import { convertBanCommaOperator } from "./converters/ban-comma-operator"; -import { convertBanTsIgnore } from "./converters/ban-ts-ignore"; -import { convertBanTypes } from "./converters/ban-types"; -import { convertBinaryExpressionOperandOrder } from "./converters/binary-expression-operand-order"; -import { convertCallableTypes } from "./converters/callable-types"; -import { convertClassName } from "./converters/class-name"; -import { convertCommentFormat } from "./converters/comment-format"; -import { convertCurly } from "./converters/curly"; -import { convertCyclomaticComplexity } from "./converters/cyclomatic-complexity"; -import { convertDeprecation } from "./converters/deprecation"; -import { convertEofline } from "./converters/eofline"; -import { convertFileNameCasing } from "./converters/file-name-casing"; -import { convertForin } from "./converters/forin"; -import { convertFunctionConstructor } from "./converters/function-constructor"; -import { convertImportBlacklist } from "./converters/import-blacklist"; -import { convertIncrementDecrement } from "./converters/increment-decrement"; -import { convertIndent } from "./converters/indent"; -import { convertInterfaceName } from "./converters/interface-name"; -import { convertInterfaceOverTypeLiteral } from "./converters/interface-over-type-literal"; -import { convertJSDocFormat } from "./converters/jsdoc-format"; -import { convertLabelPosition } from "./converters/label-position"; -import { convertLinebreakStyle } from "./converters/linebreak-style"; -import { convertMaxClassesPerFile } from "./converters/max-classes-per-file"; -import { convertMaxFileLineCount } from "./converters/max-file-line-count"; -import { convertMaxLineLength } from "./converters/max-line-length"; -import { convertMemberAccess } from "./converters/member-access"; -import { convertMemberOrdering } from "./converters/member-ordering"; -import { convertNewlineBeforeReturn } from "./converters/newline-before-return"; -import { convertNewlinePerChainedCall } from "./converters/newline-per-chained-call"; -import { convertNewParens } from "./converters/new-parens"; -import { convertNoAngleBracketTypeAssertion } from "./converters/no-angle-bracket-type-assertion"; -import { convertNoArg } from "./converters/no-arg"; -import { convertNoAsyncWithoutAwait } from "./converters/no-async-without-await"; -import { convertNoBannedTerms } from "./converters/no-banned-terms"; -import { convertNoBitwise } from "./converters/no-bitwise"; -import { convertNoBooleanLiteralCompare } from "./converters/no-boolean-literal-compare"; -import { convertNoConditionalAssignment } from "./converters/no-conditional-assignment"; -import { convertNoConsecutiveBlankLines } from "./converters/no-consecutive-blank-lines"; -import { convertNoConsole } from "./converters/no-console"; -import { convertNoConstantCondition } from "./converters/no-constant-condition"; -import { convertNoConstruct } from "./converters/no-construct"; -import { convertNoControlRegex } from "./converters/no-control-regex"; -import { convertNoDebugger } from "./converters/no-debugger"; -import { convertNoDefaultExport } from "./converters/no-default-export"; -import { convertNoDuplicateImports } from "./converters/no-duplicate-imports"; -import { convertNoDuplicateSuper } from "./converters/no-duplicate-super"; -import { convertNoDuplicateSwitchCase } from "./converters/no-duplicate-switch-case"; -import { convertNoDuplicateVariable } from "./converters/no-duplicate-variable"; -import { convertNoEmpty } from "./converters/no-empty"; -import { convertNoEmptyInterface } from "./converters/no-empty-interface"; -import { convertNoEval } from "./converters/no-eval"; -import { convertNoExplicitAny } from "./converters/no-explicit-any"; -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"; -import { convertNoInvalidTemplateStrings } from "./converters/no-invalid-template-strings"; -import { convertNoInvalidThis } from "./converters/no-invalid-this"; -import { convertNoIrregularWhitespace } from "./converters/no-irregular-whitespace"; -import { convertNoMagicNumbers } from "./converters/no-magic-numbers"; -import { convertNoMisusedNew } from "./converters/no-misused-new"; -import { convertNoMultilineString } from "./converters/no-multiline-string"; -import { convertNoNamespace } from "./converters/no-namespace"; -import { convertNoNonNullAssertion } from "./converters/no-non-null-assertion"; -import { convertNoNullKeyword } from "./converters/no-null-keyword"; -import { convertNoObjectLiteralTypeAssertion } from "./converters/no-object-literal-type-assertion"; -import { convertNoOctalLiteral } from "./converters/no-octal-literal"; -import { convertNoParameterProperties } from "./converters/no-parameter-properties"; -import { convertNoParameterReassignment } from "./converters/no-parameter-reassignment"; -import { convertNoRedundantJsdoc } from "./converters/no-redundant-jsdoc"; -import { convertNoReference } from "./converters/no-reference"; -import { convertNoReferenceImport } from "./converters/no-reference-import"; -import { convertNoRegexSpaces } from "./converters/no-regex-spaces"; -import { convertNoRequireImports } from "./converters/no-require-imports"; -import { convertNoReturnAwait } from "./converters/no-return-await"; -import { convertNoShadowedVariable } from "./converters/no-shadowed-variable"; -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"; -import { convertNoUnboundMethod } from "./converters/no-unbound-method"; -import { convertNoUnnecessaryClass } from "./converters/no-unnecessary-class"; -import { convertNoUnnecessaryInitializer } from "./converters/no-unnecessary-initializer"; -import { convertNoUnnecessaryQualifier } from "./converters/no-unnecessary-qualifier"; -import { convertNoUnnecessarySemicolons } from "./converters/no-unnecessary-semicolons"; -import { convertNoUnnecessaryTypeAssertion } from "./converters/no-unnecessary-type-assertion"; -import { convertNoUnsafeFinally } from "./converters/no-unsafe-finally"; -import { convertNoUnusedExpression } from "./converters/no-unused-expression"; -import { convertNoUnusedVariable } from "./converters/no-unused-variable"; -import { convertNoUseBeforeDeclare } from "./converters/no-use-before-declare"; -import { convertNoVarKeyword } from "./converters/no-var-keyword"; -import { convertNoVarRequires } from "./converters/no-var-requires"; -import { convertNoVoidExpression } from "./converters/no-void-expression"; -import { convertObjectLiteralKeyQuotes } from "./converters/object-literal-key-quotes"; -import { convertObjectLiteralShorthand } from "./converters/object-literal-shorthand"; -import { convertOneLine } from "./converters/one-line"; -import { convertOneVariablePerDeclaration } from "./converters/one-variable-per-declaration"; -import { convertOnlyArrowFunctions } from "./converters/only-arrow-functions"; -import { convertOrderedImports } from "./converters/ordered-imports"; -import { convertPreferConst } from "./converters/prefer-const"; -import { convertPreferForOf } from "./converters/prefer-for-of"; -import { convertPreferFunctionOverMethod } from "./converters/prefer-function-over-method"; -import { convertPreferObjectSpread } from "./converters/prefer-object-spread"; -import { convertPreferReadonly } from "./converters/prefer-readonly"; -import { convertPreferTemplate } from "./converters/prefer-template"; -import { convertPromiseFunctionAsync } from "./converters/promise-function-async"; -import { convertQuotemark } from "./converters/quotemark"; -import { convertRadix } from "./converters/radix"; -import { convertRestrictPlusOperands } from "./converters/restrict-plus-operands"; -import { convertSemicolon } from "./converters/semicolon"; -import { convertSpaceBeforeFunctionParen } from "./converters/space-before-function-paren"; -import { convertSpaceWithinParens } from "./converters/space-within-parens"; -import { convertStrictBooleanExpressions } from "./converters/strict-boolean-expressions"; -import { convertSwitchDefault } from "./converters/switch-default"; -import { convertTrailingComma } from "./converters/trailing-comma"; -import { convertTripleEquals } from "./converters/triple-equals"; -import { convertTypedefWhitespace } from "./converters/typedef-whitespace"; -import { convertTypeLiteralDelimiter } from "./converters/type-literal-delimiter"; -import { convertTypeofCompare } from "./converters/typeof-compare"; -import { convertUnifiedSignatures } from "./converters/unified-signatures"; -import { convertUnnecessaryBind } from "./converters/unnecessary-bind"; -import { convertUnnecessaryConstructor } from "./converters/unnecessary-constructor"; -import { convertUseDefaultTypeParameter } from "./converters/use-default-type-parameter"; -import { convertUseIsnan } from "./converters/use-isnan"; -import { convertVariableName } from "./converters/variable-name"; - -// Codelyzer converters -import { convertComponentClassSuffix } from "./converters/codelyzer/component-class-suffix"; -import { convertComponentMaxInlineDeclarations } from "./converters/codelyzer/component-max-inline-declarations"; -import { convertComponentSelector } from "./converters/codelyzer/component-selector"; -import { convertContextualLifecycle } from "./converters/codelyzer/contextual-lifecycle"; -import { convertDirectiveClassSuffix } from "./converters/codelyzer/directive-class-suffix"; -import { convertDirectiveSelector } from "./converters/codelyzer/directive-selector"; -import { convertNoAttributeDecorator } from "./converters/codelyzer/no-attribute-decorator"; -import { convertNoConflictingLifecycle } from "./converters/codelyzer/no-conflicting-lifecycle"; -import { convertNoForwardRef } from "./converters/codelyzer/no-forward-ref"; -import { convertNoHostMetadataProperty } from "./converters/codelyzer/no-host-metadata-property"; -import { convertNoInputPrefix } from "./converters/codelyzer/no-input-prefix"; -import { convertNoInputRename } from "./converters/codelyzer/no-input-rename"; -import { convertNoInputsMetadataProperty } from "./converters/codelyzer/no-inputs-metadata-property"; -import { convertNoLifecycleCall } from "./converters/codelyzer/no-lifecycle-call"; -import { convertNoOutputNative } from "./converters/codelyzer/no-output-native"; -import { convertNoOutputOnPrefix } from "./converters/codelyzer/no-output-on-prefix"; -import { convertNoOutputRename } from "./converters/codelyzer/no-output-rename"; -import { convertNoOutputsMetadataProperty } from "./converters/codelyzer/no-outputs-metadata-property"; -import { convertNoPipeImpure } from "./converters/codelyzer/no-pipe-impure"; -import { convertNoQueriesMetadataProperty } from "./converters/codelyzer/no-queries-metadata-property"; -import { convertPipePrefix } from "./converters/codelyzer/pipe-prefix"; -import { convertPreferOnPushComponentChangeDetection } from "./converters/codelyzer/prefer-on-push-component-change-detection"; -import { convertPreferOutputReadonly } from "./converters/codelyzer/prefer-output-readonly"; -import { convertRelativeUrlPrefix } from "./converters/codelyzer/relative-url-prefix"; -import { convertTemplateBananaInBox } from "./converters/codelyzer/template-banana-in-box"; -import { convertTemplateCyclomaticComplexity } from "./converters/codelyzer/template-cyclomatic-complexity"; -import { convertTemplateNoCallExpression } from "./converters/codelyzer/template-no-call-expression"; -import { convertTemplateNoNegatedAsync } from "./converters/codelyzer/template-no-negated-async"; -import { convertUseComponentSelector } from "./converters/codelyzer/use-component-selector"; -import { convertUseComponentViewEncapsulation } from "./converters/codelyzer/use-component-view-encapsulation"; -import { convertUseInjectableProvidedIn } from "./converters/codelyzer/use-injectable-provided-in"; -import { convertUseLifecycleInterface } from "./converters/codelyzer/use-lifecycle-interface"; -import { convertUsePipeDecorator } from "./converters/codelyzer/use-pipe-decorator"; -import { convertUsePipeTransformInterface } from "./converters/codelyzer/use-pipe-transform-interface"; - -// ESLint-React converters -import { convertJsxBooleanValue } from "./converters/eslint-plugin-react/jsx-boolean-value"; -import { convertJsxCurlySpacing } from "./converters/eslint-plugin-react/jsx-curly-spacing"; -import { convertJsxEqualsSpacing } from "./converters/eslint-plugin-react/jsx-equals-spacing"; -import { convertJsxKey } from "./converters/eslint-plugin-react/jsx-key"; -import { convertJsxNoBind } from "./converters/eslint-plugin-react/jsx-no-bind"; -import { convertJsxWrapMultiline } from "./converters/eslint-plugin-react/jsx-wrap-multiline"; - -/** - * Keys TSLint rule names to their ESLint rule converters. - */ -export const rulesConverters = new Map([ - ["adjacent-overload-signatures", convertAdjacentOverloadSignatures], - ["align", convertAlign], - ["array-type", convertArrayType], - ["arrow-parens", convertArrowParens], - ["arrow-return-shorthand", convertArrowReturnShorthand], - ["await-promise", convertAwaitPromise], - ["ban-comma-operator", convertBanCommaOperator], - ["ban-ts-ignore", convertBanTsIgnore], - ["ban-types", convertBanTypes], - ["binary-expression-operand-order", convertBinaryExpressionOperandOrder], - ["callable-types", convertCallableTypes], - ["class-name", convertClassName], - ["comment-format", convertCommentFormat], - ["component-class-suffix", convertComponentClassSuffix], - ["component-max-inline-declarations", convertComponentMaxInlineDeclarations], - ["component-selector", convertComponentSelector], - ["contextual-lifecycle", convertContextualLifecycle], - ["curly", convertCurly], - ["cyclomatic-complexity", convertCyclomaticComplexity], - ["deprecation", convertDeprecation], - ["directive-class-suffix", convertDirectiveClassSuffix], - ["directive-selector", convertDirectiveSelector], - ["eofline", convertEofline], - ["file-name-casing", convertFileNameCasing], - ["forin", convertForin], - ["function-constructor", convertFunctionConstructor], - ["import-blacklist", convertImportBlacklist], - ["increment-decrement", convertIncrementDecrement], - ["indent", convertIndent], - ["interface-name", convertInterfaceName], - ["interface-over-type-literal", convertInterfaceOverTypeLiteral], - ["jsdoc-format", convertJSDocFormat], - ["jsx-boolean-value", convertJsxBooleanValue], - ["jsx-curly-spacing", convertJsxCurlySpacing], - ["jsx-equals-spacing", convertJsxEqualsSpacing], - ["jsx-key", convertJsxKey], - ["jsx-no-bind", convertJsxNoBind], - ["jsx-wrap-multiline", convertJsxWrapMultiline], - ["label-position", convertLabelPosition], - ["linebreak-style", convertLinebreakStyle], - ["max-classes-per-file", convertMaxClassesPerFile], - ["max-file-line-count", convertMaxFileLineCount], - ["max-line-length", convertMaxLineLength], - ["member-access", convertMemberAccess], - ["member-ordering", convertMemberOrdering], - ["new-parens", convertNewParens], - ["newline-before-return", convertNewlineBeforeReturn], - ["newline-per-chained-call", convertNewlinePerChainedCall], - ["no-angle-bracket-type-assertion", convertNoAngleBracketTypeAssertion], - ["no-any", convertNoExplicitAny], - ["no-arg", convertNoArg], - ["no-async-without-await", convertNoAsyncWithoutAwait], - ["no-attribute-decorator", convertNoAttributeDecorator], - ["no-banned-terms", convertNoBannedTerms], - ["no-bitwise", convertNoBitwise], - ["no-boolean-literal-compare", convertNoBooleanLiteralCompare], - ["no-conditional-assignment", convertNoConditionalAssignment], - ["no-conflicting-lifecycle", convertNoConflictingLifecycle], - ["no-consecutive-blank-lines", convertNoConsecutiveBlankLines], - ["no-console", convertNoConsole], - ["no-constant-condition", convertNoConstantCondition], - ["no-construct", convertNoConstruct], - ["no-control-regex", convertNoControlRegex], - ["no-debugger", convertNoDebugger], - ["no-default-export", convertNoDefaultExport], - ["no-duplicate-imports", convertNoDuplicateImports], - ["no-duplicate-super", convertNoDuplicateSuper], - ["no-duplicate-switch-case", convertNoDuplicateSwitchCase], - ["no-duplicate-variable", convertNoDuplicateVariable], - ["no-empty-interface", convertNoEmptyInterface], - ["no-empty", convertNoEmpty], - ["no-eval", convertNoEval], - ["no-floating-promises", convertNoFloatingPromises], - ["no-for-in-array", convertNoForInArray], - ["no-for-in", convertNoForIn], - ["no-forward-ref", convertNoForwardRef], - ["no-host-metadata-property", convertNoHostMetadataProperty], - ["no-implicit-dependencies", convertNoImplicitDependencies], - ["no-import-side-effect", convertNoImportSideEffect], - ["no-inferrable-types", convertNoInferrableTypes], - ["no-input-prefix", convertNoInputPrefix], - ["no-input-rename", convertNoInputRename], - ["no-inputs-metadata-property", convertNoInputsMetadataProperty], - ["no-internal-module", convertNoInternalModule], - ["no-invalid-regexp", convertNoInvalidRegexp], - ["no-invalid-template-strings", convertNoInvalidTemplateStrings], - ["no-invalid-this", convertNoInvalidThis], - ["no-irregular-whitespace", convertNoIrregularWhitespace], - ["no-lifecycle-call", convertNoLifecycleCall], - ["no-magic-numbers", convertNoMagicNumbers], - ["no-misused-new", convertNoMisusedNew], - ["no-multiline-string", convertNoMultilineString], - ["no-namespace", convertNoNamespace], - ["no-non-null-assertion", convertNoNonNullAssertion], - ["no-null-keyword", convertNoNullKeyword], - ["no-object-literal-type-assertion", convertNoObjectLiteralTypeAssertion], - ["no-octal-literal", convertNoOctalLiteral], - ["no-output-native", convertNoOutputNative], - ["no-output-native", convertNoOutputNative], - ["no-output-on-prefix", convertNoOutputOnPrefix], - ["no-output-rename", convertNoOutputRename], - ["no-outputs-metadata-property", convertNoOutputsMetadataProperty], - ["no-parameter-properties", convertNoParameterProperties], - ["no-parameter-reassignment", convertNoParameterReassignment], - ["no-pipe-impure", convertNoPipeImpure], - ["no-queries-metadata-property", convertNoQueriesMetadataProperty], - ["no-redundant-jsdoc", convertNoRedundantJsdoc], - ["no-reference-import", convertNoReferenceImport], - ["no-reference", convertNoReference], - ["no-regex-spaces", convertNoRegexSpaces], - ["no-require-imports", convertNoRequireImports], - ["no-return-await", convertNoReturnAwait], - ["no-shadowed-variable", convertNoShadowedVariable], - ["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], - ["no-unbound-method", convertNoUnboundMethod], - ["no-unnecessary-class", convertNoUnnecessaryClass], - ["no-unnecessary-initializer", convertNoUnnecessaryInitializer], - ["no-unnecessary-qualifier", convertNoUnnecessaryQualifier], - ["no-unnecessary-semicolons", convertNoUnnecessarySemicolons], - ["no-unnecessary-type-assertion", convertNoUnnecessaryTypeAssertion], - ["no-unsafe-finally", convertNoUnsafeFinally], - ["no-unused-expression", convertNoUnusedExpression], - ["no-unused-variable", convertNoUnusedVariable], - ["no-use-before-declare", convertNoUseBeforeDeclare], - ["no-var-keyword", convertNoVarKeyword], - ["no-var-requires", convertNoVarRequires], - ["no-void-expression", convertNoVoidExpression], - ["object-literal-key-quotes", convertObjectLiteralKeyQuotes], - ["object-literal-shorthand", convertObjectLiteralShorthand], - ["one-line", convertOneLine], - ["one-variable-per-declaration", convertOneVariablePerDeclaration], - ["only-arrow-functions", convertOnlyArrowFunctions], - ["ordered-imports", convertOrderedImports], - ["pipe-prefix", convertPipePrefix], - ["prefer-const", convertPreferConst], - ["prefer-for-of", convertPreferForOf], - ["prefer-function-over-method", convertPreferFunctionOverMethod], - ["prefer-object-spread", convertPreferObjectSpread], - ["prefer-on-push-component-change-detection", convertPreferOnPushComponentChangeDetection], - ["prefer-output-readonly", convertPreferOutputReadonly], - ["prefer-readonly", convertPreferReadonly], - ["prefer-template", convertPreferTemplate], - ["promise-function-async", convertPromiseFunctionAsync], - ["quotemark", convertQuotemark], - ["radix", convertRadix], - ["relative-url-prefix", convertRelativeUrlPrefix], - ["restrict-plus-operands", convertRestrictPlusOperands], - ["semicolon", convertSemicolon], - ["space-before-function-paren", convertSpaceBeforeFunctionParen], - ["space-within-parens", convertSpaceWithinParens], - ["strict-boolean-expressions", convertStrictBooleanExpressions], - ["switch-default", convertSwitchDefault], - ["template-banana-in-box", convertTemplateBananaInBox], - ["template-cyclomatic-complexity", convertTemplateCyclomaticComplexity], - ["template-no-call-expression", convertTemplateNoCallExpression], - ["template-no-negated-async", convertTemplateNoNegatedAsync], - ["trailing-comma", convertTrailingComma], - ["triple-equals", convertTripleEquals], - ["type-literal-delimiter", convertTypeLiteralDelimiter], - ["typedef-whitespace", convertTypedefWhitespace], - ["typeof-compare", convertTypeofCompare], - ["unified-signatures", convertUnifiedSignatures], - ["unnecessary-bind", convertUnnecessaryBind], - ["unnecessary-constructor", convertUnnecessaryConstructor], - ["use-component-selector", convertUseComponentSelector], - ["use-component-view-encapsulation", convertUseComponentViewEncapsulation], - ["use-default-type-parameter", convertUseDefaultTypeParameter], - ["use-injectable-provided-in", convertUseInjectableProvidedIn], - ["use-isnan", convertUseIsnan], - ["use-lifecycle-interface", convertUseLifecycleInterface], - ["use-pipe-decorator", convertUsePipeDecorator], - ["use-pipe-transform-interface", convertUsePipeTransformInterface], - ["variable-name", convertVariableName], - - // 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... - // If you're willing to take on that work, that'd be great! Please send PRs! 💖 - // As these are enabled, they should be added in sorted order to the list above. - - // TSLint core rules: - // ["ban", convertBan], // no-restricted-properties - - // tslint-microsoft-contrib rules: - // ["max-func-body-length", convertMaxFuncBodyLength], - // ["no-empty-line-after-opening-brace", convertNoEmptyLineAfterOpeningBrace], // padded-blocks - // ["no-function-expression", convertNoFunctionExpression], // ban-syntax config - // ["no-suspicious-comment", convertNoSuspiciousComment], - // ["no-with-statement", convertNoWithStatement], -]); diff --git a/src/settings.stubs.ts b/src/settings.stubs.ts index f2dcc5339..eed3457c7 100644 --- a/src/settings.stubs.ts +++ b/src/settings.stubs.ts @@ -1,3 +1,18 @@ +import { AllOriginalConfigurations } from "./input/findOriginalConfigurations"; + export const createStubTSLintToESLintSettings = () => ({ config: "./eslintrc.js", }); + +export const createStubOriginalConfigurationsData = ( + overrides: Partial = {}, +): AllOriginalConfigurations => ({ + tslint: { + full: { + rules: [], + rulesDirectory: [], + }, + raw: {}, + }, + ...overrides, +}); diff --git a/src/types.ts b/src/types.ts index 156efc71d..a25919786 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,7 +7,7 @@ export type TSLintToESLintSettings = { /** * File globs to convert `tslint:disable` comments within to `eslint-disable`. */ - comments?: string | string[]; + comments?: true | string | string[]; /** * Original Editor configuration file path, such as `.vscode/settings.json`. @@ -66,7 +66,12 @@ export type SucceededResult = { readonly status: ResultStatus.Succeeded; }; -export type SucceededDataResult = { - readonly data: Data; - readonly status: ResultStatus.Succeeded; -}; +// eslint-disable-next-line @typescript-eslint/no-invalid-void-type +export type SucceededDataResult = Data extends void + ? { + readonly status: ResultStatus.Succeeded; + } + : { + readonly data: Data; + readonly status: ResultStatus.Succeeded; + };