From a5042273c09a98403d5c33933ee1b6793e31facc Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 12 Sep 2020 15:04:52 -0400 Subject: [PATCH 1/9] Refactored file structure to have names match intent --- jest.config.js | 6 +- src/cli/main.ts | 141 ++++--- src/cli/runCli.test.ts | 47 ++- src/cli/runCli.ts | 59 ++- src/conversion/configConverter.ts | 6 - src/conversion/conversionResults.stubs.ts | 23 -- src/conversion/convertLintConfig.test.ts | 110 ----- src/conversion/convertLintConfig.ts | 78 ---- .../comments/convertComments.test.ts | 87 +++- .../comments/convertComments.ts | 53 +-- .../comments/convertFileComments.test.ts | 6 +- .../comments/convertFileComments.ts | 4 +- .../comments/parseFileComments.ts | 0 .../comments/replaceFileComments.ts | 6 +- .../reporting/reportCommentResults.test.ts | 46 +++ .../reporting/reportCommentResults.ts | 31 ++ .../convertEditorConfig.test.ts | 18 +- .../editorConfigs}/convertEditorConfig.ts | 22 +- .../convertEditorSetting.test.ts | 4 +- .../editorConfigs}/convertEditorSetting.ts | 4 +- .../convertEditorSettings.test.ts | 4 +- .../editorConfigs}/convertEditorSettings.ts | 6 +- .../editorConfigs}/converter.ts | 4 +- .../converters/editor-code-actions-on-save.ts | 0 .../tests/editor-code-actions-on-save.test.ts | 2 +- .../tests/tslint-config-file.test.ts | 0 .../converters/tslint-config-file.ts | 0 .../editorConversionResults.stubs.ts | 10 + .../editorSettingsConverters.ts | 0 ...portEditorSettingConversionResults.test.ts | 19 +- .../reportEditorSettingConversionResults.ts | 8 +- .../editorConfigs}/types.ts | 0 .../configConversionResults.stubs.ts | 13 + .../lintConfigs/convertLintConfig.test.ts | 67 +++ .../lintConfigs/convertLintConfig.ts | 57 +++ .../lintConfigs}/eslint/createEnv.test.ts | 2 +- .../lintConfigs}/eslint/createEnv.ts | 2 +- .../lintConfigs}/formatConvertedRules.test.ts | 12 +- .../lintConfigs}/formatConvertedRules.ts | 6 +- .../lintConfigs}/formatMissingRules.test.ts | 2 +- .../lintConfigs}/formatMissingRules.ts | 2 +- .../formatting/formatOutput.test.ts | 0 .../lintConfigs}/formatting/formatOutput.ts | 0 .../formatting/formatters/faqs.ts | 0 .../formatting/formatters/formatJsOutput.ts | 0 .../formatting/formatters/formatJsonOutput.ts | 0 .../formatting/formatters/withKeysSorted.ts | 0 .../pruning/normalizeExtensions.test.ts | 2 +- .../pruning/normalizeExtensions.ts | 4 +- .../normalizeRawESLintRuleSeverity.test.ts | 0 .../pruning/normalizeRawESLintRuleSeverity.ts | 2 +- .../removeExtendsDuplicatedRules.test.ts | 2 +- .../pruning/removeExtendsDuplicatedRules.ts | 2 +- .../packages/choosePackageManager.test.ts | 0 .../packages/choosePackageManager.ts | 2 +- .../packages/logMissingPackages.test.ts | 22 +- .../reporting/packages/logMissingPackages.ts | 17 +- .../reporting/packages/packageManagers.ts | 0 .../reportConfigConversionResults.test.ts} | 40 +- .../reportConfigConversionResults.ts} | 14 +- .../lintConfigs}/rules/convertRule.test.ts | 4 +- .../lintConfigs}/rules/convertRule.ts | 4 +- .../lintConfigs}/rules/convertRules.test.ts | 29 +- .../lintConfigs}/rules/convertRules.ts | 16 +- .../rules/formatRawTslintRule.test.ts | 0 .../formats/convertTSLintRuleSeverity.test.ts | 0 .../formats/convertTSLintRuleSeverity.ts | 0 .../rules/formats/formatRawTslintRule.ts | 0 .../lintConfigs/rules/ruleConverter.stubs.ts} | 2 +- .../lintConfigs/rules/ruleConverter.ts} | 2 +- .../lintConfigs/rules/ruleConverters.ts | 382 ++++++++++++++++++ .../adjacent-overload-signatures.ts | 2 +- .../rules/ruleConverters}/align.ts | 2 +- .../rules/ruleConverters}/array-type.ts | 2 +- .../rules/ruleConverters}/arrow-parens.ts | 2 +- .../ruleConverters}/arrow-return-shorthand.ts | 2 +- .../rules/ruleConverters}/await-promise.ts | 2 +- .../ruleConverters}/ban-comma-operator.ts | 2 +- .../rules/ruleConverters}/ban-ts-ignore.ts | 2 +- .../rules/ruleConverters}/ban-types.ts | 2 +- .../binary-expression-operand-order.ts | 2 +- .../rules/ruleConverters}/callable-types.ts | 2 +- .../rules/ruleConverters}/class-name.ts | 2 +- .../codelyzer/component-class-suffix.ts | 2 +- .../component-max-inline-declarations.ts | 2 +- .../codelyzer/component-selector.ts | 2 +- .../codelyzer/contextual-lifecycle.ts | 2 +- .../codelyzer/directive-class-suffix.ts | 2 +- .../codelyzer/directive-selector.ts | 2 +- .../codelyzer/no-attribute-decorator.ts | 2 +- .../codelyzer/no-conflicting-lifecycle.ts | 2 +- .../codelyzer/no-forward-ref.ts | 2 +- .../codelyzer/no-host-metadata-property.ts | 2 +- .../codelyzer/no-input-prefix.ts | 2 +- .../codelyzer/no-input-rename.ts | 2 +- .../codelyzer/no-inputs-metadata-property.ts | 2 +- .../codelyzer/no-lifecycle-call.ts | 2 +- .../codelyzer/no-output-native.ts | 2 +- .../codelyzer/no-output-on-prefix.ts | 2 +- .../codelyzer/no-output-rename.ts | 2 +- .../codelyzer/no-outputs-metadata-property.ts | 2 +- .../codelyzer/no-pipe-impure.ts | 2 +- .../codelyzer/no-queries-metadata-property.ts | 2 +- .../ruleConverters}/codelyzer/pipe-prefix.ts | 2 +- ...efer-on-push-component-change-detection.ts | 2 +- .../codelyzer/prefer-output-readonly.ts | 2 +- .../codelyzer/relative-url-prefix.ts | 2 +- .../codelyzer/template-banana-in-box.ts | 2 +- .../template-cyclomatic-complexity.ts | 2 +- .../codelyzer/template-no-call-expression.ts | 2 +- .../codelyzer/template-no-negated-async.ts | 2 +- .../tests/component-class-suffix.test.ts | 0 .../component-max-inline-declarations.test.ts | 0 .../tests/component-selector.test.ts | 0 .../tests/contextual-lifecycle.test.ts | 0 .../tests/directive-class-suffix.test.ts | 0 .../tests/directive-selector.test.ts | 0 .../tests/no-attribute-decorator.test.ts | 0 .../tests/no-conflicting-lifecycle.test.ts | 0 .../codelyzer/tests/no-forward-ref.test.ts | 0 .../tests/no-host-metadata-property.test.ts | 0 .../codelyzer/tests/no-input-prefix.test.ts | 0 .../codelyzer/tests/no-input-rename.test.ts | 0 .../tests/no-inputs-metadata-property.test.ts | 0 .../codelyzer/tests/no-lifecycle-call.test.ts | 0 .../codelyzer/tests/no-output-native.test.ts | 0 .../tests/no-output-on-prefix.test.ts | 0 .../codelyzer/tests/no-output-rename.test.ts | 0 .../no-outputs-metadata-property.test.ts | 0 .../codelyzer/tests/no-pipe-impure.test.ts | 0 .../no-queries-metadata-property.test.ts | 0 .../codelyzer/tests/pipe-prefix.test.ts | 0 ...on-push-component-change-detection.test.ts | 0 .../tests/prefer-output-readonly.test.ts | 0 .../tests/relative-url-prefix.test.ts | 0 .../tests/template-banana-in-box.test.ts | 0 .../template-cyclomatic-complexity.test.ts | 2 +- .../tests/template-no-call-expression.test.ts | 0 .../tests/template-no-negated-async.test.ts | 0 .../tests/use-component-selector.test.ts | 0 .../use-component-view-encapsulation.test.ts | 0 .../tests/use-injectable-provided-in.test.ts | 0 .../tests/use-lifecycle-interface.test.ts | 0 .../tests/use-pipe-decorator.test.ts | 0 .../use-pipe-transform-interface.test.ts | 0 .../codelyzer/use-component-selector.ts | 2 +- .../use-component-view-encapsulation.ts | 2 +- .../codelyzer/use-injectable-provided-in.ts | 2 +- .../codelyzer/use-lifecycle-interface.ts | 2 +- .../codelyzer/use-pipe-decorator.ts | 2 +- .../codelyzer/use-pipe-transform-interface.ts | 2 +- .../rules/ruleConverters}/comment-format.ts | 2 +- .../rules/ruleConverters}/curly.ts | 2 +- .../ruleConverters}/cyclomatic-complexity.ts | 2 +- .../rules/ruleConverters}/deprecation.ts | 2 +- .../rules/ruleConverters}/eofline.ts | 2 +- .../eslint-plugin-react/jsx-boolean-value.ts | 2 +- .../eslint-plugin-react/jsx-curly-spacing.ts | 2 +- .../eslint-plugin-react/jsx-equals-spacing.ts | 2 +- .../eslint-plugin-react/jsx-key.ts | 2 +- .../eslint-plugin-react/jsx-no-bind.ts | 2 +- .../eslint-plugin-react/jsx-wrap-multiline.ts | 2 +- .../tests/jsx-boolean-value.test.ts | 0 .../tests/jsx-curly-spacing.test.ts | 0 .../tests/jsx-equals-spacing.test.ts | 0 .../eslint-plugin-react/tests/jsx-key.test.ts | 0 .../tests/jsx-no-bind.test.ts | 0 .../tests/jsx-wrap-multiline.test.ts | 0 .../rules/ruleConverters}/file-name-casing.ts | 2 +- .../rules/ruleConverters}/forin.ts | 2 +- .../ruleConverters}/function-constructor.ts | 2 +- .../rules/ruleConverters}/import-blacklist.ts | 4 +- .../ruleConverters}/increment-decrement.ts | 2 +- .../rules/ruleConverters}/indent.ts | 2 +- .../rules/ruleConverters}/interface-name.ts | 2 +- .../interface-over-type-literal.ts | 2 +- .../rules/ruleConverters}/jsdoc-format.ts | 2 +- .../rules/ruleConverters}/label-position.ts | 2 +- .../rules/ruleConverters}/linebreak-style.ts | 2 +- .../ruleConverters}/max-classes-per-file.ts | 2 +- .../ruleConverters}/max-file-line-count.ts | 2 +- .../rules/ruleConverters}/max-line-length.ts | 2 +- .../rules/ruleConverters}/member-access.ts | 2 +- .../rules/ruleConverters}/member-ordering.ts | 2 +- .../rules/ruleConverters}/new-parens.ts | 2 +- .../ruleConverters}/newline-before-return.ts | 2 +- .../newline-per-chained-call.ts | 2 +- .../no-angle-bracket-type-assertion.ts | 2 +- .../rules/ruleConverters}/no-arg.ts | 2 +- .../ruleConverters}/no-async-without-await.ts | 2 +- .../rules/ruleConverters}/no-banned-terms.ts | 2 +- .../rules/ruleConverters}/no-bitwise.ts | 2 +- .../no-boolean-literal-compare.ts | 2 +- .../no-conditional-assignment.ts | 2 +- .../no-consecutive-blank-lines.ts | 2 +- .../rules/ruleConverters}/no-console.ts | 2 +- .../ruleConverters}/no-constant-condition.ts | 2 +- .../rules/ruleConverters}/no-construct.ts | 2 +- .../rules/ruleConverters}/no-control-regex.ts | 2 +- .../rules/ruleConverters}/no-debugger.ts | 2 +- .../ruleConverters}/no-default-export.ts | 2 +- .../ruleConverters}/no-duplicate-imports.ts | 2 +- .../ruleConverters}/no-duplicate-super.ts | 2 +- .../no-duplicate-switch-case.ts | 2 +- .../ruleConverters}/no-duplicate-variable.ts | 2 +- .../ruleConverters}/no-empty-interface.ts | 2 +- .../rules/ruleConverters}/no-empty.ts | 4 +- .../rules/ruleConverters}/no-eval.ts | 2 +- .../rules/ruleConverters}/no-explicit-any.ts | 2 +- .../ruleConverters}/no-floating-promises.ts | 2 +- .../rules/ruleConverters}/no-for-in-array.ts | 2 +- .../rules/ruleConverters}/no-for-in.ts | 2 +- .../no-implicit-dependencies.ts | 2 +- .../ruleConverters}/no-import-side-effect.ts | 2 +- .../ruleConverters}/no-inferrable-types.ts | 2 +- .../ruleConverters}/no-internal-module.ts | 2 +- .../ruleConverters}/no-invalid-regexp.ts | 2 +- .../no-invalid-template-strings.ts | 2 +- .../rules/ruleConverters}/no-invalid-this.ts | 2 +- .../no-irregular-whitespace.ts | 2 +- .../rules/ruleConverters}/no-magic-numbers.ts | 2 +- .../rules/ruleConverters}/no-misused-new.ts | 2 +- .../ruleConverters}/no-multiline-string.ts | 2 +- .../rules/ruleConverters}/no-namespace.ts | 2 +- .../ruleConverters}/no-non-null-assertion.ts | 2 +- .../rules/ruleConverters}/no-null-keyword.ts | 2 +- .../no-object-literal-type-assertion.ts | 2 +- .../rules/ruleConverters}/no-octal-literal.ts | 2 +- .../no-parameter-properties.ts | 2 +- .../no-parameter-reassignment.ts | 2 +- .../ruleConverters}/no-redundant-jsdoc.ts | 2 +- .../ruleConverters}/no-reference-import.ts | 2 +- .../rules/ruleConverters}/no-reference.ts | 2 +- .../rules/ruleConverters}/no-regex-spaces.ts | 2 +- .../ruleConverters}/no-require-imports.ts | 2 +- .../rules/ruleConverters}/no-return-await.ts | 2 +- .../ruleConverters}/no-shadowed-variable.ts | 2 +- .../rules/ruleConverters}/no-sparse-arrays.ts | 2 +- .../ruleConverters}/no-string-literal.ts | 2 +- .../rules/ruleConverters}/no-string-throw.ts | 2 +- .../ruleConverters}/no-submodule-imports.ts | 2 +- .../no-switch-case-fall-through.ts | 2 +- .../ruleConverters}/no-this-assignment.ts | 2 +- .../ruleConverters}/no-trailing-whitespace.ts | 2 +- .../ruleConverters}/no-unbound-method.ts | 2 +- .../ruleConverters}/no-unnecessary-class.ts | 2 +- .../no-unnecessary-initializer.ts | 2 +- .../no-unnecessary-qualifier.ts | 2 +- .../no-unnecessary-semicolons.ts | 2 +- .../no-unnecessary-type-assertion.ts | 2 +- .../ruleConverters}/no-unsafe-finally.ts | 2 +- .../ruleConverters}/no-unused-expression.ts | 2 +- .../ruleConverters}/no-unused-variable.ts | 2 +- .../ruleConverters}/no-use-before-declare.ts | 2 +- .../rules/ruleConverters}/no-var-keyword.ts | 2 +- .../rules/ruleConverters}/no-var-requires.ts | 2 +- .../ruleConverters}/no-void-expression.ts | 2 +- .../object-literal-key-quotes.ts | 2 +- .../object-literal-shorthand.ts | 2 +- .../rules/ruleConverters}/one-line.ts | 2 +- .../one-variable-per-declaration.ts | 2 +- .../ruleConverters}/only-arrow-functions.ts | 2 +- .../rules/ruleConverters}/ordered-imports.ts | 2 +- .../rules/ruleConverters}/prefer-const.ts | 2 +- .../rules/ruleConverters}/prefer-for-of.ts | 2 +- .../prefer-function-over-method.ts | 2 +- .../ruleConverters}/prefer-object-spread.ts | 2 +- .../rules/ruleConverters}/prefer-readonly.ts | 2 +- .../rules/ruleConverters}/prefer-template.ts | 2 +- .../ruleConverters}/promise-function-async.ts | 2 +- .../rules/ruleConverters}/quotemark.ts | 2 +- .../rules/ruleConverters}/radix.ts | 2 +- .../ruleConverters}/restrict-plus-operands.ts | 2 +- .../rules/ruleConverters}/semicolon.ts | 2 +- .../space-before-function-paren.ts | 2 +- .../ruleConverters}/space-within-parens.ts | 2 +- .../strict-boolean-expressions.ts | 2 +- .../rules/ruleConverters}/switch-default.ts | 2 +- .../adjacent-overload-signatures.test.ts | 0 .../rules/ruleConverters}/tests/align.test.ts | 0 .../ruleConverters}/tests/array-type.test.ts | 0 .../tests/arrow-parens.test.ts | 0 .../tests/arrow-return-shorthand.test.ts | 0 .../tests/await-promise.test.ts | 0 .../tests/ban-comma-operator.test.ts | 0 .../tests/ban-ts-ignore.test.ts | 0 .../ruleConverters}/tests/ban-types.test.ts | 0 .../binary-expression-operand-order.test.ts | 0 .../tests/callable-types.test.ts | 0 .../ruleConverters}/tests/class-name.test.ts | 0 .../tests/comment-format.test.ts | 0 .../rules/ruleConverters}/tests/curly.test.ts | 0 .../tests/cyclomatic-complexity.test.ts | 0 .../ruleConverters}/tests/deprecation.test.ts | 0 .../ruleConverters}/tests/eofline.test.ts | 0 .../tests/file-name-casing.test.ts | 0 .../rules/ruleConverters}/tests/forin.test.ts | 0 .../tests/function-constructor.test.ts | 0 .../tests/import-blacklist.test.ts | 0 .../tests/increment-decrement.test.ts | 0 .../ruleConverters}/tests/indent.test.ts | 0 .../tests/interface-name.test.ts | 0 .../tests/interface-over-type-literal.test.ts | 0 .../tests/jsdoc-format.test.ts | 0 .../tests/label-position.test.ts | 0 .../tests/linebreak-style.test.ts | 0 .../tests/max-classes-per-file.test.ts | 0 .../tests/max-file-line-count.test.ts | 0 .../tests/max-line-length.test.ts | 0 .../tests/member-access.test.ts | 0 .../tests/member-ordering.test.ts | 0 .../ruleConverters}/tests/new-parens.test.ts | 0 .../tests/newline-before-return.test.ts | 0 .../tests/newline-per-chained-call.test.ts | 0 .../no-angle-bracket-type-assertion.test.ts | 0 .../ruleConverters}/tests/no-arg.test.ts | 0 .../tests/no-async-without-await.test.ts | 0 .../tests/no-banned-terms.test.ts | 0 .../ruleConverters}/tests/no-bitwise.test.ts | 0 .../tests/no-boolean-literal-compare.test.ts | 0 .../tests/no-conditional-assignment.test.ts | 0 .../tests/no-consecutive-blank-lines.test.ts | 0 .../ruleConverters}/tests/no-console.test.ts | 0 .../tests/no-constant-condition.test.ts | 0 .../tests/no-construct.test.ts | 0 .../tests/no-control-regex.test.ts | 0 .../ruleConverters}/tests/no-debugger.test.ts | 0 .../tests/no-default-export.test.ts | 0 .../tests/no-duplicate-imports.test.ts | 0 .../tests/no-duplicate-super.test.ts | 0 .../tests/no-duplicate-switch-case.test.ts | 0 .../tests/no-duplicate-variable.test.ts | 0 .../tests/no-empty-interface.test.ts | 0 .../ruleConverters}/tests/no-empty.test.ts | 0 .../ruleConverters}/tests/no-eval.test.ts | 0 .../tests/no-explicit-any.test.ts | 0 .../tests/no-floating-promises.test.ts | 0 .../tests/no-for-in-array.test.ts | 0 .../ruleConverters}/tests/no-for-in.test.ts | 0 .../tests/no-implicit-dependencies.test.ts | 0 .../tests/no-import-side-effect.test.ts | 0 .../tests/no-inferrable-types.test.ts | 0 .../tests/no-internal-module.test.ts | 0 .../tests/no-invalid-regexp.test.ts | 0 .../tests/no-invalid-template-strings.test.ts | 0 .../tests/no-invalid-this.test.ts | 0 .../tests/no-irregular-whitespace.test.ts | 0 .../tests/no-magic-numbers.test.ts | 0 .../tests/no-misused-new.test.ts | 0 .../tests/no-multiline-string.test.ts | 0 .../tests/no-namespace.test.ts | 0 .../tests/no-non-null-assertion.test.ts | 0 .../tests/no-null-keyword.test.ts | 0 .../no-object-literal-type-assertion.test.ts | 0 .../tests/no-octal-literal.test.ts | 0 .../tests/no-parameter-properties.test.ts | 0 .../tests/no-parameter-reassignment.test.ts | 0 .../tests/no-redundant-jsdoc.test.ts | 0 .../tests/no-reference-import.test.ts | 0 .../tests/no-reference.test.ts | 0 .../tests/no-regex-spaces.test.ts | 0 .../tests/no-require-imports.test.ts | 0 .../tests/no-return-await.test.ts | 0 .../tests/no-shadowed-variable.test.ts | 0 .../tests/no-sparse-arrays.test.ts | 0 .../tests/no-string-literal.test.ts | 0 .../tests/no-string-throw.test.ts | 0 .../tests/no-submodule-imports.test.ts | 0 .../tests/no-switch-case-fall-through.test.ts | 0 .../tests/no-this-assignment.test.ts | 0 .../tests/no-trailing-whitespace.test.ts | 0 .../tests/no-unbound-method.test.ts | 0 .../tests/no-unnecessary-class.test.ts | 0 .../tests/no-unnecessary-initializer.test.ts | 0 .../tests/no-unnecessary-qualifier.test.ts | 0 .../tests/no-unnecessary-semicolons.test.ts | 0 .../no-unnecessary-type-assertion.test.ts | 0 .../tests/no-unsafe-finally.test.ts | 0 .../tests/no-unused-expression.test.ts | 0 .../tests/no-unused-variable.test.ts | 0 .../tests/no-use-before-declare.test.ts | 0 .../tests/no-var-keyword.test.ts | 0 .../tests/no-var-requires.test.ts | 0 .../tests/no-void-expression.test.ts | 0 .../tests/object-literal-key-quotes.test.ts | 0 .../tests/object-literal-shorthand.test.ts | 0 .../ruleConverters}/tests/one-line.test.ts | 0 .../one-variable-per-declaration.test.ts | 0 .../tests/only-arrow-functions.test.ts | 0 .../tests/ordered-imports.test.ts | 0 .../tests/prefer-const.test.ts | 0 .../tests/prefer-for-of.test.ts | 0 .../tests/prefer-function-over-method.test.ts | 0 .../tests/prefer-object-spread.test.ts | 0 .../tests/prefer-readonly.test.ts | 0 .../tests/prefer-template.test.ts | 0 .../tests/promise-function-async.test.ts | 0 .../ruleConverters}/tests/quotemark.test.ts | 0 .../rules/ruleConverters}/tests/radix.test.ts | 0 .../tests/restrict-plus-operands.test.ts | 0 .../ruleConverters}/tests/semicolon.test.ts | 0 .../tests/space-before-function-paren.test.ts | 0 .../tests/space-within-parens.test.ts | 0 .../tests/strict-boolean-expressions.test.ts | 0 .../tests/switch-default.test.ts | 0 .../tests/trailing-comma.test.ts | 0 .../tests/triple-equals.test.ts | 0 .../tests/type-literal-delimiter.test.ts | 0 .../tests/typedef-whitespace.test.ts | 0 .../tests/typeof-compare.test.ts | 0 .../tests/unified-signatures.test.ts | 0 .../tests/unnecessary-bind.test.ts | 0 .../tests/unnecessary-constructor.test.ts | 0 .../tests/use-default-type-parameter.test.ts | 0 .../ruleConverters}/tests/use-isnan.test.ts | 0 .../tests/variable-name.test.ts | 0 .../rules/ruleConverters}/trailing-comma.ts | 2 +- .../rules/ruleConverters}/triple-equals.ts | 2 +- .../ruleConverters}/type-literal-delimiter.ts | 2 +- .../ruleConverters}/typedef-whitespace.ts | 2 +- .../rules/ruleConverters}/typeof-compare.ts | 2 +- .../ruleConverters}/unified-signatures.ts | 2 +- .../rules/ruleConverters}/unnecessary-bind.ts | 2 +- .../unnecessary-constructor.ts | 2 +- .../use-default-type-parameter.ts | 2 +- .../rules/ruleConverters}/use-isnan.ts | 2 +- .../rules/ruleConverters}/variable-name.ts | 2 +- .../lintConfigs/rules/ruleMerger.ts} | 0 .../lintConfigs/rules/ruleMergers.ts | 21 + .../rules/ruleMergers}/ban-types.ts | 0 .../consistent-type-assertions.ts | 0 .../lintConfigs/rules/ruleMergers}/indent.ts | 0 .../ruleMergers}/member-delimiter-style.ts | 0 .../rules/ruleMergers}/naming-convention.ts | 0 .../rules/ruleMergers}/no-caller.ts | 0 .../lintConfigs/rules/ruleMergers}/no-eval.ts | 0 .../no-unnecessary-type-assertion.ts | 0 .../ruleMergers}/tests/ban-types.test.ts | 0 .../tests/consistent-type-assertions.test.ts | 0 .../rules/ruleMergers}/tests/indent.test.ts | 0 .../tests/member-delimiter-style.test.ts | 0 .../tests/naming-convention.test.ts | 0 .../ruleMergers}/tests/no-caller.test.ts | 0 .../rules/ruleMergers}/tests/no-eval.test.ts | 0 .../no-unnecessary-type-assertion.test.ts | 0 .../tests/triple-slash-reference.test.ts | 0 .../ruleMergers}/triple-slash-reference.ts | 0 .../lintConfigs}/rules/types.ts | 0 .../collectTSLintRulesets.test.ts | 0 .../summarization/collectTSLintRulesets.ts | 6 +- .../normalizeESLintRules.test.ts | 2 +- .../summarization/normalizeESLintRules.ts | 4 +- .../prettier/addPrettierExtensions.test.ts | 10 +- .../prettier/addPrettierExtensions.ts | 2 +- .../resolveExtensionNames.test.ts | 0 .../summarization/resolveExtensionNames.ts | 0 .../retrieveExtendsValues.test.ts | 0 .../summarization/retrieveExtendsValues.ts | 8 +- .../summarizePackageRules.test.ts | 14 +- .../summarization/summarizePackageRules.ts | 18 +- .../lintConfigs/summarization/types.ts | 7 + .../writeConfigConversionResults.test.ts} | 30 +- .../writeConfigConversionResults.ts} | 12 +- ...writeEditorConfigConversionResults.test.ts | 32 +- .../writeEditorConfigConversionResults.ts | 10 +- src/converters/types.ts | 10 + src/creation/summarization/types.ts | 7 - src/errors/conversionError.test.ts | 2 +- src/errors/conversionError.ts | 4 +- src/input/findESLintConfiguration.ts | 2 +- .../reportOutputs.ts => reporting.ts} | 33 +- src/reporting/reportCommentResults.test.ts | 102 ----- src/reporting/reportCommentResults.ts | 50 --- src/rules/mergers.ts | 21 - src/rules/rulesConverters.ts | 382 ------------------ src/settings.stubs.ts | 15 + src/types.ts | 14 +- 477 files changed, 1345 insertions(+), 1348 deletions(-) delete mode 100644 src/conversion/configConverter.ts delete mode 100644 src/conversion/conversionResults.stubs.ts delete mode 100644 src/conversion/convertLintConfig.test.ts delete mode 100644 src/conversion/convertLintConfig.ts rename src/{ => converters}/comments/convertComments.test.ts (60%) rename src/{ => converters}/comments/convertComments.ts (63%) rename src/{ => converters}/comments/convertFileComments.test.ts (95%) rename src/{ => converters}/comments/convertFileComments.ts (88%) rename src/{ => converters}/comments/parseFileComments.ts (100%) rename src/{ => converters}/comments/replaceFileComments.ts (90%) create mode 100644 src/converters/comments/reporting/reportCommentResults.test.ts create mode 100644 src/converters/comments/reporting/reportCommentResults.ts rename src/{conversion => converters/editorConfigs}/convertEditorConfig.test.ts (85%) rename src/{conversion => converters/editorConfigs}/convertEditorConfig.ts (58%) rename src/{editorSettings => converters/editorConfigs}/convertEditorSetting.test.ts (94%) rename src/{editorSettings => converters/editorConfigs}/convertEditorSetting.ts (82%) rename src/{editorSettings => converters/editorConfigs}/convertEditorSettings.test.ts (97%) rename src/{editorSettings => converters/editorConfigs}/convertEditorSettings.ts (92%) rename src/{editorSettings => converters/editorConfigs}/converter.ts (88%) rename src/{editorSettings => converters/editorConfigs}/converters/editor-code-actions-on-save.ts (100%) rename src/{editorSettings => converters/editorConfigs}/converters/tests/editor-code-actions-on-save.test.ts (97%) rename src/{editorSettings => converters/editorConfigs}/converters/tests/tslint-config-file.test.ts (100%) rename src/{editorSettings => converters/editorConfigs}/converters/tslint-config-file.ts (100%) create mode 100644 src/converters/editorConfigs/editorConversionResults.stubs.ts rename src/{editorSettings => converters/editorConfigs}/editorSettingsConverters.ts (100%) rename src/{ => converters/editorConfigs}/reporting/reportEditorSettingConversionResults.test.ts (88%) rename src/{ => converters/editorConfigs}/reporting/reportEditorSettingConversionResults.ts (86%) rename src/{editorSettings => converters/editorConfigs}/types.ts (100%) create mode 100644 src/converters/lintConfigs/configConversionResults.stubs.ts create mode 100644 src/converters/lintConfigs/convertLintConfig.test.ts create mode 100644 src/converters/lintConfigs/convertLintConfig.ts rename src/{creation => converters/lintConfigs}/eslint/createEnv.test.ts (98%) rename src/{creation => converters/lintConfigs}/eslint/createEnv.ts (90%) rename src/{creation => converters/lintConfigs}/formatConvertedRules.test.ts (91%) rename src/{creation => converters/lintConfigs}/formatConvertedRules.ts (84%) rename src/{creation => converters/lintConfigs}/formatMissingRules.test.ts (98%) rename src/{creation => converters/lintConfigs}/formatMissingRules.ts (92%) rename src/{creation => converters/lintConfigs}/formatting/formatOutput.test.ts (100%) rename src/{creation => converters/lintConfigs}/formatting/formatOutput.ts (100%) rename src/{creation => converters/lintConfigs}/formatting/formatters/faqs.ts (100%) rename src/{creation => converters/lintConfigs}/formatting/formatters/formatJsOutput.ts (100%) rename src/{creation => converters/lintConfigs}/formatting/formatters/formatJsonOutput.ts (100%) rename src/{creation => converters/lintConfigs}/formatting/formatters/withKeysSorted.ts (100%) rename src/{creation => converters/lintConfigs}/pruning/normalizeExtensions.test.ts (95%) rename src/{creation => converters/lintConfigs}/pruning/normalizeExtensions.ts (90%) rename src/{creation => converters/lintConfigs}/pruning/normalizeRawESLintRuleSeverity.test.ts (100%) rename src/{creation => converters/lintConfigs}/pruning/normalizeRawESLintRuleSeverity.ts (80%) rename src/{creation => converters/lintConfigs}/pruning/removeExtendsDuplicatedRules.test.ts (99%) rename src/{creation => converters/lintConfigs}/pruning/removeExtendsDuplicatedRules.ts (97%) rename src/{ => converters/lintConfigs}/reporting/packages/choosePackageManager.test.ts (100%) rename src/{ => converters/lintConfigs}/reporting/packages/choosePackageManager.ts (88%) rename src/{ => converters/lintConfigs}/reporting/packages/logMissingPackages.test.ts (87%) rename src/{ => converters/lintConfigs}/reporting/packages/logMissingPackages.ts (78%) rename src/{ => converters/lintConfigs}/reporting/packages/packageManagers.ts (100%) rename src/{reporting/reportConversionResults.test.ts => converters/lintConfigs/reporting/reportConfigConversionResults.test.ts} (82%) rename src/{reporting/reportConversionResults.ts => converters/lintConfigs/reporting/reportConfigConversionResults.ts} (90%) rename src/{ => converters/lintConfigs}/rules/convertRule.test.ts (94%) rename src/{ => converters/lintConfigs}/rules/convertRule.ts (78%) rename src/{ => converters/lintConfigs}/rules/convertRules.test.ts (90%) rename src/{ => converters/lintConfigs}/rules/convertRules.ts (86%) rename src/{ => converters/lintConfigs}/rules/formatRawTslintRule.test.ts (100%) rename src/{ => converters/lintConfigs}/rules/formats/convertTSLintRuleSeverity.test.ts (100%) rename src/{ => converters/lintConfigs}/rules/formats/convertTSLintRuleSeverity.ts (100%) rename src/{ => converters/lintConfigs}/rules/formats/formatRawTslintRule.ts (100%) rename src/{rules/converter.stubs.ts => converters/lintConfigs/rules/ruleConverter.stubs.ts} (80%) rename src/{rules/converter.ts => converters/lintConfigs/rules/ruleConverter.ts} (94%) create mode 100644 src/converters/lintConfigs/rules/ruleConverters.ts rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/adjacent-overload-signatures.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/align.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/array-type.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/arrow-parens.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/arrow-return-shorthand.ts (92%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/await-promise.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/ban-comma-operator.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/ban-ts-ignore.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/ban-types.ts (94%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/binary-expression-operand-order.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/callable-types.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/class-name.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/component-class-suffix.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/component-max-inline-declarations.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/component-selector.ts (92%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/contextual-lifecycle.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/directive-class-suffix.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/directive-selector.ts (92%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-attribute-decorator.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-conflicting-lifecycle.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-forward-ref.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-host-metadata-property.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-input-prefix.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-input-rename.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-inputs-metadata-property.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-lifecycle-call.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-output-native.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-output-on-prefix.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-output-rename.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-outputs-metadata-property.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-pipe-impure.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/no-queries-metadata-property.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/pipe-prefix.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/prefer-on-push-component-change-detection.ts (85%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/prefer-output-readonly.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/relative-url-prefix.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/template-banana-in-box.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/template-cyclomatic-complexity.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/template-no-call-expression.ts (84%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/template-no-negated-async.ts (84%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/component-class-suffix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/component-max-inline-declarations.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/component-selector.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/contextual-lifecycle.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/directive-class-suffix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/directive-selector.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-attribute-decorator.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-conflicting-lifecycle.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-forward-ref.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-host-metadata-property.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-input-prefix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-input-rename.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-inputs-metadata-property.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-lifecycle-call.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-output-native.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-output-on-prefix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-output-rename.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-outputs-metadata-property.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-pipe-impure.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/no-queries-metadata-property.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/pipe-prefix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/prefer-on-push-component-change-detection.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/prefer-output-readonly.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/relative-url-prefix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/template-banana-in-box.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/template-cyclomatic-complexity.test.ts (99%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/template-no-call-expression.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/template-no-negated-async.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-component-selector.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-component-view-encapsulation.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-injectable-provided-in.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-lifecycle-interface.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-pipe-decorator.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/tests/use-pipe-transform-interface.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-component-selector.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-component-view-encapsulation.ts (84%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-injectable-provided-in.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-lifecycle-interface.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-pipe-decorator.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/codelyzer/use-pipe-transform-interface.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/comment-format.ts (97%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/curly.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/cyclomatic-complexity.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/deprecation.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eofline.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-boolean-value.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-curly-spacing.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-equals-spacing.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-key.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-no-bind.ts (85%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/jsx-wrap-multiline.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-boolean-value.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-curly-spacing.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-equals-spacing.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-key.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-no-bind.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/eslint-plugin-react/tests/jsx-wrap-multiline.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/file-name-casing.ts (97%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/forin.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/function-constructor.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/import-blacklist.ts (94%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/increment-decrement.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/indent.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/interface-name.ts (93%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/interface-over-type-literal.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/jsdoc-format.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/label-position.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/linebreak-style.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/max-classes-per-file.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/max-file-line-count.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/max-line-length.ts (95%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/member-access.ts (97%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/member-ordering.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/new-parens.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/newline-before-return.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/newline-per-chained-call.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-angle-bracket-type-assertion.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-arg.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-async-without-await.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-banned-terms.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-bitwise.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-boolean-literal-compare.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-conditional-assignment.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-consecutive-blank-lines.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-console.ts (93%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-constant-condition.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-construct.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-control-regex.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-debugger.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-default-export.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-duplicate-imports.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-duplicate-super.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-duplicate-switch-case.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-duplicate-variable.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-empty-interface.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-empty.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-eval.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-explicit-any.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-floating-promises.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-for-in-array.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-for-in.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-implicit-dependencies.ts (95%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-import-side-effect.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-inferrable-types.ts (94%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-internal-module.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-invalid-regexp.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-invalid-template-strings.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-invalid-this.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-irregular-whitespace.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-magic-numbers.ts (94%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-misused-new.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-multiline-string.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-namespace.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-non-null-assertion.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-null-keyword.ts (85%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-object-literal-type-assertion.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-octal-literal.ts (83%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-parameter-properties.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-parameter-reassignment.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-redundant-jsdoc.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-reference-import.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-reference.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-regex-spaces.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-require-imports.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-return-await.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-shadowed-variable.ts (97%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-sparse-arrays.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-string-literal.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-string-throw.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-submodule-imports.ts (93%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-switch-case-fall-through.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-this-assignment.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-trailing-whitespace.ts (95%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unbound-method.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unnecessary-class.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unnecessary-initializer.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unnecessary-qualifier.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unnecessary-semicolons.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unnecessary-type-assertion.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unsafe-finally.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unused-expression.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-unused-variable.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-use-before-declare.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-var-keyword.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-var-requires.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/no-void-expression.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/object-literal-key-quotes.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/object-literal-shorthand.ts (87%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/one-line.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/one-variable-per-declaration.ts (89%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/only-arrow-functions.ts (93%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/ordered-imports.ts (92%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-const.ts (86%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-for-of.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-function-over-method.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-object-spread.ts (79%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-readonly.ts (88%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/prefer-template.ts (90%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/promise-function-async.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/quotemark.ts (95%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/radix.ts (76%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/restrict-plus-operands.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/semicolon.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/space-before-function-paren.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/space-within-parens.ts (91%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/strict-boolean-expressions.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/switch-default.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/adjacent-overload-signatures.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/align.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/array-type.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/arrow-parens.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/arrow-return-shorthand.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/await-promise.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/ban-comma-operator.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/ban-ts-ignore.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/ban-types.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/binary-expression-operand-order.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/callable-types.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/class-name.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/comment-format.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/curly.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/cyclomatic-complexity.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/deprecation.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/eofline.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/file-name-casing.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/forin.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/function-constructor.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/import-blacklist.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/increment-decrement.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/indent.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/interface-name.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/interface-over-type-literal.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/jsdoc-format.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/label-position.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/linebreak-style.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/max-classes-per-file.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/max-file-line-count.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/max-line-length.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/member-access.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/member-ordering.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/new-parens.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/newline-before-return.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/newline-per-chained-call.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-angle-bracket-type-assertion.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-arg.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-async-without-await.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-banned-terms.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-bitwise.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-boolean-literal-compare.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-conditional-assignment.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-consecutive-blank-lines.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-console.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-constant-condition.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-construct.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-control-regex.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-debugger.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-default-export.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-duplicate-imports.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-duplicate-super.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-duplicate-switch-case.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-duplicate-variable.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-empty-interface.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-empty.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-eval.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-explicit-any.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-floating-promises.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-for-in-array.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-for-in.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-implicit-dependencies.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-import-side-effect.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-inferrable-types.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-internal-module.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-invalid-regexp.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-invalid-template-strings.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-invalid-this.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-irregular-whitespace.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-magic-numbers.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-misused-new.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-multiline-string.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-namespace.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-non-null-assertion.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-null-keyword.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-object-literal-type-assertion.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-octal-literal.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-parameter-properties.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-parameter-reassignment.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-redundant-jsdoc.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-reference-import.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-reference.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-regex-spaces.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-require-imports.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-return-await.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-shadowed-variable.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-sparse-arrays.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-string-literal.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-string-throw.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-submodule-imports.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-switch-case-fall-through.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-this-assignment.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-trailing-whitespace.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unbound-method.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unnecessary-class.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unnecessary-initializer.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unnecessary-qualifier.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unnecessary-semicolons.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unnecessary-type-assertion.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unsafe-finally.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unused-expression.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-unused-variable.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-use-before-declare.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-var-keyword.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-var-requires.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/no-void-expression.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/object-literal-key-quotes.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/object-literal-shorthand.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/one-line.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/one-variable-per-declaration.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/only-arrow-functions.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/ordered-imports.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-const.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-for-of.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-function-over-method.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-object-spread.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-readonly.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/prefer-template.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/promise-function-async.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/quotemark.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/radix.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/restrict-plus-operands.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/semicolon.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/space-before-function-paren.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/space-within-parens.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/strict-boolean-expressions.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/switch-default.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/trailing-comma.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/triple-equals.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/type-literal-delimiter.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/typedef-whitespace.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/typeof-compare.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/unified-signatures.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/unnecessary-bind.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/unnecessary-constructor.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/use-default-type-parameter.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/use-isnan.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/tests/variable-name.test.ts (100%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/trailing-comma.ts (99%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/triple-equals.ts (96%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/type-literal-delimiter.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/typedef-whitespace.ts (81%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/typeof-compare.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/unified-signatures.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/unnecessary-bind.ts (78%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/unnecessary-constructor.ts (80%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/use-default-type-parameter.ts (82%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/use-isnan.ts (77%) rename src/{rules/converters => converters/lintConfigs/rules/ruleConverters}/variable-name.ts (98%) rename src/{rules/merger.ts => converters/lintConfigs/rules/ruleMerger.ts} (100%) create mode 100644 src/converters/lintConfigs/rules/ruleMergers.ts rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/ban-types.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/consistent-type-assertions.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/indent.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/member-delimiter-style.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/naming-convention.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/no-caller.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/no-eval.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/no-unnecessary-type-assertion.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/ban-types.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/consistent-type-assertions.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/indent.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/member-delimiter-style.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/naming-convention.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/no-caller.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/no-eval.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/no-unnecessary-type-assertion.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/tests/triple-slash-reference.test.ts (100%) rename src/{rules/mergers => converters/lintConfigs/rules/ruleMergers}/triple-slash-reference.ts (100%) rename src/{ => converters/lintConfigs}/rules/types.ts (100%) rename src/{creation => converters/lintConfigs}/summarization/collectTSLintRulesets.test.ts (100%) rename src/{creation => converters/lintConfigs}/summarization/collectTSLintRulesets.ts (81%) rename src/{creation => converters/lintConfigs}/summarization/normalizeESLintRules.test.ts (96%) rename src/{creation => converters/lintConfigs}/summarization/normalizeESLintRules.ts (88%) rename src/{creation => converters/lintConfigs}/summarization/prettier/addPrettierExtensions.test.ts (80%) rename src/{creation => converters/lintConfigs}/summarization/prettier/addPrettierExtensions.ts (88%) rename src/{creation => converters/lintConfigs}/summarization/resolveExtensionNames.test.ts (100%) rename src/{creation => converters/lintConfigs}/summarization/resolveExtensionNames.ts (100%) rename src/{creation => converters/lintConfigs}/summarization/retrieveExtendsValues.test.ts (100%) rename src/{creation => converters/lintConfigs}/summarization/retrieveExtendsValues.ts (92%) rename src/{creation => converters/lintConfigs}/summarization/summarizePackageRules.test.ts (89%) rename src/{creation => converters/lintConfigs}/summarization/summarizePackageRules.ts (83%) create mode 100644 src/converters/lintConfigs/summarization/types.ts rename src/{creation/writeConversionResults.test.ts => converters/lintConfigs/writeConfigConversionResults.test.ts} (86%) rename src/{creation/writeConversionResults.ts => converters/lintConfigs/writeConfigConversionResults.ts} (76%) rename src/{creation => converters/lintConfigs}/writeEditorConfigConversionResults.test.ts (77%) rename src/{creation => converters/lintConfigs}/writeEditorConfigConversionResults.ts (74%) create mode 100644 src/converters/types.ts delete mode 100644 src/creation/summarization/types.ts rename src/{reporting/reportOutputs.ts => reporting.ts} (64%) delete mode 100644 src/reporting/reportCommentResults.test.ts delete mode 100644 src/reporting/reportCommentResults.ts delete mode 100644 src/rules/mergers.ts delete mode 100644 src/rules/rulesConverters.ts 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 c25f916ee..34b88236f 100644 --- a/src/cli/main.ts +++ b/src/cli/main.ts @@ -6,36 +6,6 @@ import { globAsync } from "../adapters/globAsync"; import { nativeImporter } from "../adapters/nativeImporter"; import { processLogger } from "../adapters/processLogger"; import { bind } from "../binding"; -import { convertComments, ConvertCommentsDependencies } from "../comments/convertComments"; -import { - ConvertFileCommentsDependencies, - convertFileComments, -} from "../comments/convertFileComments"; -import { convertLintConfig, ConvertLintConfigDependencies } from "../conversion/convertLintConfig"; -import { - convertEditorConfig, - ConvertEditorConfigDependencies, -} from "../conversion/convertEditorConfig"; -import { addPrettierExtensions } from "../creation/summarization/prettier/addPrettierExtensions"; -import { removeExtendsDuplicatedRules } from "../creation/pruning/removeExtendsDuplicatedRules"; -import { - retrieveExtendsValues, - RetrieveExtendsValuesDependencies, -} from "../creation/summarization/retrieveExtendsValues"; -import { - summarizePackageRules, - SummarizePackageRulesDependencies, -} from "../creation/summarization/summarizePackageRules"; -import { - writeConversionResults, - WriteConversionResultsDependencies, -} from "../creation/writeConversionResults"; -import { writeConversionResults as writeEditorConfigConversionResults } from "../creation/writeEditorConfigConversionResults"; -import { - convertEditorSettings, - ConvertEditorSettingsDependencies, -} from "../editorSettings/convertEditorSettings"; -import { editorSettingsConverters } from "../editorSettings/editorSettingsConverters"; import { findEditorConfiguration, FindEditorConfigurationDependencies, @@ -51,40 +21,84 @@ import { findTypeScriptConfiguration } from "../input/findTypeScriptConfiguratio import { importer, ImporterDependencies } from "../input/importer"; import { mergeLintConfigurations } from "../input/mergeLintConfigurations"; import { - choosePackageManager, - ChoosePackageManagerDependencies, -} from "../reporting/packages/choosePackageManager"; -import { - reportCommentResults, ReportCommentResultsDependencies, -} from "../reporting/reportCommentResults"; + reportCommentResults, +} from "../converters/comments/reporting/reportCommentResults"; import { - logMissingPackages, - LogMissingPackagesDependencies, -} from "../reporting/packages/logMissingPackages"; + 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 { - 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"; + reportConfigConversionResults, +} from "../converters/lintConfigs/reporting/reportConfigConversionResults"; +import { + WriteConversionResultsDependencies, + writeConfigConversionResults, +} from "../converters/lintConfigs/writeConfigConversionResults"; +import { + ConvertCommentsDependencies, + convertComments, +} from "../converters/comments/convertComments"; +import { + ConvertFileCommentsDependencies, + convertFileComments, +} from "../converters/comments/convertFileComments"; +import { + ConvertRulesDependencies, + convertRules, +} from "../converters/lintConfigs/rules/convertRules"; +import { ruleConverters } from "../converters/lintConfigs/rules/ruleConverters"; +import { + RetrieveExtendsValuesDependencies, + retrieveExtendsValues, +} from "../converters/lintConfigs/summarization/retrieveExtendsValues"; +import { + SummarizePackageRulesDependencies, + summarizePackageRules, +} from "../converters/lintConfigs/summarization/summarizePackageRules"; +import { + ChoosePackageManagerDependencies, + choosePackageManager, +} from "../converters/lintConfigs/reporting/packages/choosePackageManager"; +import { + 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"; const convertFileCommentsDependencies: ConvertFileCommentsDependencies = { - converters: rulesConverters, + converters: ruleConverters, fileSystem: fsFileSystem, }; +const reportCommentResultsDependencies: ReportCommentResultsDependencies = { + logger: processLogger, +}; + const convertCommentsDependencies: ConvertCommentsDependencies = { convertFileComments: bind(convertFileComments, convertFileCommentsDependencies), globAsync, + reportCommentResults: bind(reportCommentResults, reportCommentResultsDependencies), }; const convertRulesDependencies: ConvertRulesDependencies = { - converters: rulesConverters, - mergers, + ruleConverters, + ruleMergers, }; const convertEditorSettingsDependencies: ConvertEditorSettingsDependencies = { @@ -117,10 +131,6 @@ const findOriginalConfigurationsDependencies: FindOriginalConfigurationsDependen mergeLintConfigurations, }; -const reportCommentResultsDependencies: ReportCommentResultsDependencies = { - logger: processLogger, -}; - const choosePackageManagerDependencies: ChoosePackageManagerDependencies = { fileSystem: fsFileSystem, }; @@ -155,35 +165,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..309a7eab4 100644 --- a/src/cli/runCli.ts +++ b/src/cli/runCli.ts @@ -4,11 +4,18 @@ 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; }; @@ -32,18 +39,23 @@ export const runCli = async ( const parsedArgv = { config: "./.eslintrc.js", ...command.parse(rawArgv).opts(), - }; + } as TSLintToESLintSettings; - const programOptions = command.opts(); - if (programOptions.version) { + 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); + const originalConfigurations = await dependencies.findOriginalConfigurations(parsedArgv); + if (originalConfigurations.status !== ResultStatus.Succeeded) { + logErrorResult(originalConfigurations, dependencies.logger); + return originalConfigurations.status; + } + + 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 +65,14 @@ export const runCli = async ( }; const tryConvertConfig = async ( - configConverter: ConfigConverter, - argv: Partial, + converter: Converter, + argv: TSLintToESLintSettings, + originalConfigurations: AllOriginalConfigurations, ): Promise => { let result: ResultWithStatus; try { - result = await configConverter(argv as TSLintToESLintSettings); + result = await converter(argv, originalConfigurations); } catch (error) { result = { errors: [error as Error], @@ -69,27 +82,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/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 b669023c4..000000000 --- a/src/conversion/conversionResults.stubs.ts +++ /dev/null @@ -1,23 +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(), - ...overrides, -}); - -export const createEmptySettingConversionResults = ( - overrides: Partial = {}, -): EditorSettingConversionResults => ({ - converted: new Map(), - failed: [], - missing: [], - ...overrides, -}); diff --git a/src/conversion/convertLintConfig.test.ts b/src/conversion/convertLintConfig.test.ts deleted file mode 100644 index cea6b4e04..000000000 --- a/src/conversion/convertLintConfig.test.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { ResultStatus, FailedResult } from "../types"; -import { convertLintConfig, ConvertLintConfigDependencies } from "./convertLintConfig"; - -const stubSettings = { - config: "./eslintrc.js", -}; - -const createStubDependencies = ( - overrides: Partial = {}, -): ConvertLintConfigDependencies => ({ - convertComments: jest.fn(), - convertRules: jest.fn(), - findOriginalConfigurations: jest.fn().mockResolvedValue({ - data: createStubOriginalConfigurationsData(), - status: ResultStatus.Succeeded, - }), - reportCommentResults: jest.fn(), - reportConversionResults: jest.fn(), - summarizePackageRules: async (_configurations, data) => ({ - ...data, - converted: new Map(), - extends: [], - extensionRules: new Map(), - failed: [], - missing: [], - plugins: new Set(), - }), - 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 435caf7ed..000000000 --- a/src/conversion/convertLintConfig.ts +++ /dev/null @@ -1,78 +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 same rule conversion logic - const commentsResult = await dependencies.convertComments( - settings.comments, - 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 60% rename from src/comments/convertComments.test.ts rename to src/converters/comments/convertComments.test.ts index ed17c7eb6..1b24e2bdb 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 = ( @@ -6,6 +7,7 @@ const createStubDependencies = ( ): ConvertCommentsDependencies => ({ convertFileComments: jest.fn(), globAsync: jest.fn().mockResolvedValue(["src/a.ts", "src/b.ts"]), + reportCommentResults: jest.fn(), ...overrides, }); @@ -15,9 +17,14 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, undefined); + const result = await convertComments( + dependencies, + { comments: undefined }, + createStubOriginalConfigurationsData(), + ); // Assert + expect(dependencies.reportCommentResults).toHaveBeenCalledWith(); expect(result).toEqual({ data: undefined, status: ResultStatus.Succeeded, @@ -29,7 +36,11 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, true); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData(), + ); // Assert expect(result).toEqual({ @@ -45,13 +56,19 @@ describe("convertComments", () => { }); // Act - const result = await convertComments(dependencies, true, { - files: ["src/a.ts"], - }); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData({ + typescript: { + files: ["src/a.ts"], + }, + }), + ); // Assert + expect(dependencies.reportCommentResults).toHaveBeenCalledWith(["src/a.ts"]); expect(result).toEqual({ - data: ["src/a.ts"], status: ResultStatus.Succeeded, }); }); @@ -61,13 +78,19 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, true, { - include: ["src/*.ts"], - }); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData({ + typescript: { + include: ["src/*.ts"], + }, + }), + ); // Assert + expect(dependencies.reportCommentResults).toHaveBeenCalledWith(["src/a.ts", "src/b.ts"]); expect(result).toEqual({ - data: ["src/a.ts", "src/b.ts"], status: ResultStatus.Succeeded, }); }); @@ -77,14 +100,20 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, true, { - exclude: ["src/b.ts"], - include: ["src/*.ts"], - }); + const result = await convertComments( + dependencies, + { comments: true }, + createStubOriginalConfigurationsData({ + typescript: { + exclude: ["src/b.ts"], + include: ["src/*.ts"], + }, + }), + ); // Assert + expect(dependencies.reportCommentResults).toHaveBeenCalledWith(["src/a.ts"]); expect(result).toEqual({ - data: ["src/a.ts"], status: ResultStatus.Succeeded, }); }); @@ -94,7 +123,11 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, []); + const result = await convertComments( + dependencies, + { comments: [] }, + createStubOriginalConfigurationsData(), + ); // Assert expect(result).toEqual({ @@ -111,7 +144,11 @@ describe("convertComments", () => { }); // Act - const result = await convertComments(dependencies, ["*.ts"]); + const result = await convertComments( + dependencies, + { comments: ["*.ts"] }, + createStubOriginalConfigurationsData(), + ); // Assert expect(result).toEqual({ @@ -128,7 +165,11 @@ describe("convertComments", () => { }); // Act - const result = await convertComments(dependencies, ["*.ts"]); + const result = await convertComments( + dependencies, + { comments: ["*.ts"] }, + createStubOriginalConfigurationsData(), + ); // Assert expect(result).toEqual({ @@ -142,11 +183,15 @@ describe("convertComments", () => { const dependencies = createStubDependencies(); // Act - const result = await convertComments(dependencies, ["*.ts"]); + const result = await convertComments( + dependencies, + { comments: ["*.ts"] }, + createStubOriginalConfigurationsData(), + ); // Assert + expect(dependencies.reportCommentResults).toHaveBeenCalledWith(["src/a.ts", "src/b.ts"]); expect(result).toEqual({ - data: ["src/a.ts", "src/b.ts"], status: ResultStatus.Succeeded, }); }); diff --git a/src/comments/convertComments.ts b/src/converters/comments/convertComments.ts similarity index 63% rename from src/comments/convertComments.ts rename to src/converters/comments/convertComments.ts index 4bf8ccef8..ab6f95a74 100644 --- a/src/comments/convertComments.ts +++ b/src/converters/comments/convertComments.ts @@ -1,26 +1,37 @@ 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 { GlobAsync } from "../../adapters/globAsync"; +import { SansDependencies } from "../../binding"; +import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; +import { TypeScriptConfiguration } from "../../input/findTypeScriptConfiguration"; +import { ResultWithDataStatus, ResultStatus, TSLintToESLintSettings } from "../../types"; +import { uniqueFromSources, separateErrors, isError } from "../../utils"; import { convertFileComments } from "./convertFileComments"; +import { reportCommentResults } from "./reporting/reportCommentResults"; export type ConvertCommentsDependencies = { convertFileComments: SansDependencies; globAsync: GlobAsync; + reportCommentResults: SansDependencies; }; export const convertComments = async ( dependencies: ConvertCommentsDependencies, - filePathGlobs: true | string | string[] | undefined, - typescriptConfiguration?: TypeScriptConfiguration, + { comments }: Pick, + { typescript }: Pick, ): Promise> => { - let fromTypeScriptConfiguration: TypeScriptConfiguration | undefined; + if (comments === undefined) { + dependencies.reportCommentResults(); + return { + data: undefined, + status: ResultStatus.Succeeded, + }; + } + + let fromTypeScript: TypeScriptConfiguration | undefined; - if (filePathGlobs === true) { - if (!typescriptConfiguration) { + if (comments === true) { + if (!typescript) { return { errors: [ new Error( @@ -31,20 +42,11 @@ export const convertComments = async ( }; } - filePathGlobs = [ - ...(typescriptConfiguration.files ?? []), - ...(typescriptConfiguration.include ?? []), - ]; - fromTypeScriptConfiguration = typescriptConfiguration; + comments = [...(typescript.files ?? []), ...(typescript.include ?? [])]; + fromTypeScript = typescript; } - if (filePathGlobs === undefined) { - return { - data: undefined, - status: ResultStatus.Succeeded, - }; - } - const uniqueFilePathGlobs = uniqueFromSources(filePathGlobs); + const uniqueFilePathGlobs = uniqueFromSources(comments); if (uniqueFilePathGlobs.join("") === "") { return { errors: [ @@ -69,9 +71,7 @@ export const convertComments = async ( const ruleConversionCache = new Map(); const uniqueGlobbedFilePaths = uniqueFromSources(...globbedFilePaths).filter( (filePathGlob) => - !fromTypeScriptConfiguration?.exclude?.some((exclude) => - minimatch(filePathGlob, exclude), - ), + !fromTypeScript?.exclude?.some((exclude) => minimatch(filePathGlob, exclude)), ); const fileFailures = ( @@ -88,8 +88,9 @@ export const convertComments = async ( }; } + 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 95% rename from src/comments/convertFileComments.test.ts rename to src/converters/comments/convertFileComments.test.ts index 808a25f3f..c0267d974 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 88% rename from src/comments/convertFileComments.ts rename to src/converters/comments/convertFileComments.ts index de129ebd5..862f727bd 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/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 90% rename from src/comments/replaceFileComments.ts rename to src/converters/comments/replaceFileComments.ts index 7ffd8566e..95a378a48 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/conversion/convertEditorConfig.ts b/src/converters/editorConfigs/convertEditorConfig.ts similarity index 58% rename from src/conversion/convertEditorConfig.ts rename to src/converters/editorConfigs/convertEditorConfig.ts index c1e8ec170..3a6ba0f3c 100644 --- a/src/conversion/convertEditorConfig.ts +++ b/src/converters/editorConfigs/convertEditorConfig.ts @@ -1,15 +1,17 @@ -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"; +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; - reportConversionResults: SansDependencies; - writeConversionResults: SansDependencies; + reportEditorSettingConversionResults: SansDependencies< + typeof reportEditorSettingConversionResults + >; + writeEditorConfigConversionResults: SansDependencies; }; /** @@ -38,7 +40,7 @@ export const convertEditorConfig = async ( settings, ); - const fileWriteError = await dependencies.writeConversionResults( + const fileWriteError = await dependencies.writeEditorConfigConversionResults( conversion.configPath, settingConversionResults, conversion.result, @@ -50,7 +52,7 @@ export const convertEditorConfig = async ( }; } - dependencies.reportConversionResults(settingConversionResults); + 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..f1d14ed6c --- /dev/null +++ b/src/converters/lintConfigs/configConversionResults.stubs.ts @@ -0,0 +1,13 @@ +import { SummarizedConfigResultsConfiguration } from "./summarization/types"; + +export const createEmptyConfigConversionResults = ( + overrides: Partial = {}, +): SummarizedConfigResultsConfiguration => ({ + converted: new Map(), + extends: [], + extensionRules: new Map(), + failed: [], + missing: [], + plugins: new Set(), + ...overrides, +}); diff --git a/src/converters/lintConfigs/convertLintConfig.test.ts b/src/converters/lintConfigs/convertLintConfig.test.ts new file mode 100644 index 000000000..887bd1143 --- /dev/null +++ b/src/converters/lintConfigs/convertLintConfig.test.ts @@ -0,0 +1,67 @@ +import { createStubOriginalConfigurationsData } from "../../settings.stubs"; +import { ResultStatus } from "../../types"; +import { convertLintConfig, ConvertLintConfigDependencies } from "./convertLintConfig"; + +const stubSettings = { + config: "./eslintrc.js", +}; + +const createStubDependencies = ( + overrides: Partial = {}, +): ConvertLintConfigDependencies => ({ + convertRules: jest.fn(), + reportConfigConversionResults: jest.fn(), + summarizePackageRules: async (_configurations, data) => ({ + ...data, + converted: new Map(), + extends: [], + extensionRules: new Map(), + failed: [], + missing: [], + plugins: new Set(), + }), + 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(), + ); + + // 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(), + ); + + // 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..6615be096 --- /dev/null +++ b/src/converters/lintConfigs/convertLintConfig.ts @@ -0,0 +1,57 @@ +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 `Architecture.md` for documentation. + */ +export const convertLintConfig = async ( + dependencies: ConvertLintConfigDependencies, + settings: TSLintToESLintSettings, + originalConfigurations: AllOriginalConfigurations, +): Promise => { + const ruleConversionResults = dependencies.convertRules( + originalConfigurations.tslint.full.rules, + ); + + const summarizedConfiguration = await dependencies.summarizePackageRules( + originalConfigurations.eslint, + originalConfigurations.tslint, + ruleConversionResults, + settings.prettier, + ); + + const fileWriteError = await dependencies.writeConfigConversionResults( + settings.config, + summarizedConfiguration, + originalConfigurations, + ); + if (fileWriteError !== undefined) { + return { + errors: [fileWriteError], + status: ResultStatus.Failed, + }; + } + + 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 90% rename from src/rules/convertRules.test.ts rename to src/converters/lintConfigs/rules/convertRules.test.ts index 1d220118c..edce6ea78 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 { TSLintRuleOptions, TSLintRuleSeverity } from "./types"; -import { RuleConverter, ConversionResult } from "./converter"; import { RuleMerger } from "./merger"; +import { RuleConverter, ConversionResult } from "./ruleConverter"; +import { TSLintRuleOptions, TSLintRuleSeverity } from "./types"; describe("convertRules", () => { it("doesn't crash when passed an undefined configuration", () => { @@ -12,7 +12,10 @@ describe("convertRules", () => { }); // Act - const { missing } = convertRules({ converters, mergers }, undefined); + const { missing } = convertRules( + { ruleConverters: converters, ruleMergers: mergers }, + undefined, + ); // Assert expect(missing).toEqual([]); @@ -26,7 +29,7 @@ describe("convertRules", () => { // Act const { missing } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -40,7 +43,7 @@ describe("convertRules", () => { // Act const { missing } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -56,7 +59,7 @@ describe("convertRules", () => { // Act const { failed } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -79,7 +82,7 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -115,7 +118,7 @@ describe("convertRules", () => { // Act const { failed } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -142,7 +145,7 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -183,7 +186,7 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -224,7 +227,7 @@ describe("convertRules", () => { // Act const { converted } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); @@ -256,7 +259,7 @@ describe("convertRules", () => { // Act const { plugins } = convertRules( - { converters, mergers }, + { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, ); diff --git a/src/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts similarity index 86% rename from src/rules/convertRules.ts rename to src/converters/lintConfigs/rules/convertRules.ts index 29db1b5f7..c76f8ea15 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 { RuleConverter } from "./ruleConverter"; import { TSLintRuleOptions, ESLintRuleOptions } from "./types"; export type ConvertRulesDependencies = { - converters: Map; - mergers: Map; + ruleConverters: Map; + ruleMergers: Map; }; export type RuleConversionResults = { @@ -32,7 +32,7 @@ export const convertRules = ( if (rawTslintRules !== undefined) { for (const [ruleName, value] of Object.entries(rawTslintRules)) { const tslintRule = formatRawTslintRule(ruleName, value); - const conversion = convertRule(tslintRule, dependencies.converters); + const conversion = convertRule(tslintRule, dependencies.ruleConverters); if (conversion === undefined) { if (tslintRule.ruleSeverity !== "off") { @@ -59,7 +59,7 @@ export const convertRules = ( continue; } - const merger = dependencies.mergers.get(changes.ruleName); + const merger = dependencies.ruleMergers.get(changes.ruleName); if (merger === undefined) { failed.push(ConversionError.forMerger(changes.ruleName)); } else { 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 cbbb983a6..de581d04a 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 87% rename from src/rules/converters/no-banned-terms.ts rename to src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts index 8f7760dab..b59892e36 100644 --- a/src/rules/converters/no-banned-terms.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts @@ -1,4 +1,4 @@ -import { RuleConverter } from "../converter"; +import { RuleConverter } from "../ruleConverter"; export const convertNoBannedTerms: RuleConverter = () => { return { 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 100% rename from src/rules/mergers/ban-types.ts rename to src/converters/lintConfigs/rules/ruleMergers/ban-types.ts diff --git a/src/rules/mergers/consistent-type-assertions.ts b/src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts similarity index 100% rename from src/rules/mergers/consistent-type-assertions.ts rename to src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts diff --git a/src/rules/mergers/indent.ts b/src/converters/lintConfigs/rules/ruleMergers/indent.ts similarity index 100% rename from src/rules/mergers/indent.ts rename to src/converters/lintConfigs/rules/ruleMergers/indent.ts diff --git a/src/rules/mergers/member-delimiter-style.ts b/src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts similarity index 100% rename from src/rules/mergers/member-delimiter-style.ts rename to src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts diff --git a/src/rules/mergers/naming-convention.ts b/src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts similarity index 100% rename from src/rules/mergers/naming-convention.ts rename to src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts diff --git a/src/rules/mergers/no-caller.ts b/src/converters/lintConfigs/rules/ruleMergers/no-caller.ts similarity index 100% rename from src/rules/mergers/no-caller.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-caller.ts diff --git a/src/rules/mergers/no-eval.ts b/src/converters/lintConfigs/rules/ruleMergers/no-eval.ts similarity index 100% rename from src/rules/mergers/no-eval.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-eval.ts diff --git a/src/rules/mergers/no-unnecessary-type-assertion.ts b/src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts similarity index 100% rename from src/rules/mergers/no-unnecessary-type-assertion.ts rename to src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts 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 100% rename from src/rules/mergers/triple-slash-reference.ts rename to src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts 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 86% rename from src/creation/writeConversionResults.test.ts rename to src/converters/lintConfigs/writeConfigConversionResults.test.ts index 93c2f9760..e0d5ece9d 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: [], @@ -64,7 +64,7 @@ describe("writeConversionResults", () => { const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -102,7 +102,7 @@ describe("writeConversionResults", () => { it("includes the original eslint configuration when it exists", async () => { // Arrange - const conversionResults = createEmptyConversionResults(); + const conversionResults = createEmptyConfigConversionResults(); const eslint = { full: { env: {}, @@ -120,7 +120,7 @@ describe("writeConversionResults", () => { const fileSystem = { writeFile: jest.fn().mockReturnValue(Promise.resolve()) }; // Act - await writeConversionResults( + await writeConfigConversionResults( { fileSystem }, ".eslintrc.json", conversionResults, @@ -150,13 +150,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, @@ -185,7 +185,7 @@ describe("writeConversionResults", () => { it("includes raw globals when they exist", async () => { // Arrange - const conversionResults = createEmptyConversionResults(); + const conversionResults = createEmptyConfigConversionResults(); const eslint = { full: { env: {}, @@ -204,7 +204,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 76% rename from src/creation/writeConversionResults.ts rename to src/converters/lintConfigs/writeConfigConversionResults.ts index 088df2c94..6b25e27a9 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 = ["@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..ee42c09aa --- /dev/null +++ b/src/converters/types.ts @@ -0,0 +1,10 @@ +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, +) => 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..3d08d31ae 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,11 @@ export type SucceededResult = { readonly status: ResultStatus.Succeeded; }; -export type SucceededDataResult = { - readonly data: Data; - readonly status: ResultStatus.Succeeded; -}; +export type SucceededDataResult = Data extends void + ? { + readonly status: ResultStatus.Succeeded; + } + : { + readonly data: Data; + readonly status: ResultStatus.Succeeded; + }; From dc7a1615b78c6a3768523ae4ea127f27838db7ec Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 12 Sep 2020 15:08:53 -0400 Subject: [PATCH 2/9] Lint disable --- src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types.ts b/src/types.ts index 3d08d31ae..a25919786 100644 --- a/src/types.ts +++ b/src/types.ts @@ -66,6 +66,7 @@ export type SucceededResult = { readonly status: ResultStatus.Succeeded; }; +// eslint-disable-next-line @typescript-eslint/no-invalid-void-type export type SucceededDataResult = Data extends void ? { readonly status: ResultStatus.Succeeded; From 22170eb88986f7cd5bdceea98c505d5e40797656 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 12 Sep 2020 15:09:47 -0400 Subject: [PATCH 3/9] One last name fix for a merger --- .../lintConfigs/rules/ruleMergers/triple-slash-reference.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts b/src/converters/lintConfigs/rules/ruleMergers/triple-slash-reference.ts index d89202e19..366e9903a 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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); From df56739eea4762bcb556068767d809c18d16c505 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 15 Sep 2020 14:07:16 -0400 Subject: [PATCH 4/9] Fix merger/ruleMerger imports --- src/converters/lintConfigs/rules/convertRules.test.ts | 2 +- src/converters/lintConfigs/rules/convertRules.ts | 2 +- src/converters/lintConfigs/rules/ruleMergers/ban-types.ts | 2 +- .../lintConfigs/rules/ruleMergers/consistent-type-assertions.ts | 2 +- src/converters/lintConfigs/rules/ruleMergers/indent.ts | 2 +- .../lintConfigs/rules/ruleMergers/member-delimiter-style.ts | 2 +- .../lintConfigs/rules/ruleMergers/naming-convention.ts | 2 +- src/converters/lintConfigs/rules/ruleMergers/no-caller.ts | 2 +- src/converters/lintConfigs/rules/ruleMergers/no-eval.ts | 2 +- .../rules/ruleMergers/no-unnecessary-type-assertion.ts | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/converters/lintConfigs/rules/convertRules.test.ts b/src/converters/lintConfigs/rules/convertRules.test.ts index edce6ea78..dd1c1962e 100644 --- a/src/converters/lintConfigs/rules/convertRules.test.ts +++ b/src/converters/lintConfigs/rules/convertRules.test.ts @@ -1,6 +1,6 @@ import { ConversionError } from "../../../errors/conversionError"; import { convertRules } from "./convertRules"; -import { RuleMerger } from "./merger"; +import { RuleMerger } from "./ruleMerger"; import { RuleConverter, ConversionResult } from "./ruleConverter"; import { TSLintRuleOptions, TSLintRuleSeverity } from "./types"; diff --git a/src/converters/lintConfigs/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts index c76f8ea15..9482f0419 100644 --- a/src/converters/lintConfigs/rules/convertRules.ts +++ b/src/converters/lintConfigs/rules/convertRules.ts @@ -4,7 +4,7 @@ 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"; diff --git a/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts index 6c66d27b0..a861a349c 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts @@ -1,4 +1,4 @@ -import { RuleMerger } from "../merger"; +import { RuleMerger } from "../ruleMerger"; export const mergeBanTypes: RuleMerger = (existingOptions, newOptions) => { if (existingOptions === undefined && newOptions === undefined) { diff --git a/src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts b/src/converters/lintConfigs/rules/ruleMergers/consistent-type-assertions.ts index 24e943df7..7bf79e2f0 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/indent.ts b/src/converters/lintConfigs/rules/ruleMergers/indent.ts index c9b8ae69c..ace14ca9d 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts b/src/converters/lintConfigs/rules/ruleMergers/member-delimiter-style.ts index 90dd1b054..6a224dd7c 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/naming-convention.ts b/src/converters/lintConfigs/rules/ruleMergers/naming-convention.ts index 78b3614b5..c22ca7c96 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/no-caller.ts b/src/converters/lintConfigs/rules/ruleMergers/no-caller.ts index 1d2450fa6..687444e86 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/no-eval.ts b/src/converters/lintConfigs/rules/ruleMergers/no-eval.ts index 59cf5afe0..da4cff2d4 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts b/src/converters/lintConfigs/rules/ruleMergers/no-unnecessary-type-assertion.ts index fc230e17c..983aeb430 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/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) { From bd5adde4de7591b5d85affffeed8211af9a250e8 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 19 Sep 2020 14:39:28 -0400 Subject: [PATCH 5/9] Fixed up ruleEquivalents pipelines and tested it --- docs/Architecture/Comments.md | 0 docs/Architecture/Editors.md | 0 docs/Architecture/Linting.md | 0 docs/{Architecture.md => Architecture/README.md} | 0 src/cli/runCli.ts | 3 ++- .../lintConfigs/convertLintConfig.test.ts | 2 ++ src/converters/lintConfigs/convertLintConfig.ts | 2 ++ .../lintConfigs/rules/convertRules.test.ts | 14 +++++++++++++- src/converters/lintConfigs/rules/convertRules.ts | 4 ++-- src/converters/types.ts | 1 + 10 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 docs/Architecture/Comments.md create mode 100644 docs/Architecture/Editors.md create mode 100644 docs/Architecture/Linting.md rename docs/{Architecture.md => Architecture/README.md} (100%) diff --git a/docs/Architecture/Comments.md b/docs/Architecture/Comments.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/Architecture/Editors.md b/docs/Architecture/Editors.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/Architecture/Linting.md b/docs/Architecture/Linting.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/Architecture.md b/docs/Architecture/README.md similarity index 100% rename from docs/Architecture.md rename to docs/Architecture/README.md diff --git a/src/cli/runCli.ts b/src/cli/runCli.ts index 309a7eab4..9cf1c7dfa 100644 --- a/src/cli/runCli.ts +++ b/src/cli/runCli.ts @@ -69,10 +69,11 @@ const tryConvertConfig = async ( argv: TSLintToESLintSettings, originalConfigurations: AllOriginalConfigurations, ): Promise => { + const ruleEquivalents = new Map(); let result: ResultWithStatus; try { - result = await converter(argv, originalConfigurations); + result = await converter(argv, originalConfigurations, ruleEquivalents); } catch (error) { result = { errors: [error as Error], diff --git a/src/converters/lintConfigs/convertLintConfig.test.ts b/src/converters/lintConfigs/convertLintConfig.test.ts index ddfcb73bb..554a01f49 100644 --- a/src/converters/lintConfigs/convertLintConfig.test.ts +++ b/src/converters/lintConfigs/convertLintConfig.test.ts @@ -38,6 +38,7 @@ describe("convertLintConfig", () => { dependencies, stubSettings, createStubOriginalConfigurationsData(), + new Map(), ); // Assert @@ -59,6 +60,7 @@ describe("convertLintConfig", () => { dependencies, stubSettings, createStubOriginalConfigurationsData(), + new Map(), ); // Assert diff --git a/src/converters/lintConfigs/convertLintConfig.ts b/src/converters/lintConfigs/convertLintConfig.ts index 6615be096..6208c7bb3 100644 --- a/src/converters/lintConfigs/convertLintConfig.ts +++ b/src/converters/lintConfigs/convertLintConfig.ts @@ -23,9 +23,11 @@ export const convertLintConfig = async ( dependencies: ConvertLintConfigDependencies, settings: TSLintToESLintSettings, originalConfigurations: AllOriginalConfigurations, + ruleEquivalents: Map, ): Promise => { const ruleConversionResults = dependencies.convertRules( originalConfigurations.tslint.full.rules, + ruleEquivalents, ); const summarizedConfiguration = await dependencies.summarizePackageRules( diff --git a/src/converters/lintConfigs/rules/convertRules.test.ts b/src/converters/lintConfigs/rules/convertRules.test.ts index dd1c1962e..1c9a21637 100644 --- a/src/converters/lintConfigs/rules/convertRules.test.ts +++ b/src/converters/lintConfigs/rules/convertRules.test.ts @@ -15,6 +15,7 @@ describe("convertRules", () => { const { missing } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, undefined, + new Map(), ); // Assert @@ -31,6 +32,7 @@ describe("convertRules", () => { const { missing } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -45,6 +47,7 @@ describe("convertRules", () => { const { missing } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -61,6 +64,7 @@ describe("convertRules", () => { const { failed } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -79,11 +83,13 @@ describe("convertRules", () => { const { tslintRule, converters, mergers } = setupConversionEnvironment({ conversionResult, }); + const ruleEquivalents = new Map(); // Act const { converted } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + ruleEquivalents, ); // Assert @@ -98,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", () => { @@ -120,13 +127,14 @@ describe("convertRules", () => { const { failed } = convertRules( { 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: [ @@ -147,6 +155,7 @@ describe("convertRules", () => { const { converted } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -188,6 +197,7 @@ describe("convertRules", () => { const { converted } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -229,6 +239,7 @@ describe("convertRules", () => { const { converted } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert @@ -261,6 +272,7 @@ describe("convertRules", () => { const { plugins } = convertRules( { ruleConverters: converters, ruleMergers: mergers }, { [tslintRule.ruleName]: tslintRule }, + new Map(), ); // Assert diff --git a/src/converters/lintConfigs/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts index 73d700a5c..2128f1244 100644 --- a/src/converters/lintConfigs/rules/convertRules.ts +++ b/src/converters/lintConfigs/rules/convertRules.ts @@ -23,13 +23,13 @@ export type RuleConversionResults = { 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)) { diff --git a/src/converters/types.ts b/src/converters/types.ts index ee42c09aa..0b64677c5 100644 --- a/src/converters/types.ts +++ b/src/converters/types.ts @@ -7,4 +7,5 @@ import { ResultWithStatus, TSLintToESLintSettings } from "../types"; export type Converter = ( settings: TSLintToESLintSettings, originalConfigurations: AllOriginalConfigurations, + ruleEquivalents: Map, ) => Promise; From 824b7951d61a6100a2bdd492b79fb3d7c028714c Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 19 Sep 2020 14:59:42 -0400 Subject: [PATCH 6/9] Spruced up convertComments --- docs/Development.md | 2 +- .../comments/convertComments.test.ts | 67 +++------------ src/converters/comments/convertComments.ts | 59 ++++--------- .../comments/extractGlobPaths.test.ts | 83 +++++++++++++++++++ src/converters/comments/extractGlobPaths.ts | 57 +++++++++++++ .../editorConfigs/convertEditorConfig.ts | 1 + .../lintConfigs/convertLintConfig.ts | 2 +- 7 files changed, 169 insertions(+), 102 deletions(-) create mode 100644 src/converters/comments/extractGlobPaths.test.ts create mode 100644 src/converters/comments/extractGlobPaths.ts 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/src/converters/comments/convertComments.test.ts b/src/converters/comments/convertComments.test.ts index 18477d9ca..527aa151f 100644 --- a/src/converters/comments/convertComments.test.ts +++ b/src/converters/comments/convertComments.test.ts @@ -9,7 +9,10 @@ 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, }); @@ -56,77 +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, - { comments: true }, - createStubOriginalConfigurationsData({ - typescript: { - include: ["src/*.ts"], - }, + extractGlobPaths: jest.fn().mockResolvedValueOnce({ + errors: [globAsyncError], + status: ResultStatus.Failed, }), - new Map(), - ); - - // 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: [], - }), - globAsync: jest.fn().mockResolvedValueOnce([]), }); // Act const result = await convertComments( dependencies, - { comments: [] }, - createStubOriginalConfigurationsData(), - new Map(), - ); - - // 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({ - collectCommentFileNames: async () => ({ - exclude: ["*.ts"], - include: ["a.ts"], - }), - globAsync: jest.fn().mockResolvedValueOnce(["a.ts"]), - }); - - // Act - const result = await convertComments( - dependencies, - { comments: ["*.ts"] }, + { comments: true }, createStubOriginalConfigurationsData(), new Map(), ); // Assert expect(result).toEqual({ - errors: expect.arrayContaining([expect.any(Error)]), + errors: [globAsyncError], status: ResultStatus.Failed, }); }); diff --git a/src/converters/comments/convertComments.ts b/src/converters/comments/convertComments.ts index 372fee434..9b1178c8a 100644 --- a/src/converters/comments/convertComments.ts +++ b/src/converters/comments/convertComments.ts @@ -1,27 +1,30 @@ -import minimatch from "minimatch"; - -import { GlobAsync } from "../../adapters/globAsync"; import { SansDependencies } from "../../binding"; import { collectCommentFileNames } from "../../comments/collectCommentFileNames"; import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations"; import { ResultWithDataStatus, ResultStatus, TSLintToESLintSettings } from "../../types"; -import { uniqueFromSources, separateErrors, isError } from "../../utils"; +import { isError } from "../../utils"; import { convertFileComments } from "./convertFileComments"; +import { extractGlobPaths } from "./extractGlobPaths"; import { reportCommentResults } from "./reporting/reportCommentResults"; export type ConvertCommentsDependencies = { collectCommentFileNames: SansDependencies; convertFileComments: SansDependencies; - globAsync: GlobAsync; + 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 { @@ -30,8 +33,8 @@ export const convertComments = async ( }; } + // 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], @@ -39,48 +42,18 @@ export const convertComments = async ( }; } - 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, - }; + // 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( - uniqueGlobbedFilePaths.map(async (filePath) => + globbedFilePaths.data.map(async (filePath) => dependencies.convertFileComments(filePath, ruleCommentsCache, ruleEquivalents), ), ) 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/converters/editorConfigs/convertEditorConfig.ts b/src/converters/editorConfigs/convertEditorConfig.ts index 3a6ba0f3c..9e6c2619c 100644 --- a/src/converters/editorConfigs/convertEditorConfig.ts +++ b/src/converters/editorConfigs/convertEditorConfig.ts @@ -16,6 +16,7 @@ export type ConvertEditorConfigDependencies = { /** * Root-level driver to convert an editor configuration. + * @see `/docs/Architecture/Editors.md` for documentation. */ export const convertEditorConfig = async ( dependencies: ConvertEditorConfigDependencies, diff --git a/src/converters/lintConfigs/convertLintConfig.ts b/src/converters/lintConfigs/convertLintConfig.ts index 6208c7bb3..c552560e4 100644 --- a/src/converters/lintConfigs/convertLintConfig.ts +++ b/src/converters/lintConfigs/convertLintConfig.ts @@ -17,7 +17,7 @@ export type ConvertLintConfigDependencies = { /** * Root-level driver to convert a TSLint configuration to ESLint. - * @see `Architecture.md` for documentation. + * @see `/docs/Architecture/Linting.md` for documentation. */ export const convertLintConfig = async ( dependencies: ConvertLintConfigDependencies, From 73e90422c42c82b52e422e24ce161733abbefb0b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 19 Sep 2020 15:14:10 -0400 Subject: [PATCH 7/9] Fix tsc again; start on docs --- docs/Architecture/Comments.md | 22 +++++++++++ docs/Architecture/Linters.md | 44 ++++++++++++++++++++++ docs/Architecture/Linting.md | 0 docs/Architecture/README.md | 11 ------ src/cli/main.ts | 42 ++++++++++++--------- src/converters/comments/convertComments.ts | 1 + 6 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 docs/Architecture/Linters.md delete mode 100644 docs/Architecture/Linting.md diff --git a/docs/Architecture/Comments.md b/docs/Architecture/Comments.md index e69de29bb..83fd2e285 100644 --- a/docs/Architecture/Comments.md +++ 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/Linters.md b/docs/Architecture/Linters.md new file mode 100644 index 000000000..503a6165b --- /dev/null +++ b/docs/Architecture/Linters.md @@ -0,0 +1,44 @@ +# Linters + + +Within `src/converters/lintConfigs/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. diff --git a/docs/Architecture/Linting.md b/docs/Architecture/Linting.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/Architecture/README.md b/docs/Architecture/README.md index 805024557..a79799707 100644 --- a/docs/Architecture/README.md +++ b/docs/Architecture/README.md @@ -51,17 +51,6 @@ These are located in `src/rules/mergers/`, and keyed under their names by the ma 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`. diff --git a/src/cli/main.ts b/src/cli/main.ts index 0cd6bf387..b925dc656 100644 --- a/src/cli/main.ts +++ b/src/cli/main.ts @@ -7,19 +7,9 @@ import { nativeImporter } from "../adapters/nativeImporter"; import { processLogger } from "../adapters/processLogger"; import { bind } from "../binding"; import { - findEditorConfiguration, - FindEditorConfigurationDependencies, -} from "../input/findEditorConfiguration"; -import { findESLintConfiguration } from "../input/findESLintConfiguration"; -import { - findOriginalConfigurations, - FindOriginalConfigurationsDependencies, -} from "../input/findOriginalConfigurations"; -import { findPackagesConfiguration } from "../input/findPackagesConfiguration"; -import { findTSLintConfiguration } from "../input/findTSLintConfiguration"; -import { findTypeScriptConfiguration } from "../input/findTypeScriptConfiguration"; -import { importer, ImporterDependencies } from "../input/importer"; -import { mergeLintConfigurations } from "../input/mergeLintConfigurations"; + collectCommentFileNames, + CollectCommentFileNamesDependencies, +} from "../comments/collectCommentFileNames"; import { ReportCommentResultsDependencies, reportCommentResults, @@ -81,9 +71,23 @@ import { writeEditorConfigConversionResults } from "../converters/lintConfigs/wr import { addPrettierExtensions } from "../converters/lintConfigs/summarization/prettier/addPrettierExtensions"; import { removeExtendsDuplicatedRules } from "../converters/lintConfigs/pruning/removeExtendsDuplicatedRules"; import { - collectCommentFileNames, - CollectCommentFileNamesDependencies, -} from "../comments/collectCommentFileNames"; + ExtractGlobPathsDependencies, + extractGlobPaths, +} from "../converters/comments/extractGlobPaths"; +import { + findEditorConfiguration, + FindEditorConfigurationDependencies, +} from "../input/findEditorConfiguration"; +import { findESLintConfiguration } from "../input/findESLintConfiguration"; +import { + findOriginalConfigurations, + FindOriginalConfigurationsDependencies, +} from "../input/findOriginalConfigurations"; +import { findPackagesConfiguration } from "../input/findPackagesConfiguration"; +import { findTSLintConfiguration } from "../input/findTSLintConfiguration"; +import { findTypeScriptConfiguration } from "../input/findTypeScriptConfiguration"; +import { importer, ImporterDependencies } from "../input/importer"; +import { mergeLintConfigurations } from "../input/mergeLintConfigurations"; const convertFileCommentsDependencies: ConvertFileCommentsDependencies = { converters: ruleConverters, @@ -133,10 +137,14 @@ const collectCommentFileNamesDependencies: CollectCommentFileNamesDependencies = findTypeScriptConfiguration: bind(findTypeScriptConfiguration, findConfigurationDependencies), }; +const extractGlobPathsDependencies: ExtractGlobPathsDependencies = { + globAsync, +}; + const convertCommentsDependencies: ConvertCommentsDependencies = { collectCommentFileNames: bind(collectCommentFileNames, collectCommentFileNamesDependencies), convertFileComments: bind(convertFileComments, convertFileCommentsDependencies), - globAsync, + extractGlobPaths: bind(extractGlobPaths, extractGlobPathsDependencies), reportCommentResults: bind(reportCommentResults, reportCommentResultsDependencies), }; diff --git a/src/converters/comments/convertComments.ts b/src/converters/comments/convertComments.ts index 9b1178c8a..3598ce345 100644 --- a/src/converters/comments/convertComments.ts +++ b/src/converters/comments/convertComments.ts @@ -65,6 +65,7 @@ export const convertComments = async ( }; } + // 5. Report out the results of converting the unique globbed file paths. dependencies.reportCommentResults(uniqueGlobbedFilePaths); return { From 2b48234f58b2fd75f3baf5017692c79d79a70942 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 19 Sep 2020 15:45:35 -0400 Subject: [PATCH 8/9] Update architecture docs --- docs/Architecture/Editors.md | 13 ++++ docs/Architecture/Linters.md | 35 +++++++---- docs/Architecture/README.md | 63 +++++-------------- src/cli/runCli.ts | 7 +++ .../editorConfigs/convertEditorConfig.ts | 21 ++++--- .../lintConfigs/convertLintConfig.ts | 5 +- .../lintConfigs/rules/convertRules.ts | 13 ++++ .../rules/ruleConverters/no-banned-terms.ts | 2 +- .../rules/ruleMergers/ban-types.ts | 2 +- 9 files changed, 92 insertions(+), 69 deletions(-) diff --git a/docs/Architecture/Editors.md b/docs/Architecture/Editors.md index e69de29bb..9ba28946d 100644 --- a/docs/Architecture/Editors.md +++ 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 index 503a6165b..1826bd1e7 100644 --- a/docs/Architecture/Linters.md +++ b/docs/Architecture/Linters.md @@ -1,20 +1,26 @@ # 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. 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 +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 -### Conversion Results +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: -The overall configuration generated by steps 2-3 and printed in 4-5 contains the following information: +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 @@ -42,3 +48,10 @@ It's possible that one ESLint rule will be output by multiple converters. 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 index a79799707..ddac82c0d 100644 --- a/docs/Architecture/README.md +++ b/docs/Architecture/README.md @@ -1,57 +1,26 @@ # Architecture -## CLI Architecture +tslint-to-eslint-config is a heavily tested CLI app that uses rudimentary [dependency injection](https://wikipedia.org/wiki/Dependency_injection) to link functions together. -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`. +The initial application flow starts in `bin/tslint-to-eslint-config`: -## Linter Configuration Conversion +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. -Within `src/conversion/convertLintConfig.ts`, the following steps occur: +> See [Dependencies.md](./Dependencies.md) for more info on dependency bindings. -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 +## CLI Runner -### Conversion Results +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. -The overall configuration generated by steps 2-3 and printed in 4-5 contains the following information: +## Converters -### Rule Converters +Within that flow, there are three "root-level" converters directly called by `runCli`, in order: -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. - -## 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. +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/src/cli/runCli.ts b/src/cli/runCli.ts index 9cf1c7dfa..42ab7b763 100644 --- a/src/cli/runCli.ts +++ b/src/cli/runCli.ts @@ -19,10 +19,14 @@ export type RunCliDependencies = { 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]") @@ -41,17 +45,20 @@ export const runCli = async ( ...command.parse(rawArgv).opts(), } as TSLintToESLintSettings; + // 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; } + // 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) { diff --git a/src/converters/editorConfigs/convertEditorConfig.ts b/src/converters/editorConfigs/convertEditorConfig.ts index 9e6c2619c..c490222bb 100644 --- a/src/converters/editorConfigs/convertEditorConfig.ts +++ b/src/converters/editorConfigs/convertEditorConfig.ts @@ -22,29 +22,33 @@ export const convertEditorConfig = async ( dependencies: ConvertEditorConfigDependencies, settings: TSLintToESLintSettings, ): Promise => { - const conversion = await dependencies.findEditorConfiguration(settings.editor); - if (conversion === undefined) { + // 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 (conversion.result instanceof Error) { + if (configuration.result instanceof Error) { return { - errors: [conversion.result], + errors: [configuration.result], status: ResultStatus.Failed, }; } + // 3. Configuration settings are converted to their ESLint equivalents. const settingConversionResults = dependencies.convertEditorSettings( - conversion.result, + configuration.result, settings, ); + // 4. Those ESLint equivalents are written to the configuration file. const fileWriteError = await dependencies.writeEditorConfigConversionResults( - conversion.configPath, + configuration.configPath, settingConversionResults, - conversion.result, + configuration.result, ); if (fileWriteError !== undefined) { return { @@ -53,6 +57,7 @@ export const convertEditorConfig = async ( }; } + // 5. Results from converting are reported to the user. dependencies.reportEditorSettingConversionResults(settingConversionResults); return { diff --git a/src/converters/lintConfigs/convertLintConfig.ts b/src/converters/lintConfigs/convertLintConfig.ts index c552560e4..c6e7de782 100644 --- a/src/converters/lintConfigs/convertLintConfig.ts +++ b/src/converters/lintConfigs/convertLintConfig.ts @@ -25,11 +25,13 @@ export const convertLintConfig = async ( 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, @@ -37,6 +39,7 @@ export const convertLintConfig = async ( settings.prettier, ); + // 3. Those deduplicated rules and metadata are written to the output configuration file. const fileWriteError = await dependencies.writeConfigConversionResults( settings.config, summarizedConfiguration, @@ -49,8 +52,8 @@ export const convertLintConfig = async ( }; } + // 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 { diff --git a/src/converters/lintConfigs/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts index 2128f1244..99e568fe5 100644 --- a/src/converters/lintConfigs/rules/convertRules.ts +++ b/src/converters/lintConfigs/rules/convertRules.ts @@ -21,6 +21,10 @@ 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 | undefined, @@ -33,9 +37,13 @@ export const convertRules = ( 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); + + // 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,20 +59,25 @@ 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; } + // 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)); diff --git a/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts b/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts index b59892e36..c1bc09b11 100644 --- a/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts +++ b/src/converters/lintConfigs/rules/ruleConverters/no-banned-terms.ts @@ -2,7 +2,7 @@ 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/converters/lintConfigs/rules/ruleMergers/ban-types.ts b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts index a861a349c..32823f97c 100644 --- a/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts +++ b/src/converters/lintConfigs/rules/ruleMergers/ban-types.ts @@ -5,7 +5,7 @@ export const mergeBanTypes: RuleMerger = (existingOptions, newOptions) => { 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: { From dfea70bd7000bbba59a38de688c1eaf2f03bdd3a Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 19 Sep 2020 19:41:48 -0400 Subject: [PATCH 9/9] A few touchups --- docs/Architecture/README.md | 10 +++++----- docs/Dependencies.md | 5 +++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/Architecture/README.md b/docs/Architecture/README.md index ddac82c0d..c01ff2b04 100644 --- a/docs/Architecture/README.md +++ b/docs/Architecture/README.md @@ -1,23 +1,23 @@ # Architecture -tslint-to-eslint-config is a heavily tested CLI app that uses rudimentary [dependency injection](https://wikipedia.org/wiki/Dependency_injection) to link functions together. - -The initial application flow starts in `bin/tslint-to-eslint-config`: +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 dependency bindings. +> 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 +### Converters Within that flow, there are three "root-level" converters directly called by `runCli`, in order: 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