Commit graph

2143 commits

Author SHA1 Message Date
Ken-HH24
282771afc4
feat(linter): eslint-plugin-unicorn prefer-dom-node-text-content(style) (#1658)
Implement [prefer-dom-node-text-content](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-dom-node-text-content.md) for #684 .
2023-12-13 12:19:00 +00:00
Dunqing
00806384ff
perf(linter/react): find class node by symbols in get_parent_es6_component (#1657)
This way we can get the class node faster. But I don't know if this is a
good way. In `eslint-plugin-react`, they get class node by scope. But
oxc cannot do the same way
2023-12-13 13:48:53 +08:00
Dunqing
864176a051
feat(transformer/react-jsx): returns ThisExpression when identifier is this (#1661) 2023-12-13 13:47:54 +08:00
Boshen
31600ac8de
Release oxlint and vscode extension v0.0.20 2023-12-13 13:37:06 +08:00
Boshen
425e318e9a
chore: update homepage links 2023-12-13 13:36:27 +08:00
Boshen
4ced3f949c
refactor(linter): separate out the category in the output of --rules 2023-12-13 13:23:52 +08:00
Boshen
ca009d5995
chore(linter): move prefer-array-flat to pedantic 2023-12-13 13:16:18 +08:00
IWANABETHATGUY
e63576d03c
feat(vscode): add a option to control oxc lint timing (#1659)
1. Closed https://github.com/oxc-project/oxc/issues/1653
2. Now you use `oxc-client.run` to control the lint timing.


[录屏 2023年12月12日
23时39分16秒.webm](https://github.com/oxc-project/oxc/assets/17974631/123326dc-6110-4f2e-9d48-ef1a3b0a4536)
2023-12-13 11:40:39 +08:00
Boshen
117d95f0ae
fix(linter): improve the span message for no-accumulating-spread 2023-12-12 16:28:37 +08:00
Wenzhe Wang
ea293c4e94
chore(ci): change to labeler-v5's style (#1656) 2023-12-12 12:35:43 +08:00
dependabot[bot]
5fa3b43d93
chore(deps): bump actions/labeler from 4 to 5 (#1652) 2023-12-11 14:33:48 +08:00
dependabot[bot]
a3b52fb548
chore(deps): bump the dependencies group with 7 updates (#1651) 2023-12-11 14:21:56 +08:00
Boshen
69c056be79
chore: remove crates/oxc_parser/README.md 2023-12-11 13:59:03 +08:00
Cameron
295822d7d4
feat(linter) eslint plugin unicorn: prefer array flat (#1650) 2023-12-10 23:19:30 +08:00
Cameron
ef740c3754
fix: improve span for no accumulating spread (#1644)
Closes #1643
2023-12-10 23:18:39 +08:00
Ken-HH24
e331cc2677
feat(transformer): duplicate keys (#1649) 2023-12-10 18:07:32 +08:00
Cameron
65c07728fc
fix: remove escapes in no array reduce test cases (#1647) 2023-12-10 09:42:40 +00:00
Cameron
a09060be33
fix: remove escapes in prefer regexp test test cases (#1645) 2023-12-10 09:37:41 +00:00
Cameron
9bea2780d9
feat(linter) eslint-plugin-react: react-in-jsx-scope (#1025)
Co-authored-by: wenzhe <mysteryven@gmail.com>
2023-12-10 17:08:43 +08:00
Ken-HH24
b425b73087
feat(linter): eslint-plugin-unicorn prefer-modern-dom-apis(style) (#1646) 2023-12-10 16:10:59 +08:00
Dunqing
0c19991471
feat(prettier): print CallExpression arguments correctly (#1631) 2023-12-10 15:59:13 +08:00
Boshen
e2d5763d22
fix(vscode): fix the broken package path 2023-12-08 21:19:00 +08:00
Boshen
19e9f6a3a3
chore(vscode): use a smaller file for icon 2023-12-08 21:05:56 +08:00
Boshen
130a8f2b11
deps(vscode): bump dependencies 2023-12-08 21:04:47 +08:00
Boshen
e8338879d5
ci(conformance): ignore package.json changes 2023-12-08 18:33:06 +08:00
Boshen
71926a3853
Release oxlint and vscode extension v0.0.19 2023-12-08 18:28:57 +08:00
Boshen
b973261e5c
fix(linter): improve the key span for jsx-key 2023-12-08 17:40:35 +08:00
Boshen
8347e2225c
Release crates v0.4.0 2023-12-08 17:20:37 +08:00
Boshen
335647585d
deps(rust): bump ryu-js to v1.0.0 2023-12-08 17:15:35 +08:00
Boshen
9b849f5dd2
deps(rust): itertools 0.12.0 2023-12-08 16:54:07 +08:00
Boshen
7ebe81d7ba
chore(linter): clean up the files a little bit 2023-12-08 16:50:06 +08:00
msdlisper
d88f4f4983
feat(linter): eslint-plugin-jsx-a11y no-autofocus (#1641)
impl linter for #1141
2023-12-08 16:43:14 +08:00
Dunqing
6e5aad2639
feat(prettier): add ConditionalGroup command (#1635) 2023-12-07 20:12:45 +08:00
Cameron
86fe7e3a3d
feat(linter) eslint plugin unicorn: no useless spread (#1638) 2023-12-07 17:31:22 +08:00
Wenzhe Wang
0dec110790
refactor(prettier): move the format of Function's key to PropertyKey (#1639) 2023-12-07 17:30:48 +08:00
Miles Johnson
c6ad6603a4
feat(semantic): support scope descendents starting from a certain scope. (#1629)
@Boshen 

The `ScopeTree.descendants` function would return all scopes starting
from the root, and wasn't truly descendants from a specific scope. To
improve this, I've renamed this function to `descendants_from_root` and
have introduced a new `descendants` function that does support from a
specific scope.

Furthermore, I've introduced helper functions to `SymbolTree` to make
reading symbols/scopes easier.

To verify this functionality, I enabled the `function_name` transformer
(and fixed it), and ran some example transforms. Here's the input:

```js
let fn;

fn = function (a, b, c) {
  const d = "";
};

const func = function (arg) {
  {
    const value = "";
  }
};

const f = function (f) {};
```

And the output using _the old implementation_. Note that all function
names are suffixed with a number, this is incorrect, since it was
inheriting far too many scopes.

```js
let fn;
fn = function fn1(a, b, c) {
	const d = '';
};
const func = function func1(arg) {
	{
		const value = '';
	}
};
const f = function f2(f) {
};
```

And here's the output with the new implementation. Note that only `f` is
suffixed with a number. That's because it has a shadowed argument of the
same name.

```js
let fn;
fn = function fn(a, b, c) {
	const d = '';
};
const func = function func(arg) {
	{
		const value = '';
	}
};
const f = function f1(f) {
};
```
2023-12-07 17:29:11 +08:00
Wenzhe Wang
aa9bdeb8ee
feat(playground): add link jump to website (#1637) 2023-12-06 21:37:12 +08:00
Boshen
9018e2ad44
chore(codecov): ignore oxc_transformer and oxc_js_regex which are not ready yet 2023-12-06 19:05:42 +08:00
Boshen
5ba8398b9e
chore: update readme 2023-12-06 19:03:57 +08:00
Boshen
be731fe90c
chore: move oxc_resolver to https://github.com/oxc-project/oxc_resolver (#1636)
It is moved to https://github.com/oxc-project/oxc_resolver
2023-12-06 18:52:59 +08:00
Shinobu Hayashi
ddb3c62b87
feat(linter): eslint-plugin-jsx-a11y scope rule (correctness) (#1609)
## Summary

partof: #1141

I re-implemented scope rule for jsx_a11y in Rust same as the original JS
one, and moved also the test related to the rule to here.

originals:
- doc:
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md
- code:
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/rules/scope.js
- test:
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/__tests__/src/rules/scope-test.js
2023-12-06 18:24:29 +08:00
Boshen
2e42e10a1b
feat(resolver): add a realpath to package.json (#1634)
Using the `realpath` for resolving browser field will lead to missing
queries.

This fixes a cases where `browserField` fails to read.

---

`styled-components` is using a trick for loading browser modules:

---

7c065e0b6f/packages/styled-components/package.json (L6C1-L12C5)

```json
  "main": "dist/styled-components.cjs.js",
  "module": "./dist/styled-components.esm.js",
  "browser": {
    "./dist/styled-components.esm.js": "./dist/styled-components.browser.esm.js",
    "./dist/styled-components.cjs.js": "./dist/styled-components.browser.cjs.js"
  },
```

Module resolution has to go from `"module":
"./dist/styled-components.esm.js"`, then to `browser`'s
`"./dist/styled-components.esm.js":
"./dist/styled-components.browser.esm.js"` part in order for things to
get resolved correctly.

---

Fixtures are hard to setup for this test case due to needing symlinks,
I've created https://github.com/oxc-project/oxc_resolver for tacking
such cases.
2023-12-06 12:25:44 +08:00
Wenzhe Wang
286644714f
feat(prettier): wrap parameters in indent (#1633) 2023-12-06 10:20:31 +08:00
Wenzhe Wang
633455aba6
refactor(prettier): add print_method_value (#1632) 2023-12-06 10:16:09 +08:00
Wenzhe Wang
2aa5f7db91
feat(prettier): finish should_hug_the_only_function_parameter (#1626) 2023-12-05 22:55:12 +08:00
Don Isaac
795db7c5b7
feat(linter): cxc: no accumulating spread (#1607)
Creates a new nursery-level rule, `no-reduce-spread`, that prevents
spreading accumulator objects/arrays in `Array.prototype.reduce`.

The Tl;Dr of why this should be avoided is because it drastically
increases time/memory complexity in reductions. In general, it turns
potentially `O(1)`/`O(n)` memory operations into `O(n)`/`O(n^2)`, and
`O(n)` time into `O(n^2)`. For more details, refer to [this helpful blog
post](https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/).

Note that this rule doesn't exist in ESLint's default rule set or any
other ESLint plugin, although it looks like [there's been some interest
in it in the past](https://github.com/vercel/style-guide/issues/18).
Since there is no reference implementation to compare against, and thus
this could potentially have bugs, I've decided to make this a
nursery-level rule until we're sure it's stable and useful.

---

Edit: 

- [ ] Sync with Biome -
https://biomejs.dev/linter/rules/no-accumulating-spread/

---------

Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2023-12-05 17:25:40 +08:00
IWANABETHATGUY
b5f8a65352
refactor: improve pattern match of prefer-reflect-apply (#1630) 2023-12-05 15:18:50 +08:00
RiESAEX
c8e2ef62a8
feat(linter): eslint-plugin-unicorn: explicit-length-check (#1617)
[Rule](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/explicit-length-check.md)
#684 
It's harder than I thought.
Test cases that require a vue parser have been skipped
Some test case needs
[getStaticValue](https://github.com/eslint-community/eslint-utils/blob/main/src/get-static-value.mjs#L672)
to pass.
2023-12-05 13:55:56 +08:00
Ken-HH24
519b5f266b
feat(linter): eslint-plugin-unicorn prefer-reflect-apply(style) (#1628)
[prefer-reflect-apply](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-reflect-apply.md)
for #684 .
2023-12-05 13:52:49 +08:00
Wenzhe Wang
bb4a2c7930
chore: fix typo (#1627) 2023-12-04 21:52:50 +08:00