typescript-eslint / tslint-to-eslint-config

Converts your TSLint configuration to the closest possible ESLint equivalent. 🚀
MIT License
852 stars 100 forks source link

Handle tslint-eslint-rules properly #342

Open MLefebvreICO opened 4 years ago

MLefebvreICO commented 4 years ago

🚀 Feature Request

Handle tslint-eslint-rules when converting to directly put them in the rules of the config.

Existing Behavior

It puts valid eslint rules into @typescript-eslint/tslint/config

Change Proposal

Handle already valid eslint rules added (base on the rule's name) with tslint-eslint-rules and just transfer them directly into the rules of .eslintrc.js

JoshuaKGoldberg commented 4 years ago

@MLefebvreICO thanks for filing this issue! I'm a little unsure what you mean, but it looks like you're referring to adding converters for rules from tslint-eslint-rules?

If so, excellent, yes! Very happy to take those in.

MLefebvreICO commented 4 years ago

@JoshuaKGoldberg I though they were direct ESLint rules they embeded, but yeah some rules have a different name under that plugin, so yes adding a converter for that could be nice.

Unfortunately, we make the move now to ESLint so I won't be able to enjoy it, but I'm sure it could profit some more people

JoshuaKGoldberg commented 3 years ago

Scraping https://github.com/buzinas/tslint-eslint-rules,

tds = [...document.querySelectorAll("td[align=left]")];
trs = tds.filter(td => td.textContent === "✅").map(td => td.parentNode).filter(tr => tr.cells.length === 4)
ruleNames = trs.map(tr => `${tr.cells[2].textContent} -> ${tr.cells[1].textContent}`)

...the list is:

no-control-regex -> no-control-regex
no-duplicate-case -> no-duplicate-case
no-empty-character-class -> no-empty-character-class
no-ex-assign -> no-ex-assign
no-extra-boolean-cast -> no-extra-boolean-cast
no-extra-semi -> no-extra-semi
no-inner-declarations -> no-inner-declarations
no-invalid-regexp -> no-invalid-regexp
ter-no-irregular-whitespace -> no-irregular-whitespace
no-regex-spaces -> no-regex-spaces
ter-no-sparse-arrays -> no-sparse-arrays
no-unexpected-multiline -> no-unexpected-multiline
valid-jsdoc -> valid-jsdoc
valid-typeof -> valid-typeof
no-multi-spaces -> no-multi-spaces
ter-no-proto -> no-proto
ter-no-script-url -> no-script-url
ter-no-self-compare -> no-self-compare
handle-callback-err -> handle-callback-err
array-bracket-spacing -> array-bracket-spacing
block-spacing -> block-spacing
brace-style -> brace-style
ter-computed-property-spacing -> computed-property-spacing
ter-func-call-spacing -> func-call-spacing
ter-indent -> indent
ter-max-len -> max-len
ter-newline-after-var -> newline-after-var
ter-no-mixed-spaces-and-tabs -> no-mixed-spaces-and-tabs
object-curly-spacing -> object-curly-spacing
ter-padded-blocks -> padded-blocks
sort-imports -> sort-imports
space-in-parens -> space-in-parens
ter-no-tabs -> no-tabs
ter-arrow-body-style -> arrow-body-style
ter-arrow-parens -> arrow-parens
ter-arrow-spacing -> arrow-spacing
ter-prefer-arrow-callback -> prefer-arrow-callback
JoshuaKGoldberg commented 3 years ago

Here are the rules not already implemented in tslint-microsoft-contrib converters:

array-bracket-spacing -> array-bracket-spacing
block-spacing -> block-spacing
brace-style -> brace-style
handle-callback-err -> handle-callback-err
no-duplicate-case -> no-duplicate-case
no-empty-character-class -> no-empty-character-class
no-ex-assign -> no-ex-assign
no-extra-boolean-cast -> no-extra-boolean-cast
no-extra-semi -> no-extra-semi
no-inner-declarations -> no-inner-declarations
no-multi-spaces -> no-multi-spaces
no-unexpected-multiline -> no-unexpected-multiline
object-curly-spacing -> object-curly-spacing
sort-imports -> sort-imports
space-in-parens -> space-in-parens
ter-arrow-body-style -> arrow-body-style
ter-arrow-parens -> arrow-parens
ter-arrow-spacing -> arrow-spacing
ter-computed-property-spacing -> computed-property-spacing
ter-func-call-spacing -> func-call-spacing
ter-indent -> indent
ter-max-len -> max-len
ter-newline-after-var -> newline-after-var
ter-no-irregular-whitespace -> no-irregular-whitespace
ter-no-mixed-spaces-and-tabs -> no-mixed-spaces-and-tabs
ter-no-proto -> no-proto
ter-no-script-url -> no-script-url
ter-no-self-compare -> no-self-compare
ter-no-sparse-arrays -> no-sparse-arrays
ter-no-tabs -> no-tabs
ter-padded-blocks -> padded-blocks
ter-prefer-arrow-callback -> prefer-arrow-callback
valid-jsdoc -> valid-jsdoc
valid-typeof -> valid-typeof