-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(lint): move lint rule docs to cli/tools/lint/docs/ #27293
Changes from all commits
3ede88b
808c9fc
721c564
99da9cc
a5cc52d
32bd869
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
{ | ||
"$schema": "http://json-schema.org/draft-07/schema#", | ||
"enum": [ | ||
"adjacent-overload-signatures", | ||
"ban-ts-comment", | ||
"ban-types", | ||
"ban-unknown-rule-code", | ||
"ban-untagged-ignore", | ||
"ban-untagged-todo", | ||
"ban-unused-ignore", | ||
|
||
"camelcase", | ||
"constructor-super", | ||
"default-param-last", | ||
"eqeqeq", | ||
"explicit-function-return-type", | ||
"explicit-module-boundary-types", | ||
"for-direction", | ||
"fresh-handler-export", | ||
"fresh-server-event-handlers", | ||
"getter-return", | ||
"guard-for-in", | ||
"no-array-constructor", | ||
"no-async-promise-executor", | ||
"no-await-in-loop", | ||
"no-await-in-sync-fn", | ||
"no-boolean-literal-for-arguments", | ||
"no-case-declarations", | ||
"no-class-assign", | ||
"no-compare-neg-zero", | ||
"no-cond-assign", | ||
"no-console", | ||
"no-const-assign", | ||
"no-constant-condition", | ||
"no-control-regex", | ||
"no-debugger", | ||
"no-delete-var", | ||
"no-deprecated-deno-api", | ||
"no-dupe-args", | ||
"no-dupe-class-members", | ||
"no-dupe-else-if", | ||
"no-dupe-keys", | ||
"no-duplicate-case", | ||
"no-empty", | ||
"no-empty-character-class", | ||
"no-empty-enum", | ||
"no-empty-interface", | ||
"no-empty-pattern", | ||
"no-eval", | ||
"no-ex-assign", | ||
"no-explicit-any", | ||
"no-external-import", | ||
"no-extra-boolean-cast", | ||
"no-extra-non-null-assertion", | ||
"no-fallthrough", | ||
"no-func-assign", | ||
"no-global-assign", | ||
"no-implicit-declare-namespace-export", | ||
"no-import-assertions", | ||
"no-import-assign", | ||
"no-inferrable-types", | ||
"no-inner-declarations", | ||
"no-invalid-regexp", | ||
"no-invalid-triple-slash-reference", | ||
"no-irregular-whitespace", | ||
"no-misused-new", | ||
"no-namespace", | ||
"no-new-symbol", | ||
"no-node-globals", | ||
"no-non-null-asserted-optional-chain", | ||
"no-non-null-assertion", | ||
"no-obj-calls", | ||
"no-octal", | ||
"no-process-globals", | ||
"no-prototype-builtins", | ||
"no-redeclare", | ||
"no-regex-spaces", | ||
"no-self-assign", | ||
"no-self-compare", | ||
"no-setter-return", | ||
"no-shadow-restricted-names", | ||
"no-sloppy-imports", | ||
"no-slow-types", | ||
"no-sparse-arrays", | ||
"no-sync-fn-in-async-fn", | ||
"no-this-alias", | ||
"no-this-before-super", | ||
"no-throw-literal", | ||
"no-top-level-await", | ||
"no-undef", | ||
"no-unreachable", | ||
"no-unsafe-finally", | ||
"no-unsafe-negation", | ||
"no-unused-labels", | ||
"no-unused-vars", | ||
"no-var", | ||
"no-window", | ||
"no-window-prefix", | ||
"no-with", | ||
"prefer-as-const", | ||
"prefer-ascii", | ||
"prefer-const", | ||
"prefer-namespace-keyword", | ||
"prefer-primordials", | ||
"require-await", | ||
"require-yield", | ||
"single-var-declarator", | ||
"triple-slash-reference", | ||
"use-isnan", | ||
"valid-typeof", | ||
"verbatim-module-syntax" | ||
] | ||
} |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not yet automated and tested, waiting on #27162 to land so appropriate APIs are available. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"$schema": "http://json-schema.org/draft-07/schema#", | ||
"enum": ["fresh", "jsr", "jsx", "react", "recommended"] | ||
} |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think we should store these docs here. They're docs are for lint rules that live in deno_lint, so they should either live there or we should move all these docs to the deno-docs repo. Edit: It probably makes most sense to move these to deno-docs because these are for deno-docs. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
Requires overload signatures to be adjacent to each other. | ||
|
||
Overloaded signatures which are not next to each other can lead to code which is | ||
hard to read and maintain. | ||
|
||
### Invalid: | ||
|
||
(`bar` is declared in-between `foo` overloads) | ||
|
||
```typescript | ||
type FooType = { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
bar(): void; | ||
foo(sn: string | number): void; | ||
}; | ||
``` | ||
|
||
```typescript | ||
interface FooInterface { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
bar(): void; | ||
foo(sn: string | number): void; | ||
} | ||
``` | ||
|
||
```typescript | ||
class FooClass { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
bar(): void {} | ||
foo(sn: string | number): void {} | ||
} | ||
``` | ||
|
||
```typescript | ||
export function foo(s: string): void; | ||
export function foo(n: number): void; | ||
export function bar(): void {} | ||
export function foo(sn: string | number): void {} | ||
``` | ||
|
||
### Valid: | ||
|
||
(`bar` is declared after `foo`) | ||
|
||
```typescript | ||
type FooType = { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
foo(sn: string | number): void; | ||
bar(): void; | ||
}; | ||
``` | ||
|
||
```typescript | ||
interface FooInterface { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
foo(sn: string | number): void; | ||
bar(): void; | ||
} | ||
``` | ||
|
||
```typescript | ||
class FooClass { | ||
foo(s: string): void; | ||
foo(n: number): void; | ||
foo(sn: string | number): void {} | ||
bar(): void {} | ||
} | ||
``` | ||
|
||
```typescript | ||
export function foo(s: string): void; | ||
export function foo(n: number): void; | ||
export function foo(sn: string | number): void {} | ||
export function bar(): void {} | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need this? We can add a unit test that does this linting in tools/lint?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not until #27245 lands, there's no way to get all available rules right now and print them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can use
LintRuleProvider
and instead write a unit test?deno/cli/tools/lint/rules/mod.rs
Line 146 in d99b2d6