oxc icon indicating copy to clipboard operation
oxc copied to clipboard

☂️ typescript-eslint

Open Boshen opened this issue 1 year ago • 9 comments

[!WARNING] This comment is maintained by CI. Do not edit this comment directly. To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules

This is tracking issue for @typescript-eslint/eslint-plugin.

There are 66(+ 6 deprecated) rules.

  • 10/40 recommended rules are remaining as TODO
  • 15/26 not recommended rules are remaining as TODO

To get started, run the following command:

just new-typescript-rule <RULE_NAME>

Then register the rule in crates/oxc_linter/src/rules.rs and also declare_all_lint_rules at the bottom.

Recommended rules

✨: 30, 🚫: 0 / total: 40
Status Name Docs
typescript/adjacent-overload-signatures https://typescript-eslint.io/rules/adjacent-overload-signatures
typescript/array-type https://typescript-eslint.io/rules/array-type
typescript/ban-tslint-comment https://typescript-eslint.io/rules/ban-tslint-comment
typescript/class-literal-property-style https://typescript-eslint.io/rules/class-literal-property-style
typescript/consistent-generic-constructors https://typescript-eslint.io/rules/consistent-generic-constructors
typescript/consistent-indexed-object-style https://typescript-eslint.io/rules/consistent-indexed-object-style
typescript/consistent-type-assertions https://typescript-eslint.io/rules/consistent-type-assertions
typescript/consistent-type-definitions https://typescript-eslint.io/rules/consistent-type-definitions
typescript/no-array-constructor https://typescript-eslint.io/rules/no-array-constructor
typescript/no-confusing-non-null-assertion https://typescript-eslint.io/rules/no-confusing-non-null-assertion
typescript/no-duplicate-enum-values https://typescript-eslint.io/rules/no-duplicate-enum-values
typescript/no-dynamic-delete https://typescript-eslint.io/rules/no-dynamic-delete
typescript/no-empty-function https://typescript-eslint.io/rules/no-empty-function
typescript/no-empty-object-type https://typescript-eslint.io/rules/no-empty-object-type
typescript/no-explicit-any https://typescript-eslint.io/rules/no-explicit-any
typescript/no-extra-non-null-assertion https://typescript-eslint.io/rules/no-extra-non-null-assertion
typescript/no-extraneous-class https://typescript-eslint.io/rules/no-extraneous-class
typescript/no-inferrable-types https://typescript-eslint.io/rules/no-inferrable-types
typescript/no-invalid-void-type https://typescript-eslint.io/rules/no-invalid-void-type
typescript/no-misused-new https://typescript-eslint.io/rules/no-misused-new
typescript/no-namespace https://typescript-eslint.io/rules/no-namespace
typescript/no-non-null-asserted-nullish-coalescing https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing
typescript/no-non-null-asserted-optional-chain https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain
typescript/no-non-null-assertion https://typescript-eslint.io/rules/no-non-null-assertion
typescript/no-require-imports https://typescript-eslint.io/rules/no-require-imports
typescript/no-this-alias https://typescript-eslint.io/rules/no-this-alias
typescript/no-unnecessary-type-constraint https://typescript-eslint.io/rules/no-unnecessary-type-constraint
typescript/no-unsafe-declaration-merging https://typescript-eslint.io/rules/no-unsafe-declaration-merging
typescript/no-unsafe-function-type https://typescript-eslint.io/rules/no-unsafe-function-type
typescript/no-unused-expressions https://typescript-eslint.io/rules/no-unused-expressions
typescript/no-unused-vars https://typescript-eslint.io/rules/no-unused-vars
typescript/no-useless-constructor https://typescript-eslint.io/rules/no-useless-constructor
typescript/no-wrapper-object-types https://typescript-eslint.io/rules/no-wrapper-object-types
typescript/prefer-as-const https://typescript-eslint.io/rules/prefer-as-const
typescript/prefer-for-of https://typescript-eslint.io/rules/prefer-for-of
typescript/prefer-function-type https://typescript-eslint.io/rules/prefer-function-type
typescript/prefer-literal-enum-member https://typescript-eslint.io/rules/prefer-literal-enum-member
typescript/prefer-namespace-keyword https://typescript-eslint.io/rules/prefer-namespace-keyword
typescript/triple-slash-reference https://typescript-eslint.io/rules/triple-slash-reference
typescript/unified-signatures https://typescript-eslint.io/rules/unified-signatures

