oxc-bot
62d45bf14e
release(oxlint): v0.9.10 ( #6340 )
...
## [0.9.10] - 2024-10-07
### Features
- f272137 editors/vscode: Clear diagnostics on file deletion (#6326 )
(dalaoshu)
- 1a5f293 editors/vscode: Update VSCode extention to use project's
language server (#6132 ) (dalaoshu)
- 376cc09 linter: Implement `no-throw-literal` (#6144 ) (dalaoshu)
- 5957214 linter: Allow fixing in files with source offsets (#6197 )
(camchenry)
- a089e19 linter: Eslint/no-else-return (#4305 ) (yoho)
- 183739f linter: Implement prefer-await-to-callbacks (#6153 ) (dalaoshu)
- ae539af linter: Implement no-return-assign (#6108 ) (Radu Baston)
### Bug Fixes
- 9e9808b linter: Fix regression when parsing ts in vue files (#6336 )
(Boshen)
- 93c6db6 linter: Improve docs and diagnostics message for
no-else-return (#6327 ) (DonIsaac)
- e0a3378 linter: Correct false positive in
`unicorn/prefer-string-replace-all` (#6263 ) (H11)
- ea28ee9 linter: Improve the fixer of `prefer-namespace-keyword`
(#6230 ) (dalaoshu)
- f6a3450 linter: Get correct source offsets for astro files (#6196 )
(camchenry)
- be0030c linter: Allow whitespace control characters in
`no-control-regex` (#6140 ) (camchenry)
- e7e8ead linter: False positive in `no-return-assign` (#6128 )
(DonIsaac)
### Performance
- ac0a82a linter: Reuse allocator when there are multiple source texts
(#6337 ) (Boshen)
- 50a0029 linter: Do not concat vec in `no-useless-length-check` (#6276 )
(camchenry)
### Documentation
- 7ca70dd linter: Add docs for `ContextHost` and `LintContext` (#6272 )
(camchenry)
- a949ecb linter: Improve docs for `eslint/getter-return` (#6229 )
(DonIsaac)
- 14ba263 linter: Improve docs for `eslint-plugin-import` rules (#6131 )
(dalaoshu)
### Refactor
- 642725c linter: Rename vars from `ast_node_id` to `node_id` (#6305 )
(overlookmotel)
- 8413175 linter: Move shared function from utils to rule (#6127 )
(dalaoshu)
- ba9c372 linter: Make jest/vitest rule mapping more clear (#6273 )
(camchenry)
- 82b8f21 linter: Add schemars and serde traits to AllowWarnDeny and
RuleCategories (#6119 ) (DonIsaac)
- ea908f7 linter: Consolidate file loading logic (#6130 ) (DonIsaac)
- db751f0 linter: Use regexp AST visitor in `no-control-regex` (#6129 )
(camchenry)
- 3aa7e42 linter: Use RegExp AST visitor for `no-hex-escape` (#6117 )
(camchenry)
- 9d5b44a linter: Use regex visitor in `no-regex-spaces` (#6063 )
(camchenry)
- 0d44cf7 linter: Use regex visitor in `no-useless-escape` (#6062 )
(camchenry)
- eeb8873 linter: Use regex visitor in `no-empty-character-class`
(#6058 ) (camchenry)
### Testing
- d883562 linter: Invalid `eslint/no-unused-vars` options (#6228 )
(DonIsaac)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-10-08 12:14:54 +08:00
Boshen
9e9808b429
fix(linter): fix regression when parsing ts in vue files ( #6336 )
2024-10-07 14:28:44 +00:00
DonIsaac
ea908f742d
refactor(linter): consolidate file loading logic ( #6130 )
...
# Human Description
Low on time, so this one is short.
- consolidate source file and partial loader logic into `loader` module. I have more plans for this.
- ~LSP no longer uses `VALID_EXTENSIONS`, so now `.d.ts` files (and the like) will be linted as well~ LSP does not respect `.gitignore` files, so this change was reverted.
# AI Description
## Refactor Loader and Partial Loader
This PR refactors the loader and partial loader functionality in the oxc_linter crate:
* Introduce a new `Loader` struct with methods for checking if a file can be loaded and loading file contents
* Move `partial_loader` module to `loader/partial_loader`
* Rename `JavaScriptSource` to `source.rs` and move it to the `loader` module
* Update `JavaScriptSource` to use `u32` for `start` offset instead of `usize`
* Refactor `IsolatedLintHandler` to use the new `Loader`
* Update imports and module references throughout the codebase
This change improves the organization of the loader-related code and provides a more unified interface for loading different file types.
2024-09-29 02:48:01 +00:00
oxc-bot
3ef248afbd
release(oxlint): v0.9.9 ( #6101 )
...
## [0.9.9] - 2024-09-27
### Bug Fixes
- bd8f786 linter: Rule and generic filters do not re-configure existing
rules (#6087 ) (DonIsaac)
- c5cdb4c linter: Disable all rules in a plugin when that plugin gets
turned off (#6086 ) (DonIsaac)
- 6c855af linter: Only write fix results if source code has changed
(#6096 ) (DonIsaac)
- 8759528 linter: Category filters not re-configuring already-enabled
rules (#6085 ) (DonIsaac)
- c2616f7 linter: Fix panic in fixer for `oxc/only-used-in-recursion`
(#6070 ) (camc314)
- 3da3845 linter: Malformed snippets in `eslint/for-direction` docs
(#6060 ) (DonIsaac)
- c047d42 linter: `no-useless-escape`: do not crash on backslash
character (#6048 ) (camchenry)
- 6f76ebe linter: Ignore invalid or partial disable directives (#6045 )
(camchenry)
- 09a24cd linter: Fix false positives for generics in
`no-unexpected-multiline` (#6039 ) (camchenry)
- d05fd20 linter: Newline in type parameters causing false positive in
`no-unexpected-multiline` (#6031 ) (DonIsaac)
- 01b9c4b npm/oxlint: Make bin/oxc_language_server an executable (#6066 )
(Boshen)
### Performance
- f8464a3 linter: `no-magic-numbers` remove redudant checks in
`is_array_index` (#6033 ) (Alexander S.)
- c16ae60 linter: `jest/prefer-hooks-in-order`: rewrite rule to allocate
less and iterate fewer times (#6030 ) (camchenry)
### Documentation
- a4fdf1b linter: Improve docs for promise rules (#6051 ) (dalaoshu)
- 21cdb78 linter: Fix incorrect "bad" example in
`only-used-in-recursion` (#6029 ) (Boshen)
### Refactor
- 1f92d61 linter: `jest/prefer-hooks-in-order`: improve diagnostic
messages (#6036 ) (camchenry)
### Testing
- 55949eb linter: Add `OxlintRules::override_rules` tests (#6081 )
(DonIsaac)
- 1a6923a linter: Add filter parsing test cases (#6080 ) (DonIsaac)
- 58d333a linter: Add more test cases for disable directives (#6047 )
(camchenry)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-27 14:41:55 +08:00
oxc-bot
539751cd13
release(oxlint): v0.9.8 ( #6025 )
...
## [0.9.8] - 2024-09-24
### Bug Fixes
- e3c8a12 linter: Fix panic in sort-keys (#6017 ) (Boshen)
- 4771492 linter: Fix `import/no_cycle` with `ignoreTypes` (#5995 )
(Boshen)
### Performance
- 5ae3f36 linter: `no-fallthrough`: Use string matching instead of Regex
for default comment pattern (#6008 ) (camchenry)
- 2b17003 linter, prettier, diagnostics: Use `FxHashMap` instead of
`std::collections::HashMap` (#5993 ) (camchenry)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-24 19:43:11 +08:00
oxc-bot
859227e457
release(oxlint): v0.9.7 ( #5988 )
...
## [0.9.7] - 2024-09-23
### Features
- d24985e linter: Add `oxc-security/api-keys` (#5906 ) (DonIsaac)
- f9b44c5 linter: Add unicode sets support to `no-useless-escape` rule
(#5974 ) (camchenry)
- 0f19848 linter: Implement `no-unexpected-multiline` rule (#5911 )
(camchenry)
- 16fe383 linter: Implement `no-extend-native` rule (#5867 ) (Cam
McHenry)
### Bug Fixes
- eed9ac7 linter: Include actual span size in `no-regex-spaces`
diagnostic (#5957 ) (camchenry)
- 40c89c2 linter: Move `promise/avoid-new` to style category (#5961 )
(DonIsaac)
### Performance
- 608d637 linter: Use `aho-corasick` instead of `regex` for string
matching in `jsx-a11y/img-redundant-alt` (#5892 ) (camchenry)
- 3148d4b linter: Check file path after checking node kind for
`nextjs/no-head-element` (#5868 ) (Cam McHenry)
### Refactor
- 0a5a4a9 linter: Use parsed patterns for `unicorn/no-hex-escape`
(#5985 ) (camchenry)
- 2cf2edd linter: Use parsed patterns in `no-empty-character-class` rule
(#5980 ) (camchenry)
- a9a8e2a linter: Use regex parser in `eslint/no-regex-spaces` (#5952 )
(camchenry)
- 05f592b linter: Use parsed patterns in
`unicorn/prefer-string-starts-ends-with` (#5949 ) (camchenry)
- 3273b64 linter: Use parsed patterns for
`unicorn/prefer-string-replace-all` rule (#5943 ) (camchenry)
- ba7b01f linter: Add `LinterBuilder` (#5714 ) (DonIsaac)
- db4f16a semantic: Call `with_trivias` before `build_with_jsdoc`
(#5875 ) (Boshen)
- 3d13c6d semantic: Impl `IntoIterator` for `&AstNodes` (#5873 )
(DonIsaac)
### Testing
- b681c9a linter: Import test cases for `no-empty-character-class`
(#5981 ) (camchenry)
- 767602b linter: Add regression test for #5227 (#5975 ) (camchenry)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-23 15:10:33 +08:00
DonIsaac
d24985ed51
feat(linter): add oxc-security/api-keys ( #5906 )
...
## What This PR does
Adds a new `oxc-security/api-key` rule that scans for hard-coded API keys.
It is broken up into "secret rules", where each one is responsible for finding a different kind of key. It is architecturally identical to how lint rules themselves. This PR also includes the first of these rules, for AWS access key IDs.
Logic and rules are based on [keyhunter](https://github.com/Donisaac/keyhunter ). I've licensed that repo under GNU GPLv3, but it's my code and I can do what I want with it 😈 (read: I'm fine with it being MIT for oxc).
This PR is a complete feature in its own right, but does not represent the end of this work. See https://github.com/oxc-project/backlog/issues/116 to track overall progress.
2024-09-22 22:39:56 +00:00
oxc-bot
65a17346cd
release(oxlint): v0.9.6 ( #5843 )
...
## [0.9.6] - 2024-09-18
### Features
- 3bf7b24 linter: Make `typescript/no-duplicate-enum-values` a
`correctness` rule (#5810 ) (DonIsaac)
- 7799c06 linter/react: Implement `no-danger-with-children` rule (#5420 )
(Cam McHenry)
### Bug Fixes
- f942485 linter: Remove all* remaining "Disallow <foo>" messages
(#5812 ) (DonIsaac)
- b5ad518 linter: Improve diagnostic messages for various lint rules
(#5808 ) (DonIsaac)
- 858f7af linter: Plugin prefix name for eslint-plugin-node (#5807 )
(DonIsaac)
- 737ba1d linter: Fix some cases on ```AssignmentExpression``` for
```unicorn/consistent-function-scoping``` (#5675 ) (Arian94)
- 148c7a8 linter: Replace bitwise AND (&) with logical AND (&&) in
explici… (#5780 ) (kaykdm)
- b4ed564 linter/no-unused-vars: Writes to members triggering false
positive (#5744 ) (Dunqing)
- e9c084a linter/no-unused-vars: False positive when a variable used as
a computed member property (#5722 ) (Dunqing)
### Performance
- 3725d5d linter: Make all rules share a diagnostics vec (#5806 )
(DonIsaac)
- e978567 linter: Shrink size of `DisableDirectives` (#5798 ) (DonIsaac)
- 1bfa515 linter: Remove redundant clone of diagnostics in context
(#5797 ) (DonIsaac)
- e413cad linter: Move shared context info to `ContextHost` (#5795 )
(DonIsaac)
### Refactor
- 6dd6f7c ast: Change `Comment` struct (#5783 ) (Boshen)
- 7caae5b codegen: Add `GetSpan` requirement to `Gen` trait (#5772 )
(Boshen)
- 026ee6a linter: Decouple module resolution from import plugin (#5829 )
(dalaoshu)
- 50834bc linter: Move `override_rule` to `OxlintRules` (#5708 )
(DonIsaac)
- a438743 linter: Move `OxlintConfig` to `Oxlintrc` (#5707 ) (DonIsaac)
- f61e8b5 linter: Impl serde and schemars traits for `LintPlugins`
(#5706 ) (DonIsaac)
- 20a7861 linter: Shorten `Option` syntax (#5735 ) (overlookmotel)
- d8b612c oxc_linter: Prefer pass Enum instead of str `no_plus_plus`
(#5730 ) (IWANABETHATGUY)
- cc0408b semantic: S/AstNodeId/NodeId (#5740 ) (Boshen)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-18 12:02:09 +08:00
dalaoshu
026ee6a7e8
refactor(linter): decouple module resolution from import plugin ( #5829 )
...
closes #5815
2024-09-17 15:48:03 -04:00
oxc-bot
1dad9fa301
release(oxlint): v0.9.5 ( #5724 )
...
## [0.9.5] - 2024-09-12
### Features
- 4b04f65 linter: Implement `no-plusplus` rule (#5570 ) (Cam McHenry)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-12 16:59:25 +08:00
oxc-bot
d06bab6260
release(oxlint): v0.9.4 ( #5718 )
...
## [0.9.4] - 2024-09-12
### Features
- 9ca2593 linter: Eslint/sort-keys (#4845 ) (Na'aman Hirschfeld)
- 023c160 linter: Impl `Serialize` for `OxlintConfig` (#5594 ) (DonIsaac)
- 24d6a47 linter: Implement `eslint/no-invalid-regexp` (#5443 ) (Boshen)
### Bug Fixes
- af6d240 linter: Panic in consistent-function-scoping (#5613 )
(DonIsaac)
- 54e2e76 linter: `react/no_set_state` + `react/no_string_refs` rules
find correct parent (#5615 ) (overlookmotel)
- 3b87ac4 linter: Fix no_unused_vars panic when encountering unicode
(#5582 ) (Boshen)
### Performance
- bfe9186 linter: Use `cow_replace` instead of `replace` (#5643 )
(dalaoshu)
- e3ae5db linter: Use cow_to_ascii_lowercase/uppercase (#5637 ) (heygsc)
- a0370bf linter: Use cow_utils in no_script_url (#5633 ) (heygsc)
- 37e922c linter: `eslint/no_shadow_restricted_names` use
`run_on_symbol` (#5618 ) (overlookmotel)
- 0b7fccf linter: `react/no_set_state` + `react/no_string_refs` rules
reduce iteration over ancestors (#5616 ) (overlookmotel)
- 2c3f3fe linter: Make `jsx_key` slightly faster (#5585 ) (Boshen)
- cd81d12 linter: Add `should_run` to check path only once to
nextjs/no_typos (#5584 ) (Boshen)
- d18c896 rust: Use `cow_utils` instead (#5664 ) (dalaoshu)
### Documentation
- 64f9575 linter: Add plugin usage to example with configuration
(Boshen)
- 8c9179d linter: Fix typos (#5591 ) (Brian Donovan)
### Refactor
- 9e9435f linter: Add `LintFilter` (#5685 ) (DonIsaac)
- 4f70fe5 linter: Start internal/external split of LintPluginOptions
(#5660 ) (DonIsaac)
- 5ae9b48 linter: Start internal/external split of `OxlintOptions`
(#5659 ) (DonIsaac)
- c8bc6f0 linter: Use `std::ptr::eq` (#5649 ) (overlookmotel)
- a37c064 linter: Use `ContentHash` for `no_duplicate_case`; remove
`calculate_hash` (#5648 ) (Boshen)
- 0b3c1d7 linter: Start internal/external split of `OxlintConfig`
(#5595 ) (DonIsaac)
- 89bdf55 linter: Inline `Rule` trait default methods (#5619 )
(overlookmotel)
- afea8d5 linter: Rename `Rule` trait method params (#5617 )
(overlookmotel)
- 4e748b5 linter: Replace ast "compare by hash" to "compare by content"
(#5602 ) (dalaoshu)
- bac03e3 linter: Make fields of `LintServiceOptions` private (#5593 )
(DonIsaac)
- 2661d8b linter: Jest prefer_strict_equal (#5588 ) (IWANABETHATGUY)
- 20d0068 oxlint: Move cli-related exports to `cli` module (#5139 )
(DonIsaac)
- 067f9b5 semantic: Introduce `IsGlobalReference` trait (#5672 )
(Boshen)- 26d9235 Enable clippy::ref_as_ptr (#5577 ) (夕舞八弦)
### Testing
- 8e79f8d linter: Add class method test cases for `oxc/no-async-await`
(#5550 ) (DonIsaac)
- 3835189 linter: Add test case for no_unused_vars in 3b87ac4 (Boshen)
- 5f27551 linter: Add a passing case to no_undef (#5580 ) (Boshen)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-12 13:56:38 +08:00
DonIsaac
9e9435f03b
refactor(linter): add LintFilter ( #5685 )
...
Re-creation of #5329
2024-09-11 03:19:04 +00:00
DonIsaac
5ae9b48509
refactor(linter): start internal/external split of OxlintOptions ( #5659 )
...
re-creation of #5141
2024-09-10 03:19:04 +00:00
DonIsaac
20d006838e
refactor(oxlint): move cli-related exports to cli module ( #5139 )
2024-09-08 15:29:37 +00:00
Boshen
63a830e08c
chore(dprint): format toml files ( #5599 )
...
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-09-08 14:26:16 +08:00
DonIsaac
bac03e3b6c
refactor(linter): make fields of LintServiceOptions private ( #5593 )
...
Re-creation of #5326
2024-09-08 03:10:02 +00:00
oxc-bot
16009c09fd
release: oxlint v0.9.3 ( #5569 )
...
## [0.9.3] - 2024-09-07
### Features
- be3a432 linter: Implement typescript/no-magic-numbers (#4745 )
(Alexander S.)
- 09aa86d linter/eslint: Implement `sort-vars` rule (#5430 ) (Jelle van
der Waa)
- 2ec2f7d linter/eslint: Implement no-alert (#5535 ) (Edwin Lim)
- a786acf linter/import: Add no-dynamic-require rule (#5389 ) (Jelle van
der Waa)
- 4473779 linter/node: Implement no-exports-assign (#5370 ) (dalaoshu)
- b846432 linter/oxc: Add fixer for `erasing-op` (#5377 ) (camc314)
- aff2c71 linter/react: Implement `self-closing-comp` (#5415 ) (Jelle van
der Waa)
### Bug Fixes
- 0df1d9d ast, codegen, linter: Panics in fixers. (#5431 ) (rzvxa)
- cdd1a91 linter: Typescript/no-magic-numbers: remove double minus for
reporting negative bigint numbers (#5565 ) (Alexander S.)
- ff88c1f linter: Don't mark binding rest elements as unused in TS
function overloads (#5470 ) (Cam McHenry)
- 088733b linter: Handle loops in `getter-return` rule (#5517 ) (Cam
McHenry)
- 82c0a16 linter: `tree_shaking/no_side_effects_in_initialization`
handle JSX correctly (#5450 ) (overlookmotel)
- 6285a02 linter: `eslint/radix` rule correctly check for unbound
symbols (#5446 ) (overlookmotel)
- c8ab353 linter/tree-shaking: Align JSXMemberExpression's report
(#5548 ) (mysteryven)
- 5187f38 linter/tree-shaking: Detect the correct export symbol
resolution (#5467 ) (mysteryven)
### Performance
- 8170954 linter/react: Add should_run conditions for react rules
(#5402 ) (Jelle van der Waa)
### Documentation
- a540215 linter: Update docs `Examples` for linter rules (#5513 )
(dalaoshu)
- 7414190 linter: Update docs `Example` for linter rules (#5479 )
(heygsc)
### Refactor
- 0ac420d linter: Use meaningful names for diagnostic parameters (#5564 )
(Don Isaac)
- 81a394d linter: Deduplicate code in `oxc/no-async-await` (#5549 )
(DonIsaac)
- 979c16c linter: Reduce nested if statements in
eslint/no_this_before_super (#5485 ) (IWANABETHATGUY)
- 1d3e973 linter: Simplify `eslint/radix` rule (#5445 ) (overlookmotel)
- fdb8857 linter: Use "parsed pattern" in `no_div_regex` rule. (#5417 )
(rzvxa)
- 2ccbd93 linter: `react/jsx_no_undef` rule `get_member_ident` do not
return Option (#5411 ) (overlookmotel)
### Styling
- 2a43fa4 linter: Introduce the writing style from PR #5491 and reduce
the if nesting (#5512 ) (dalaoshu)- d8b29e7 Add trailing line breaks to
JSON files (#5544 ) (overlookmotel)- 694f032 Add trailing line breaks to
`package.json` files (#5542 ) (overlookmotel)
### Testing
- 340b535 linter/no-unused-vars: Arrow functions in tagged templates
(#5510 ) (Don Isaac)
- af69393 linter/no-useless-spread: Ensure spreads on identifiers pass
(#5561 ) (DonIsaac)- dc92489 Add trailing line breaks to conformance
fixtures (#5541 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-09-07 12:28:46 +08:00
overlookmotel
d8b29e752a
style: add trailing line breaks to JSON files ( #5544 )
...
For consistency with our `.editorconfig`.
2024-09-06 12:50:15 +00:00
dalaoshu
4473779074
feat(linter/node): implement no-exports-assign ( #5370 )
2024-09-03 07:53:14 -04:00
oxc-bot
953344dd42
Release oxlint v0.9.2 ( #5401 )
...
## [0.9.2] - 2024-09-02
### Features
- f81e8a1 linter: Add `oxc/no-async-endpoint-handlers` (#5364 )
(DonIsaac)
- b103737 linter: Improve no-accumulating-spread (#5302 ) (camc314)
- 9c22ce9 linter: Add hyperlinks to diagnostic messages (#5318 )
(DonIsaac)
- 1967c67 linter/eslint: Implement no-new-func (#5360 ) (dalaoshu)
- b867e5f linter/eslint-plugin-promise: Implement catch-or-return
(#5121 ) (Jelle van der Waa)
- 8d781e7 linter/oxc: Differentiate between array/object in
`no-accumulating-spread` loop diagnostic (#5375 ) (camc314)
- db55444 linter/oxc: Add fixer for `double-comparisons` (#5378 )
(camc314)
- e5c755a linter/promise: Add `spec-only` rule (#5124 ) (Jelle van der
Waa)
- 4c0861f linter/unicorn: Add fixer for `prefer-type-error` (#5311 )
(camc314)
- 084c2d1 linter/vitest: Implement prefer-to-be-object (#5321 )
(dalaoshu)
### Bug Fixes
- 11b93af linter/unicorn: Consistent-function-scoping false positive on
assignment expression (#5312 ) (Arian94)
### Performance
- f052a6d linter: `react/jsx_no_undef` faster check for unbound
references (#5349 ) (overlookmotel)
- 05636b7 linter: Avoid unnecessary work in `jsx_a11y/anchor_is_valid`
rule (#5341 ) (overlookmotel)
### Refactor
- afb038e linter: `react/jsx_no_undef` use loop instead of recursion
(#5347 ) (overlookmotel)
- fe62687 linter: Simplify skipping JSX elements in
`unicorn/consistent_function_scoping` (#5351 ) (overlookmotel)
- 381d9fe linter: Shorten code in `react/jsx_no_useless_fragment`
(#5350 ) (overlookmotel)
- 83b9a82 linter: Fix indentation in
`nextjs/no_script_component_in_head` rule (#5338 ) (overlookmotel)
- 89f0188 linter: Improve docs for `react/jsx_no_target_blank` rule
(#5342 ) (overlookmotel)
- 57050ab linter: Shorten code in
`jsx_a11y/aria_activedescendant_has_tabindex` rule (#5340 )
(overlookmotel)
- ed31d67 linter/jest: Fix indentation in code comment (#5372 ) (camc314)
- 2499cb9 linter/oxc: Update rule docs for `erasing-op` (#5376 )
(camc314)
- 69493d2 linter/oxc: Improve diagnostic for `no-accumulating-spread` in
loops (#5374 ) (camc314)
- 024b585 linter/oxc: Improve code comment for `no-accumulating-spread`
(#5373 ) (camc314)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-09-02 20:30:22 +08:00
oxc-bot
53ff3493ef
Release oxlint v0.9.1 ( #5316 )
...
## [0.9.1] - 2024-08-29
### Features
- 6633972 linter: Add fixer for `no-empty` (#5276 ) (camc314)
- a58e448 linter/eslint: Add fixer to `no-var` (#5144 ) (camc314)
- a6e9769 linter/jsx-a11y: Add `label-has-associated-control` (#5163 )
(Billy Levin)
- c8e8532 linter/unicorn: Add fixer to `throw-new-error` (#5275 )
(camc314)
- 7ccde4b linter/unicorn: Add fixer to `prefer-date-now` (#5147 )
(camc314)
### Bug Fixes
- 76e86f8 linter: Eslint-plugin-unicorn prefer-spread wrong linter
suggestion on variables of type string (#5265 ) (Arian94)
- b39544e linter/jest: Fixer for `prefer-jest-mocked` creates invalid
LHS expressions (#5243 ) (camc314)
- 9953fa5 linter/no-null: Incorrect fixer for `NullLiteral` within
`ReturnStatement` (#5247 ) (Dunqing)
- 318479e linter/no-unused-vars: Mark the class/function in the new
expression as used (#5306 ) (magic-akari)
### Refactor
- fa1d460 linter: Clean up Fixer and Message (#5308 ) (DonIsaac)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-29 13:04:52 +08:00
oxc-bot
2a001a043c
Release oxlint v0.9.0 ( #5219 )
...
## [0.9.0] - 2024-08-26
- 5946748 linter: [**BREAKING**] Parse and display syntax errors for
regular expressions (#5214 ) (Boshen)
- b894d3b linter: [**BREAKING**] Make `no-unused-vars` correctness
(#5081 ) (DonIsaac)
### Features
- 1ce9630 linter/config: Implement FromIterator for LintPluginOptions
(#5102 ) (DonIsaac)
- 34bfaf6 linter/react: Add fixer to `jsx-props-no-spread-multi` (#5145 )
(camc314)
- 982bd6e linter/unicorn: Add fixer to `require-array-join-separator`
(#5152 ) (camc314)
- a6704bd linter/unicorn: Add fixer to `prefer-set-size` (#5149 )
(camc314)
- ac7edcc linter/unicorn: Add fixer to `prefer-array-some` (#5153 )
(camc314)
- 1d01aa3 linter/unicorn: Add partial fixer for `prefer-array-flat`
(#5143 ) (camc314)
- 22d57f9 linter/unicorn: Add fixer to `prefer-string-slice` (#5150 )
(Cameron)
- 2fe4415 linter/unicorn: Add fixer to `no-redundant-roles` (#5146 )
(Cameron)
- d35c6f5 linter/unicorn: Add fixer to `prefer-regexp-test` (#5151 )
(Cameron)
- 27db769 linter/unicorn: Add fixer to `text-encoding-identifier-case`
(#5154 ) (Cameron)
- f7958c4 linter/unicorn: Add prefer-structured-clone (#5095 ) (Jelle van
der Waa)
- 004ffa0 linter/vitest: Implement `prefer-each` (#5203 ) (dalaoshu)
### Bug Fixes
- aaaf26c linter: Error in fixer for prefer-to-have-length (#5197 )
(dalaoshu)
- 1f5b6b6 linter: Bug in fixer for prefer-to-have-length (#5164 )
(dalaoshu)
- 7eb052e linter: `no-hex-escape` fixer removing regex flags (#5137 )
(Cameron)
- 76c66b4 linter/max-lines: Point span to end of file for disable
directive to work (#5117 ) (Boshen)
- 8ff6f2c linter/no-unused-vars: Panic on UsingDeclarations (#5206 )
(DonIsaac)
- d29042e linter/no-unused-vars: Function expression in implicit arrow
function return (#5155 ) (DonIsaac)
- 36e4a28 linter/no-unused-vars: Panic in variable declarator usage
checks (#5160 ) (DonIsaac)
- ba62a71 linter/react: Fixed false positive with missing key inside
React.Children.toArray() for fragments (#5133 ) (Earl Chase)
- fd1031a linter/unicorn: Breaking fixer in case statements for
`no-null` (#5176 ) (DonIsaac)
- 7b86ed6 linter/unicorn: Handle type casts and parens in `no-null`
(#5175 ) (Don Isaac)
- b629e16 linter/unicorn: Improve diagnostic message for `no-null`
(#5172 ) (DonIsaac)
### Performance
- ce454cf Use simdutf8 to validate UTF-8 when reading files (#5196 )
(dalaoshu)
### Refactor
- 543cad6 codegen: Remove some pub APIs (Boshen)
- 0d3661a linter: Remove meaningless `span0` (#5209 ) (dalaoshu)
- 2a91ef1 linter: `eslint/no_redeclare` rule use `run_on_symbol` not
`run_once` (#5201 ) (overlookmotel)
- 33599b0 linter: Split options into multiple files (#5101 ) (DonIsaac)
- 7ab6152 linter/unicorn: Clean up `no-null` (#5174 ) (DonIsaac)
### Testing
- a877e5a linter/no-unused-vars: Ensure type annotations on property
accessors are considered used (#5183 ) (DonIsaac)
- 7886618 linter/unicorn: Add fixer tests for `no-null` (#5173 )
(DonIsaac)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-26 16:50:15 +08:00
DonIsaac
b894d3b33e
feat(linter)!: make no-unused-vars correctness ( #5081 )
...
closes #5080
2024-08-23 13:12:59 +00:00
oxc-bot
8ef85a43c0
Release oxlint v0.8.0 ( #5104 )
...
## [0.8.0] - 2024-08-23
- 5f4c9ab semantic: [**BREAKING**] Rename `SymbolTable::get_flag` to
`get_flags` (#5030 ) (overlookmotel)
- ce4d469 codegen: [**BREAKING**] Remove const generic `MINIFY` (#5001 )
(Boshen)
- b2ff2df parser: [**BREAKING**] Remove builder pattern from `Parser`
struct (#5000 ) (Boshen)
- f88970b ast: [**BREAKING**] Change order of fields in CallExpression
(#4859 ) (Burlin)
### Features
- 2292606 linter: Typescript-eslint/no-wrapper-object-types (#5022 )
(camc314)
- a0effab linter: Support more flexible config.globals values (#4990 )
(Don Isaac)
- cdbfcfb linter: Start import fixer for eslint/no-unused-vars (#4849 )
(DonIsaac)
- 915cb4d linter: Add dangerous fixer for oxc only used in recursion
(#4805 ) (camc314)
- 3f28c77 linter/eslint: Improve no-dupe-keys (#4943 ) (DonIsaac)
- e1582a5 linter/eslint: Improve no-duplicate-case rule (#4942 )
(DonIsaac)
- f1e4611 linter/eslint-plugin-vitest: Implement no-conditional-in-test
(#4971 ) (dalaoshu)
- 14bf5d5 linter/eslint-plugin-vitest: Implement
no-restricted-vi-methods (#4956 ) (dalaoshu)
- ed9a1c4 linter/eslint-plugin-vitest: Implement
require-local-test-context-for-concurrent-snapshots (#4951 ) (dalaoshu)
- 7859f58 linter/eslint-plugin-vitest: Implement no-conditional-tests
(#4955 ) (dalaoshu)
- 841174f linter/no-unused-vars: Delete non-root arrows, skip `await`
(#5083 ) (Don Isaac)
### Bug Fixes
- 86d0c0c linter: Change consistent-function-scoping to suspicious
(#5010 ) (DonIsaac)
- 7b99386 linter: Missing closing ticks in some example blocks (#4994 )
(DonIsaac)
- 9c64b12 linter: Improve no-zero-fractions rule for member expressions
and scientific notation (#4793 ) (Burlin)
- c43945c linter/consistent-function-scoping: Allow functions passed as
arguments (#5011 ) (Don Isaac)
- 9354779 linter/no-unused-vars: Give `argsIgnorePattern` the same
default behavior as `varsIgnorePattern` (#5018 ) (DonIsaac)
- 5a55dcf linter/no-unused-vars: `type` specifier not deleted for type
imports (#5029 ) (DonIsaac)
- 4081293 linter/no-unused-vars: Panic in fixer when removing
destructures (#4923 ) (Don Isaac)
- ddf83ff linter/react: Fixed false positive with missing key inside
React.Children.toArray() (#4945 ) (Earl Chase)
- 508644a linter/tree-shaking: Correct the calculation of `>>`, `<<` and
`>>>` (#4932 ) (mysteryven)
- e99836d linter/unicorn: Allow set spreading in no-useless-spread
(#4944 ) (Don Isaac)
- 5f8a7c2 oxlint: Rules in the configuration file are not being
correctly … (#4949 ) (dalaoshu)
### Documentation
- e331ca0 linter: Improve documentation for several rules (#4997 )
(DonIsaac)
- cd9f1cd linter/consistent-function-scoping: Improve rule documentation
(#5015 ) (DonIsaac)
### Refactor
- eca6fdb linter: Move plugin options into separate struct (#5100 )
(DonIsaac)
- 06f2d81 linter: Avoid unnecessary temp `Vec`s (#4963 ) (overlookmotel)
- 4cb8c37 linter: Move default_true to utils (#4947 ) (Don Isaac)
- ca70cc7 linter, mangler, parser, semantic, transformer, traverse,
wasm: Rename various `flag` vars to `flags` (#5028 ) (overlookmotel)
- 59d15c7 semantic: `root_unresolved_references` contain only
`ReferenceId` (#4959 ) (overlookmotel)
### Testing
- c21d735 linter/no-unused-vars: Add ignored destructuring test cases
(#4922 ) (Don Isaac)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-23 11:09:14 +08:00
oxc-bot
b3e189764f
Release oxlint v0.7.2 ( #4909 )
...
## [0.7.2] - 2024-08-15
### Features
- 97e38cd linter: Add fixer for unicorn/prefer-optional-catch-binding
(#4867 ) (heygsc)
- 93ae1c7 linter: Eslint-plugin-react jsx-props-no-spread-multi (#4866 )
(keita hino)
- 0a23610 linter: Add fixer for unicorn/prefer-array-flat-map (#4844 )
(heygsc)
- 13c7b1b linter/jsx-a11y: Add fixer for aria-unsupported-elements
(#4854 ) (DonIsaac)
- a6195a6 linter/jsx-a11y: Add fixer for anchor-has-content (#4852 )
(DonIsaac)
- 4d28d03 task/website: Support render `subschemas.all_of` (#4800 )
(mysteryven)
### Bug Fixes
- 21f5762 codegen: Minify large numbers (#4889 ) (Boshen)
- a08d7a7 linter/jsx-a11y: Reduce false negatives for html-has-lang
(#4855 ) (DonIsaac)
- a81ce3a linter/no-unused-vars: Do not delete function expressions when
fixing (#4848 ) (DonIsaac)
### Documentation
- 955a4b4 oxlint: Improve cli doc regarding fix and `-D all` (Boshen)
### Refactor
- 56f033c linter: Improve diagnostics for several jsx-a11y rules (#4853 )
(DonIsaac)
- c53c210 linter/no-unused-vars: Split fixer logic into multiple files
(#4847 ) (DonIsaac)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-15 14:56:34 +08:00
Boshen
955a4b4479
docs(oxlint): improve cli doc regarding fix and -D all
...
closes #3944
2024-08-12 14:58:12 +08:00
oxc-bot
972492cc4d
Release oxlint v0.7.1 ( #4835 )
...
## [0.7.1] - 2024-08-12
### Features
- 3d40528 linter: Add fix emoji to rules table and doc pages (#4715 )
(DonIsaac)
- d2734f3 linter: Start fixer for no-unused-vars (#4718 ) (DonIsaac)
- 070ae53 linter: Add fixer for unicorn prefer-string-replace-all
(#4801 ) (camc314)
- b3c3125 linter: Overhaul unicorn/no-useless-spread (#4791 ) (DonIsaac)
- 5992b75 linter: Implement `eslint-plugin-promise/no-return-in-finally,
prefer-await-to-then` rule (#4318 ) (Jelle van der Waa)
- b259f47 linter: Add fixer for unicorn/no-length-as-slice-end (#4780 )
(heygsc)
- abd83fa linter: Add fixer for jsx_ally/no_aria_hidden_on_focusable
(#4772 ) (heygsc)
- b20e335 linter: Add fixer for eslint/no-eq-null (#4758 ) (heygsc)
- 2f6c3b9 linter: Add fixer for eslint/no-compare-neg-zero (#4748 )
(heygsc)
- eaddc8f linter: Add fixer for eslint/func_names (#4714 ) (DonIsaac)
- 80557a9 linter: Add fixer for eslint/for-direction (#4679 ) (heygsc)
- c3c5766 linter/eslint-plugin-promise: Implement valid-params (#4598 )
(Jelle van der Waa)
- c509a21 linter/eslint-plugin-vitest: Implement prefer-to-be-falsy
(#4770 ) (dalaoshu)
- 41f861f linter/eslint-plugin-vitest: Implement prefer-to-be-truthy
(#4755 ) (dalaoshu)
- cc922f4 vscode: Provide config's schema to oxlint config files (#4826 )
(Don Isaac)
- f629514 website: Auto-generate rule docs pages (#4640 ) (DonIsaac)
### Bug Fixes
- b22ed45 linter: Improve prefer_namespace_keyword rule (#4751 ) (Burlin)
- db68a6c linter: Fixer for eslint/for-direction (#4727 ) (heygsc)
- 6273994 linter: Block in eslint/no_cond_assign (#4721 ) (heygsc)
- b9d6aa5 linter: Fix false positives in no-confusing-non-null-assertion
(#4665 ) (Renée)
- cbf08d2 linter: Skip no-multi-str on jsx attributes (#4666 ) (heygsc)
- a6f9f96 linter: No unused errors should be warnings (Boshen)
- 7345bc9 linter/func-names: Handle ts accessibility when reporting
missing names (#4713 ) (DonIsaac)
### Performance
- d191823 linter: Optmize allocations in jest fn parsing (#4787 ) (lucab)
- e3abdfa linter: Reduce String allocations and clones (#4673 )
(DonIsaac)
### Documentation
- 4b7dfd6 linter: Correct docs for no-unused-vars (#4716 ) (Don Isaac)
### Refactor
- 096ac7b linter: Clean up jsx-a11y/anchor-is-valid (#4831 ) (DonIsaac)
- 15a0fd4 linter: Use Option to reduce nested level in
`eslint/getter-return` (#4814 ) (IWANABETHATGUY)
- 63f274c linter: Simplify NoObjCalls resolution logic (#4765 ) (lucab)
- 6708680 linter: Replace Windows-style line breaks with Unix-style in
test fixture (#4768 ) (overlookmotel)
- e285903 linter: Clean up eslint/func_names (#4710 ) (DonIsaac)
### Testing
- 8f2a566 linter: Ensure rule docs have valid syntax (#4644 ) (DonIsaac)
- 4dd29db linter: Add fixer test for unicorn/no-zero-fractions (#4783 )
(heygsc)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-12 13:36:37 +08:00
oxc-bot
3ac02fd838
Release oxlint v0.7.0 ( #4657 )
...
## [0.7.0] - 2024-08-05
- 85a7cea semantic: [**BREAKING**] Remove name from `reference` (#4329 )
(Dunqing)
### Features
- aaee07e ast: Add `AstKind::AssignmentTargetPattern`,
`AstKind::ArrayAssignmentTarget` and `AstKind::ObjectAssignmentTarget`
(#4456 ) (Dunqing)
- 9df7b56 jsx-a11y/no-autofocus: Implement fixer support (#4171 ) (Jelle
van der Waa)
- b87bf70 linter: Add fix capabilties to existing lint rules (#4560 )
(DonIsaac)
- ddd8b27 linter: Support conditional fix capabilities (#4559 )
(DonIsaac)
- b952942 linter: Add eslint/no-unused-vars (⭐ attempt 3.2) (#4445 )
(DonIsaac)
- 6543958 linter: Add auto-fix metadata to RuleMeta (#4557 ) (Don Isaac)
- 85e8418 linter: Add react/jsx-curly-brace-presence (#3949 ) (Don Isaac)
- 4c4da56 linter: Add typescript-eslint/prefer-keyword-namespce (#4438 )
(Aza Walker)
- d8c2a83 linter: Eslint-plugin-vitest/no-import-node-test (#4440 )
(cinchen)
- e3b0c40 linter: Eslint-plugin-vitest/no-identical-title (#4422 )
(cinchen)
- c936782 linter: Eslint-plugin-vitest/no-conditional-expect (#4425 )
(cinchen)
- 27fdd69 linter: Eslint-plugin-vitest/no-commented-out-tests (#4424 )
(cinchen)
- 51f5025 linter: Add fixer for unicorn/prefer-string-starts-ends-with
(#4378 ) (DonIsaac)
- 3c0c709 linter: Add typescript-eslint/no-extraneous-class (#4357 )
(Jaden Rodriguez)
- 7afa1f0 linter: Support suggestions and dangerous fixes (#4223 )
(DonIsaac)
- acc5729 linter: Eslint-plugin-vitest/expect-expect (#4299 ) (cinchen)
- 2213f93 linter: Eslint-plugin-vitest/no-alias-methods (#4301 )
(cinchen)
- c296bc3 linter/eslint: Implement func-names (#4618 ) (Alexander S.)
- e116ae0 linter/eslint: Implement fixer for prefer-numeric-literals
(#4591 ) (Jelle van der Waa)
- eaf834f linter/eslint: Implement prefer-numeric-literals (#4109 )
(Jelle van der Waa)
- db2fd70 linter/eslint-plugin-promise: Implement
no-webpack-loader-syntax (#4331 ) (Jelle van der Waa)
- 5f1e070 linter/eslint-plugin-unicorn: Add fixer for prefer-code-point
(#4353 ) (Jelle van der Waa)
- ed49e16 linter/eslint-plugin-unicorn: Implement fixer for
prefer-dom-node-append (#4306 ) (Jelle van der Waa)
- e2b15ac linter/react: Implement react-jsx-boolean-value (#4613 ) (Jelle
van der Waa)
- 68efcd4 linter/react-perf: Handle new objects and arrays in prop
assignment patterns (#4396 ) (DonIsaac)
### Bug Fixes
- 368112c ast: Remove `#[visit(ignore)]` from
`ExportDefaultDeclarationKind`'s `TSInterfaceDeclaration` (#4497 )
(Dunqing)
- d384f60 ci: Remove unused(?) .html file (#4545 ) (Yuji Sugiura)
- 06aec77 linter: Invalid binary expression with overflow (#4647 )
(DonIsaac)
- b2da22b linter: Invalid tags in rule docs (#4646 ) (DonIsaac)
- 94440ad linter: Panic on invalid lang in `a11y/lang`. (#4630 ) (rzvxa)
- e0b03f8 linter: Improve the boundary for eslint/for-direction (#4590 )
(heygsc)
- 70b8cfa linter: Missing return in no-obj-calls recursion (#4594 )
(DonIsaac)
- fe1356d linter: Change no-unused-vars to nursery (#4588 ) (DonIsaac)
- 72337b1 linter: Change typescript-eslint/no-namespace to restriction
(#4539 ) (Don Isaac)
- 732f4e2 linter: Fix `oxlint` allocator cfg (#4527 ) (overlookmotel)
- 289dc39 linter: Overflow in no-obj-calls (#4397 ) (DonIsaac)
- a664715 linter/eslint: Fix invalid regexp in no_regex_spaces test
(#4605 ) (Yuji Sugiura)
- 74fa75a linter/eslint: Drop quotes around max-params lint warning
(#4608 ) (Jelle van der Waa)
- 9fcd9ae linter/eslint: Fix invalid regexp in no_control_regex test
(#4544 ) (leaysgur)
- ac08de8 linter/react_perf: Allow new objects, array, fns, etc in top
scope (#4395 ) (DonIsaac)
- 0fba738 npm: SyntaxError caused by optional chaining in low version
node (#4650 ) (heygsc)
- 73d2558 oxlint: Fix oxlint failed to build due to missing feature
(Boshen)
### Performance
- 6ff200d linter: Change react rules and utils to use `Cow` and
`CompactStr` instead of `String` (#4603 ) (DonIsaac)
- f259df0 linter: Make img-redundant-alt only build a regex once (#4604 )
(DonIsaac)
- 7585e16 linter: Remove allocations for string comparisons (#4570 )
(DonIsaac)
- b60bdf1 linter: `no_shadow_restricted_names` only look up name in
hashmap once (#4472 ) (overlookmotel)
- 81384f5 linter: Avoid unnecessary work in `nextjs:no_duplicate_head`
rule (#4465 ) (overlookmotel)
- f7da22d linter: Disable lint rules by file type (#4380 ) (DonIsaac)
- 348c1ad semantic: Remove `span` field from `Reference` (#4464 )
(overlookmotel)
- 6a9f4db semantic: Reduce storage size for symbol redeclarations
(#4463 ) (overlookmotel)- a207923 Replace some CompactStr usages with
Cows (#4377 ) (DonIsaac)
### Refactor
- 7a75e0f linter: Use diagnostic codes in lint rules (#4349 ) (DonIsaac)
- ccb1835 semantic: Methods take `Span` as param, not `&Span` (#4470 )
(overlookmotel)
- 7cd53f3 semantic: Var hoisting (#4379 ) (Dunqing)
- c99b3eb syntax: Give `ScopeId` a niche (#4468 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-05 13:46:06 +08:00
DonIsaac
fe1356d3a0
fix(linter): change no-unused-vars to nursery ( #4588 )
...
Also sets `^_` as the default `varsIgnorePattern` unless a configuration object is provided.
2024-07-31 16:21:23 +00:00
DonIsaac
b952942993
feat(linter): add eslint/no-unused-vars ( ⭐ attempt 3.2) ( #4445 )
...
> Re-creation of #4427 due to rebasing issues. Original attempt: #642
-----
Third time's the charm?
Each time I attempt this rule, I find a bunch of bugs in `Semantic`, and I expect this attempt to be no different. Expect sidecar issues+PRs stemming from this PR here.
## Not Supported
These are cases supported in the original eslint rule, but that I'm intentionally deciding not to support
- export comments in scripts
```js
/* exported a */ var a;
```
- global comments
```js
/* global a */ var a;
```
## Behavior Changes
These are intentional deviations from the original rule's behavior:
- logical re-assignments are not considered usages
```js
// passes in eslint/no-unused-vars, fails in this implementation
let a = 0; a ||= 1;
let b = 0; b &&= 2;
let c = undefined; c ??= []
```
## Known Limitations
- Lint rules do not have babel or tsconfig information, meaning we can't determine if `React` imports are being used or not. The relevant tsconfig settings here are `jsx`, `jsxPragma`, and `jsxFragmentName`. To accommodate this, all imports to symbols named `React` or `h` are ignored in JSX files.
- References to symbols used in JSDoc `{@link}` tags are not created, so symbols that are only used in doc comments will be reported as unused. See: #4443
- `.vue` files are skipped completely, since variables can be used in templates in ways we cannot detect
> note: `.d.ts` files are skipped as well.
## Todo
- [x] Skip unused TS enum members on used enums
- [x] Skip unused parameters followed by used variables in object/array spreads
- [x] Re-assignments to array/object spreads do not respect `destructuredArrayIgnorePattern` (related to: https://github.com/oxc-project/oxc/issues/4435 )
- [x] #4493
- [x] References inside a nested scope are not considered usages (#4447 )
- [x] Port over typescript-eslint test cases _(wip, they've been copied and I'm slowly enabling them)_
- [x] Handle constructor properties
```ts
class Foo {
constructor(public a) {} // `a` should be allowed
}
```
- [x] Read references in sequence expressions (that are not in the last position) should not count as a usage
```js
let a = 0; let b = (a++, 0); console.log(b)
```
> Honestly, is anyone even writing code like this?
- [x] function overload signatures should not be reported
- [x] Named functions returned from other functions get incorrectly reported as unused (found by @camc314)
```js
function foo() {
return function bar() { }
}
Foo()()
```
- [x] false positive for TS modules within ambient modules
```ts
declare global {
// incorrectly marked as unused
namespace jest { }
}
```
## Blockers
- https://github.com/oxc-project/oxc/issues/4436
- https://github.com/oxc-project/oxc/issues/4437
- #4446
- #4447
- #4494
- #4495
## Non-Blocking Issues
- #4443
- #4475 (prevents checks on exported symbols from namespaces)
2024-07-31 03:22:16 +00:00
Don Isaac
72337b1063
fix(linter): change typescript-eslint/no-namespace to restriction ( #4539 )
...
This rule prevents the usage of typescript language features, which is
what the `restriction` category is intended to handle.
2024-07-30 16:29:27 -04:00
overlookmotel
732f4e2591
fix(linter): fix oxlint allocator cfg ( #4527 )
...
Fix 2 mistakes in the `#[cfg]` for custom allocators in `oxlint` CLI.
1. `#![cfg(not(miri))]` at top of file was disabling the entire module if running miri, rather than just disabling custom allocator.
2. If both `target_os = "windows"` and `not(target_env = "msvc")`, it would try to register both mimalloc and jemalloc as global allocator.
I am actually not sure if it's possible to compile for Windows without using MSVC, but it seems like a good idea not to assume.
2024-07-30 10:47:15 +00:00
overlookmotel
58c8612f4b
chore: format oxlint/Cargo.toml ( #4526 )
...
Just correct spacing in `oxlint/Cargo.toml`.
2024-07-29 07:43:57 +00:00
DonIsaac
7afa1f06c3
feat(linter): support suggestions and dangerous fixes ( #4223 )
2024-07-18 02:20:30 +00:00
github-actions[bot]
697c0efdef
Release oxlint v0.6.1 ( #4326 )
...
## [0.6.1] - 2024-07-17
### Features
- 83c2c62 codegen: Add option for choosing quotes; remove slow
`choose_quot` method (#4219 ) (Boshen)
- 1f8968a linter: Add eslint-plugin-promise rules: avoid-new,
no-new-statics, params-names (#4293 ) (Jelle van der Waa)
- a4dc56c linter: Add fixer for
unicorn/no_useless_promise_resolve_reject (#4244 ) (Burlin)
- 6fb808f linter: Add typescript-eslint/no-confusing-non-null-assertion
(#4224 ) (Jaden Rodriguez)
- 126b66c linter: Support eslint-plugin-vitest/valid-describe-callback
(#4185 ) (cinchen)
- 05b9a73 linter: Support eslint-plugin-vitest/valid-expect (#4183 )
(cinchen)
- 3e56b2b linter: Support eslint-plugin-vitest/no-test-prefixes (#4182 )
(cinchen)
- 3016f03 linter: Let fixer functions return a `None` fix (#4210 )
(DonIsaac)
- bbe6137 linter: Implement unicorn/no-useless-undefined (#4079 )
(Burlin)
- 20cdb1f semantic: Align class scope with typescript (#4195 ) (Dunqing)
### Bug Fixes
- 9df60da linter: Correct find first non whitespace logic in
@typescript-eslint/consistent-type-imports (#4198 ) (mysteryven)
- 67240dc linter: Not ignore adjacent spans when fixing (#4217 )
(mysteryven)
- dd07a54 linter: Global variables should always check the builtin
variables (#4209 ) (Jelle van der Waa)
- 351ecf2 semantic: Incorrect resolve references for `TSTypeQuery`
(#4310 ) (Dunqing)
- 1108f2a semantic: Resolve references to the incorrect symbol (#4280 )
(Dunqing)
### Performance
- 0fdc88b linter: Optimize no-dupe-keys (#4292 ) (lucab)
### Refactor
- 2c7bb9f ast: Pass final `ScopeFlags` into `visit_function` (#4283 )
(overlookmotel)
- aa22073 codegen: Improve print API (#4196 ) (Boshen)
- b5a8f3c linter: Use get_first_parameter_name from unicorn utils
(#4255 ) (Jelle van der Waa)
- 7089a3d linter: Split up fixer code into separate files (#4222 )
(DonIsaac)
- ace4f1f semantic: Update the order of `visit_function` and `Visit`
fields in the builder to be consistent (#4248 ) (Dunqing)
- 7f1addd semantic: Correct scope in CatchClause (#4192 ) (Dunqing)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-17 21:18:28 +08:00
Jelle van der Waa
1f8968a521
feat(linter): Add eslint-plugin-promise rules: avoid-new, no-new-statics, params-names ( #4293 )
...
This introduces the `eslint-plugin-promise` plugin and implements three
relatively simple rules.
Split off from https://github.com/oxc-project/oxc/pull/4252
2024-07-17 09:21:20 +08:00
Boshen
83bd40db4e
chore: turn off doctest for all [[bin]]
2024-07-14 16:55:19 +08:00
github-actions[bot]
4f26e51b74
Release oxlint v0.6.0 ( #4194 )
...
## [0.6.0] - 2024-07-11
- 5731e39 ast: [**BREAKING**] Store span details inside comment struct
(#4132 ) (Luca Bruno)
### Features
- fb549e1 linter: Add vitest/no-focused-tests rule (#4178 ) (mysteryven)
- 6c49007 linter: Add fixer for
@typescript-eslint/consistent-type-imports (#3984 ) (mysteryven)
- 278c3e9 linter: Add fixer for jsx-a11y/aria-props (#4176 ) (DonIsaac)
- 2188144 linter: Eslint-plugin-jest/prefer-hooks-in-order (#4052 )
(cinchen)
- cc58614 linter: Better schemas for allow/warn/deny (#4150 ) (DonIsaac)
- c5b4be0 linter: Add fixer for prefer-node-protocol (#4129 ) (DonIsaac)
- 7ec0c0b linter/eslint: Implement no-label-var (#4087 ) (Jelle van der
Waa)
### Bug Fixes
- ed4c54c eslint/radix: Detect yield Number.parseInt variant (#4110 )
(Jelle van der Waa)
- e9ad03b linter: Fixer for no-debugger creates incorrect code (#4184 )
(DonIsaac)
- bd69571 linter: Fix top level return panic in
eslint/array_callback_return (#4167 ) (Boshen)
- c8f5664 linter: Fix panic with unicode in
unicorn/prefer_dom_node_dataset (#4166 ) (Boshen)
- f2b3273 linter: Fix fixer panic in
typescript/consistent_indexed_object_style (#4165 ) (Boshen)
- 2334515 linter: Panic in `get_enclosing_function` (#4121 ) (DonIsaac)
- 1b91d40 linter: Incorrect fixer for `no-unused-labels` (#4123 ) (Don
Isaac)
- 1729249 linter: Incorrect fix in
`no-single-promise-in-promise-methods` rule; (#4094 ) (DonIsaac)
- cc7e893 linter/tree-shaking: Avoid recursive function stackoverflow
(#4191 ) (mysteryven)
- 28eeee0 parser: Fix asi error diagnostic pointing at invalid text
causing crash (#4163 ) (Boshen)
- 0f02608 semantic: Bind `TSImportEqualsDeclaration`s (#4100 ) (Don
Isaac)
### Performance
- ddfa343 diagnostic: Use `Cow<'static, str>` over `String` (#4175 )
(DonIsaac)
### Refactor
- 2687ebc react: Use find_binding helper for finding React binding
(#4108 ) (Jelle van der Waa)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-11 14:38:41 +08:00
github-actions[bot]
0c7f3eecc6
Release oxlint v0.5.3 ( #4082 )
...
## [0.5.3] - 2024-07-07
### Features
- 1681b11 linter: Eslint-plugin-jest/consistent-test-it (#4053 )
(cinchen)
- 6876490 linter: Add rule no-undefined (#4041 ) (jordan boyer)
- bf04dee linter: Implement unicorn/no-negation-in-equality-check
(#4034 ) (Nissim Chekroun)
- aa45604 linter/eslint: Implement no-multi-str (#4038 ) (Jelle van der
Waa)
### Bug Fixes
- 7b2dc3b linter: Fix panic in import/namespace (#4080 ) (Boshen)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-07 19:31:03 +08:00
github-actions[bot]
b66ad0b675
Release oxlint v0.6.0 ( #4029 )
...
## [0.6.0] - 2024-07-02
- c98d8aa ast: [**BREAKING**] Rename `visit_arrow_expression` to
`visit_arrow_function_expression`. (#3995 ) (rzvxa)
### Features
- dc6d45e ast,codegen: Add `TSParenthesizedType` and print type
parentheses correctly (#3979 ) (Boshen)
- b257d53 linter: Support report
`@typescript-eslint/consistent-type-imports` (#3895 ) (mysteryven)
- 2114475 linter: Implement @typescript-eslint/no-dynamic-delete (#3971 )
(kaykdm)
- 10a3c9a linter/eslint-plugin-react: Implement no-set-state (#3975 )
(Jelle van der Waa)
### Bug Fixes
- 432d6d9 linter: Find disabled directives using the message's `Span`.
(#4010 ) (rzvxa)
- dbbb6fc linter: Global variable check should always check builtin
variables (#3973 ) (Boshen)
### Performance
- 1eac3d2 semantic: Use `Atom<'a>` for `Reference`s (#3972 ) (Don Isaac)
### Refactor
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-02 22:07:52 +08:00
github-actions[bot]
21b964b214
Release oxlint v0.5.1 ( #3967 )
...
## [0.5.1] - 2024-06-29
### Features
- f64ad4b semantic: Make jsdoc building optional (turned off by default)
(#3955 ) (Boshen)
### Bug Fixes
- c26975a linter: Only show the filename for max-lines (#3966 ) (Boshen)
- 94329e4 linter: Handle useful but empty constructors in
no-useless-constructor (#3951 ) (DonIsaac)
- 6498a08 linter: No-useless-spread fixer with multiple spread elements
(#3950 ) (DonIsaac)
- 750cb43 oxlint: Gate custom allocators by feature flag (#3945 ) (Luca
Bruno)
### Refactor
- 1cca2a8 eslint: Convert with_labels to with_label where applicable
(#3946 ) (Jelle van der Waa)
- 2705df9 linter: Improve diagnostic labeling (#3960 ) (DonIsaac)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-06-29 17:01:56 +08:00
Luca Bruno
750cb43624
fix(oxlint): gate custom allocators by feature flag ( #3945 )
...
This tweaks the conditional compilation of custom allocators by wiring
the dedicated Cargo feature flag `allocator` to the source code. It
ensures that allocator gating is directly checking the relevant feature
instead of trying to infer it from the build profile.
2024-06-28 21:34:46 +08:00
github-actions[bot]
06e4ce4f5d
Release oxlint v0.5.0 ( #3940 )
...
## [0.5.0] - 2024-06-27
- 6796891 ast: [**BREAKING**] Rename all instances of `BigintLiteral` to
`BigIntLiteral`. (#3898 ) (rzvxa)
- ae09a97 ast: [**BREAKING**] Remove `Modifiers` from ts nodes (#3846 )
(Boshen)
- 1af5ed3 ast: [**BREAKING**] Replace `Modifiers` with `declare` and
`const` on `EnumDeclaration` (#3845 ) (Boshen)
- ee6ec4e ast: [**BREAKING**] Replace `Modifiers` with `declare` and
`abstract` on `Class` (#3841 ) (Boshen)
- 4456034 ast: [**BREAKING**] Add `IdentifierReference` to
`ExportSpecifier` (#3820 ) (Boshen)
- 0537d29 cfg: [**BREAKING**] Move control flow to its own crate.
(#3728 ) (rzvxa)
- 5c38a0f codegen: [**BREAKING**] New code gen API (#3740 ) (Boshen)
- 4bce59d semantic/cfg: [**BREAKING**] Re-export `petgraph` as
`control_flow::graph`. (#3722 ) (rzvxa)
### Features
- 3ae2628 linter: Change `no-import-assign` to correctness (#3928 )
(Boshen)
- a89d501 linter: Implement
@typescript-eslint/no-non-null-asserted-nulli… (#3850 ) (kaykdm)
- fc48cb4 linter: eslint-plugin-jest/prefer-jest-mocked (#3865 )
(cinchen)
- 63b98bd linter: Accept multiple fixes when fix code (#3842 )
(mysteryven)
- 328445b linter: Support `vitest/no-disabled-tests` (#3717 )
(mysteryven)
- 8c61f9c linter: Implement @typescript-eslint/no-non-null-assertion
(#3825 ) (kaykdm)
- 080ecbd linter: Add `no-fallthrough`. (#3673 ) (rzvxa)
- 9493fbe linter: Add `oxc/no-optional-chaining` rule (#3700 )
(mysteryven)
- 139adfe linter: Add `@typescript-eslint/no-import-type-side_effects`
(#3699 ) (mysteryven)
- 5f84500 linter/eslint-plugin-react: Implement prefer-es6-class (#3812 )
(Jelle van der Waa)
- fafe67c linter/import: Implement max-dependencies (#3814 ) (Jelle van
der Waa)
- d5f6aeb semantic: Check for illegal symbol modifiers (#3838 ) (Don
Isaac)
### Bug Fixes
- 4bd2c88 linter: Fix and promote `getter-return` to correctness.
(#3777 ) (rzvxa)
- 1190dee linter: False positives with setters in the `getter-return`
rule. (#3714 ) (rzvxa)
- de0690f linter: Do not run getter-return in typescript (#3693 )
(Boshen)
- cf71c23 linter: Edge case with infinite loops. (#3672 ) (rzvxa)
- 5902331 oxlint: Properly report error (#3889 ) (Luca Bruno)
- 99a40ce semantic: `export default foo` should have
`ExportLocalName::Default(NameSpan)` entry (#3823 ) (Boshen)
- abd6ac8 semantic/cfg: Discrete finalization path after `NewFunction`s.
(#3671 ) (rzvxa)
### Performance
- 4f7ff7e Do not pass `&Atom` to functions (#3818 ) (overlookmotel)
### Refactor
- 4d2b7f1 linter: `LintContext` can now only be constructed with a cfg
enabled semantic. (#3761 ) (rzvxa)
- 7302429 linter/prefer_number_properties: Remove the unused
`IdentifierName` check (#3822 ) (Boshen)
- d8ad321 semantic: Make control flow generation optional. (#3737 )
(rzvxa)
### Testing
- 887da40 linter: Enable `no-fallthrough` test with `disable-next-line`.
(#3766 ) (rzvxa)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-06-27 15:09:13 +08:00
Luca Bruno
5902331cac
fix(oxlint): properly report error ( #3889 )
...
This fixes an incorrect error formatting in the lint runner logic.
2024-06-25 01:16:56 +03:30
mysteryven
328445b4ca
feat(linter): support vitest/no-disabled-tests ( #3717 )
2024-06-24 15:16:32 +00:00
Boshen
051ceb6539
chore: improve some format by running cargo +nightly fmt
2024-06-19 00:48:30 +08:00
Boshen
1c7f19c868
chore(oxlint): remove unused code (format command) ( #3716 )
2024-06-17 12:16:21 +00:00
Boshen
982e6f08df
chore: make println and eprintln opt-in ( #3712 )
...
I noticed accidental `println` can be merged, which isn't really nice.
2024-06-17 10:40:34 +00:00
github-actions[bot]
6168969f94
Release oxlint v0.4.4 ( #3669 )
...
## [0.4.4] - 2024-06-14
### Features
- 8f5655d linter: Add eslint/no-useless-constructor (#3594 ) (Don Isaac)
- 29c78db linter: Implement
@typescript-eslint/explicit-function-return-type (#3455 ) (kaykdm)
- 21d3425 linter: Typescript-eslint no-useless-empty-export (#3605 )
(keita hino)
- 85c3b83 linter: Eslint-plugin-jest/max-nested-describes (#3585 )
(cinchen)
- f6d9ca6 linter: Add `eslint/sort-imports` rule (#3568 ) (Wang Wenzhe)
- 046ff3f linter/eslint: Add `no_unreachable` rule. (#3238 ) (rzvxa)
- e32ce00 linter/jsdoc: Implement require-param-name rule (#3636 ) (Yuji
Sugiura)
- 110661c linter/jsdoc: Implement require-param-description (#3621 )
(Yuji Sugiura)
- d6370f1 linter/jsdoc: Implement require-param-type rule (#3601 ) (Yuji
Sugiura)
- d9c5b33 semantic/cfg: Add `Condition` instruction. (#3567 ) (Ali
Rezvani)
- f2dfd66 semantic/cfg: Add iteration instructions. (#3566 ) (rzvxa)
### Bug Fixes
- f0b689d linter: Panic in jsdoc/require-param (#3590 ) (Don Isaac)
- e148a32 semantic/cfg: Correct unreachability propagation in
try-finally. (#3667 ) (Ali Rezvani)
### Refactor
- 84304b4 linter: Add a `ctx.module_record()` method (#3637 ) (Boshen)
- f98f777 linter: Add rule fixer (#3589 ) (Don Isaac)
- fa11644 linter: Pass `Rc` by value (#3587 ) (overlookmotel)
- f702fb9 semantic/cfg: Cleanup control flow and it's builder. (#3650 )
(rzvxa)
- 5793ff1 transformer: Replace `&’a Trivias` with `Rc<Trivias>` (#3580 )
(Dunqing)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-06-14 15:05:26 +08:00
github-actions[bot]
8cbf937e84
Release oxlint v0.4.3 ( #3581 )
...
## [0.4.3] - 2024-06-07
### Features
- 1fb9d23 linter: Add fixer for no-useless-fallback-in-spread rule
(#3544 ) (Don Isaac)
- 6506d08 linter: Add fixer for no-single-promise-in-promise-methods
(#3531 ) (Don Isaac)
- daf559f linter: Eslint-plugin-jest/no-large-snapshot (#3436 ) (cinchen)
- 4c17bc6 linter: Eslint/no-constructor-return (#3321 ) (谭光志)
- 4a075cc linter/jsdoc: Implement require-param rule (#3554 ) (Yuji
Sugiura)
- 747500a linter/jsdoc: Implement require-returns-type rule (#3458 )
(Yuji Sugiura)
- 6b39654 linter/tree-shaking: Support options (#3504 ) (Wang Wenzhe)
- 0cdb45a oxc_codegen: Preserve annotate comment (#3465 )
(IWANABETHATGUY)
### Bug Fixes
- b188778 linter/eslint: Fix `require-await` false positives in
`ForOfStatement`. (#3457 ) (rzvxa)
- 350cd91 parser: Should parser error when function declaration has no
name (#3461 ) (Dunqing)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-06-07 16:39:51 +08:00