✨ = Implemented, 🚫 = No need to implement

Not recommended rules

✨: 11, 🚫: 0 / total: 26
Status Name Docs
typescript/ban-ts-comment https://typescript-eslint.io/rules/ban-ts-comment
typescript/class-methods-use-this https://typescript-eslint.io/rules/class-methods-use-this
typescript/consistent-type-imports https://typescript-eslint.io/rules/consistent-type-imports
typescript/default-param-last https://typescript-eslint.io/rules/default-param-last
typescript/explicit-function-return-type https://typescript-eslint.io/rules/explicit-function-return-type
typescript/explicit-member-accessibility https://typescript-eslint.io/rules/explicit-member-accessibility
typescript/explicit-module-boundary-types https://typescript-eslint.io/rules/explicit-module-boundary-types
typescript/init-declarations https://typescript-eslint.io/rules/init-declarations
typescript/max-params https://typescript-eslint.io/rules/max-params
typescript/member-ordering https://typescript-eslint.io/rules/member-ordering
typescript/method-signature-style https://typescript-eslint.io/rules/method-signature-style
typescript/no-dupe-class-members https://typescript-eslint.io/rules/no-dupe-class-members
typescript/no-import-type-side-effects https://typescript-eslint.io/rules/no-import-type-side-effects
typescript/no-invalid-this https://typescript-eslint.io/rules/no-invalid-this
typescript/no-loop-func https://typescript-eslint.io/rules/no-loop-func
typescript/no-magic-numbers https://typescript-eslint.io/rules/no-magic-numbers
typescript/no-redeclare https://typescript-eslint.io/rules/no-redeclare
typescript/no-restricted-imports https://typescript-eslint.io/rules/no-restricted-imports
typescript/no-restricted-types https://typescript-eslint.io/rules/no-restricted-types
typescript/no-shadow https://typescript-eslint.io/rules/no-shadow
typescript/no-unnecessary-parameter-property-assignment https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment
typescript/no-use-before-define https://typescript-eslint.io/rules/no-use-before-define
typescript/no-useless-empty-export https://typescript-eslint.io/rules/no-useless-empty-export
typescript/parameter-properties https://typescript-eslint.io/rules/parameter-properties
typescript/prefer-enum-initializers https://typescript-eslint.io/rules/prefer-enum-initializers
typescript/typedef https://typescript-eslint.io/rules/typedef

✨ = Implemented, 🚫 = No need to implement

Deprecated rules

✨: 4, 🚫: 0 / total: 6
Status Name Docs
typescript/no-empty-interface https://typescript-eslint.io/rules/no-empty-interface
typescript/no-loss-of-precision https://typescript-eslint.io/rules/no-loss-of-precision
typescript/no-type-alias https://typescript-eslint.io/rules/no-type-alias
typescript/no-var-requires https://typescript-eslint.io/rules/no-var-requires
typescript/prefer-ts-expect-error https://typescript-eslint.io/rules/prefer-ts-expect-error
typescript/sort-type-constituents https://typescript-eslint.io/rules/sort-type-constituents

✨ = Implemented, 🚫 = No need to implement

Boshen avatar Jan 26 '24 08:01 Boshen

Will type checking rules be considered for implementation at any point in time?

alfaproject avatar Jan 26 '24 09:01 alfaproject

Have checked typescript/member-ordering: not working yet. Just for status

Version: 0.2.6

alxpsr avatar Jan 27 '24 06:01 alxpsr

I looked into typescript/no-confusing-non-null-assertion, but I am not able to run the test. The test code does not seem to be valid JavaScript? Is oxc maybe validating the test's JS code while typescript-eslint is not?

  × Cannot assign to this expression
   ╭─[no_confusing_non_null_assertion.tsx:1:2]
 1 │ (a + b!) = c;
   ·  ──────
   ╰────

happy-turtle avatar Feb 08 '24 09:02 happy-turtle

I looked into typescript/no-confusing-non-null-assertion, but I am not able to run the test. The test code does not seem to be valid JavaScript? Is oxc maybe validating the test's JS code while typescript-eslint is not?

  × Cannot assign to this expression
   ╭─[no_confusing_non_null_assertion.tsx:1:2]
 1 │ (a + b!) = c;
   ·  ──────
   ╰────

Just comment out the tests that raise an error.

Boshen avatar Feb 08 '24 09:02 Boshen

Am I missing something or is the await-thenable rule missing from the list?

todor-a avatar Feb 28 '24 08:02 todor-a

Am I missing something or is the await-thenable rule missing form the list?

It seems like we excluded all type checking rules from the recommended-type-checked list.

Boshen avatar Feb 28 '24 08:02 Boshen

@Boshen Are there plans to eventually support type checking rules?

dsmyda-ab avatar Apr 04 '24 17:04 dsmyda-ab

@Boshen Are there plans to eventually support type checking rules?

see https://github.com/oxc-project/oxc/issues/3105

armano2 avatar Jul 14 '24 13:07 armano2

Warning

This comment is maintained by CI. Do not edit this comment directly. To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules

This is tracking issue for @typescript-eslint/eslint-plugin.

There are 67(+ 24 deprecated) rules.

  • 9/39 recommended rules are remaining as TODO
  • 18/28 not recommended rules are remaining as TODO

To get started, run the following command:

just new-typescript-rule <RULE_NAME>

Then register the rule in crates/oxc_linter/src/rules.rs and also declare_all_lint_rules at the bottom.

Recommended rules

✨: 30, 🚫: 0 / total: 39 Status Name Docs ✨ typescript/adjacent-overload-signatures https://typescript-eslint.io/rules/adjacent-overload-signatures ✨ typescript/array-type https://typescript-eslint.io/rules/array-type ✨ typescript/ban-tslint-comment https://typescript-eslint.io/rules/ban-tslint-comment ✨ typescript/ban-types https://typescript-eslint.io/rules/ban-types typescript/class-literal-property-style https://typescript-eslint.io/rules/class-literal-property-style typescript/consistent-generic-constructors https://typescript-eslint.io/rules/consistent-generic-constructors ✨ typescript/consistent-indexed-object-style https://typescript-eslint.io/rules/consistent-indexed-object-style typescript/consistent-type-assertions https://typescript-eslint.io/rules/consistent-type-assertions ✨ typescript/consistent-type-definitions https://typescript-eslint.io/rules/consistent-type-definitions ✨ typescript/no-array-constructor https://typescript-eslint.io/rules/no-array-constructor ✨ typescript/no-confusing-non-null-assertion https://typescript-eslint.io/rules/no-confusing-non-null-assertion ✨ typescript/no-duplicate-enum-values https://typescript-eslint.io/rules/no-duplicate-enum-values ✨ typescript/no-dynamic-delete https://typescript-eslint.io/rules/no-dynamic-delete ✨ typescript/no-empty-function https://typescript-eslint.io/rules/no-empty-function ✨ typescript/no-empty-interface https://typescript-eslint.io/rules/no-empty-interface ✨ typescript/no-explicit-any https://typescript-eslint.io/rules/no-explicit-any ✨ typescript/no-extra-non-null-assertion https://typescript-eslint.io/rules/no-extra-non-null-assertion typescript/no-extraneous-class https://typescript-eslint.io/rules/no-extraneous-class typescript/no-inferrable-types https://typescript-eslint.io/rules/no-inferrable-types typescript/no-invalid-void-type https://typescript-eslint.io/rules/no-invalid-void-type ✨ typescript/no-loss-of-precision https://typescript-eslint.io/rules/no-loss-of-precision ✨ typescript/no-misused-new https://typescript-eslint.io/rules/no-misused-new ✨ typescript/no-namespace https://typescript-eslint.io/rules/no-namespace ✨ typescript/no-non-null-asserted-nullish-coalescing https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing ✨ typescript/no-non-null-asserted-optional-chain https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain ✨ typescript/no-non-null-assertion https://typescript-eslint.io/rules/no-non-null-assertion ✨ typescript/no-this-alias https://typescript-eslint.io/rules/no-this-alias ✨ typescript/no-unnecessary-type-constraint https://typescript-eslint.io/rules/no-unnecessary-type-constraint ✨ typescript/no-unsafe-declaration-merging https://typescript-eslint.io/rules/no-unsafe-declaration-merging typescript/no-unused-vars https://typescript-eslint.io/rules/no-unused-vars ✨ typescript/no-useless-constructor https://typescript-eslint.io/rules/no-useless-constructor ✨ typescript/no-var-requires https://typescript-eslint.io/rules/no-var-requires ✨ typescript/prefer-as-const https://typescript-eslint.io/rules/prefer-as-const ✨ typescript/prefer-for-of https://typescript-eslint.io/rules/prefer-for-of ✨ typescript/prefer-function-type https://typescript-eslint.io/rules/prefer-function-type ✨ typescript/prefer-literal-enum-member https://typescript-eslint.io/rules/prefer-literal-enum-member typescript/prefer-namespace-keyword https://typescript-eslint.io/rules/prefer-namespace-keyword ✨ typescript/triple-slash-reference https://typescript-eslint.io/rules/triple-slash-reference typescript/unified-signatures https://typescript-eslint.io/rules/unified-signatures ✨ = Implemented, 🚫 = Not supported

Not recommended rules

✨: 10, 🚫: 0 / total: 28 Status Name Docs ✨ typescript/ban-ts-comment https://typescript-eslint.io/rules/ban-ts-comment typescript/class-methods-use-this https://typescript-eslint.io/rules/class-methods-use-this ✨ typescript/consistent-type-imports https://typescript-eslint.io/rules/consistent-type-imports ✨ typescript/default-param-last https://typescript-eslint.io/rules/default-param-last ✨ typescript/explicit-function-return-type https://typescript-eslint.io/rules/explicit-function-return-type typescript/explicit-member-accessibility https://typescript-eslint.io/rules/explicit-member-accessibility typescript/explicit-module-boundary-types https://typescript-eslint.io/rules/explicit-module-boundary-types typescript/init-declarations https://typescript-eslint.io/rules/init-declarations ✨ typescript/max-params https://typescript-eslint.io/rules/max-params typescript/member-ordering https://typescript-eslint.io/rules/member-ordering typescript/method-signature-style https://typescript-eslint.io/rules/method-signature-style ✨ typescript/no-dupe-class-members https://typescript-eslint.io/rules/no-dupe-class-members typescript/no-empty-object-type https://typescript-eslint.io/rules/no-empty-object-type ✨ typescript/no-import-type-side-effects https://typescript-eslint.io/rules/no-import-type-side-effects typescript/no-invalid-this https://typescript-eslint.io/rules/no-invalid-this typescript/no-loop-func https://typescript-eslint.io/rules/no-loop-func typescript/no-magic-numbers https://typescript-eslint.io/rules/no-magic-numbers ✨ typescript/no-redeclare https://typescript-eslint.io/rules/no-redeclare typescript/no-require-imports https://typescript-eslint.io/rules/no-require-imports typescript/no-restricted-imports https://typescript-eslint.io/rules/no-restricted-imports typescript/no-shadow https://typescript-eslint.io/rules/no-shadow typescript/no-unnecessary-parameter-property-assignment https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment typescript/no-unused-expressions https://typescript-eslint.io/rules/no-unused-expressions typescript/no-use-before-define https://typescript-eslint.io/rules/no-use-before-define ✨ typescript/no-useless-empty-export https://typescript-eslint.io/rules/no-useless-empty-export typescript/parameter-properties https://typescript-eslint.io/rules/parameter-properties ✨ typescript/prefer-enum-initializers https://typescript-eslint.io/rules/prefer-enum-initializers typescript/typedef https://typescript-eslint.io/rules/typedef ✨ = Implemented, 🚫 = Not supported

Deprecated rules

✨: 1, 🚫: 0 / total: 24

Can we change command name here, it doesn't actually exist (it is ts instead of full typescript) @Boshen

TheJDen avatar Jul 18 '24 20:07 TheJDen