Boshen
afe728a73a
feat(parser): parse regular expression with regex parser ( #4998 )
...
Many false positives and incorrect errors. @leaysgur Enjoy 😁
Run `just conformance` to update the snapshot.
2024-08-22 03:09:55 +00:00
overlookmotel
05fff16d55
fix(semantic): transform checker compare binding symbol IDs ( #5057 )
2024-08-22 02:34:44 +00:00
overlookmotel
f187b71877
fix(semantic): transform checker compare scope children ( #5056 )
2024-08-22 02:34:44 +00:00
overlookmotel
b52c6a4269
fix(semantic): transform checker compare scope parents ( #5055 )
2024-08-22 02:34:43 +00:00
overlookmotel
da64014a6c
fix(semantic): transform checker catch more scope flags mismatches ( #5054 )
...
There was a bug previously where scope flags were only checked if there was also a bindings mismatch.
2024-08-22 02:34:43 +00:00
overlookmotel
67d1a96391
fix(semantic): transform checker compare scope flags ( #5052 )
2024-08-22 02:34:41 +00:00
overlookmotel
ee7ac8b0b7
refactor(semantic): store all data in PostTransformChecker in transform checker ( #5050 )
...
Pure refactor of transform checker. Store all scope data in `PostTransformChecker` so it doesn't need to be passed around. `SemanticData` contains a full set of all semantic data for semantic pass, so we have 2 instances of it for 1. after transform and 2. rebuilt semantic.
2024-08-21 17:04:48 +00:00
overlookmotel
4e1f4abf89
refactor(semantic): add SemanticIds to transformer checker ( #5048 )
...
Transformer checker use `SemanticIds` to store collected IDs. `SemanticIds` only contains the IDs, without the `Vec` of errors which is only used temporarily.
2024-08-21 15:49:07 +00:00
overlookmotel
8cded08eb8
refactor(semantic): rename error labels in transformer checker snapshots ( #5044 )
...
Rename labels in transformer checker snapshots "after transform" vs "rebuilt".
2024-08-21 14:33:19 +00:00
overlookmotel
863b9cb921
fix(semantic): transform checker handle conditional scopes ( #5040 )
...
Some scopes are conditional e.g. `ForStatement` only gets a scope when initializer has a binding (`for (let i = 0; ...)` vs `for (i = 0; ...)`).
Make transform compare this between post-transform and fresh semantics.
2024-08-21 12:07:14 +00:00
overlookmotel
586e15c814
refactor(semantic): reformat transform checker errors ( #5039 )
...
Reformat transform checker error output - shorter and consistent capitalization.
2024-08-21 12:07:11 +00:00
Boshen
1bd9365bd0
fix(coverage): correctly check semantic data after transform ( #5035 )
...
closes #4999
2024-08-21 09:35:04 +00:00
overlookmotel
c4c08a7433
refactor(ast)!: rename IdentifierReference::reference_flags field ( #5024 )
...
Part of #4991 .
2024-08-21 00:19:57 +00:00
overlookmotel
d262a58eb5
refactor(syntax)!: rename ReferenceFlag to ReferenceFlags ( #5023 )
...
Part of #4991 .
2024-08-21 00:19:56 +00:00
Boshen
b4407c4e9a
refactor(oxc,mangler): oxc crate add mangler; mangler use options API
2024-08-20 22:58:59 +08:00
Boshen
cd9cf5efd8
refactor(oxc): remove remove_whitespace
2024-08-20 18:27:59 +08:00
Boshen
1f6b107339
chore(coverage): ignore test262 stage3 json-modules ( #5002 )
...
stage 3 https://github.com/tc39/proposal-json-modules
Ignoring due to https://github.com/tc39/proposal-json-modules/issues/27
2024-08-20 08:50:27 +00:00
Boshen
ce4d4698b4
feat(codegen)!: remove const generic MINIFY ( #5001 )
...
This is a premature optimization, makes the code complicated, and bloats the final binary size.
The minify option is moved to `CodegenOptions`
2024-08-20 08:13:27 +00:00
Boshen
b2ff2df5af
refactor(parser)!: remove builder pattern from Parser struct ( #5000 )
...
part of #4455
use `with_options(ParseOptions { ..ParseOptions::default() })` API instead.
2024-08-20 07:40:25 +00:00
Burlin
f88970bc79
refactor(ast)!: Change order of fields in CallExpression ( #4859 )
...
fix : #4821
---------
Co-authored-by: Dunqing <dengqing0821@gmail.com>
2024-08-20 09:47:12 +08:00
Dunqing
f51d3f9169
feat(transformer/nullish-coalescing-operator): handles nullish coalescing expression in the FormalParamter ( #4975 )
...
### What I did in this PR
1. Replace `self.clone_identifier_reference` with `ctx.clone_identifier.reference`
2. Remove the usage of `ast.copy`
3. Handle below example correctly
### Example
```js
// Input
var foo = object.foo ?? "default";
// Output
var _object$foo;
var foo =
(_object$foo = object.foo) !== null && _object$foo !== void 0
? _object$foo
: "default";
```
2024-08-20 01:06:37 +00:00
Dunqing
f794870dd4
feat(transformer/nullish-coalescing-operator): generate the correct binding name ( #4974 )
...
match Babel's [implementation](440fe41333/packages/babel-plugin-transform-nullish-coalescing-operator/src/index.ts (L40) )
2024-08-20 01:06:36 +00:00
DonIsaac
7c6bae2d65
feat(website): add link to rule source on docs page ( #4995 )
...

2024-08-19 20:40:14 +00:00
Don Isaac
a0effab160
feat(linter): support more flexible config.globals values ( #4990 )
...
Support `"readable", `"writable"`, and boolean values for `GlobalValue`.
I also enhanced the documentation for `OxcGlobals`
## Screenshot
<img width="797" alt="image"
src="https://github.com/user-attachments/assets/8f76de4c-4ae8-44d1-9be1-720fc3c7e0ec ">
2024-08-19 16:23:47 -04:00
Don Isaac
4436774e8c
fix(website): sanitize JSON in section docs ( #4989 )
2024-08-19 16:23:31 -04:00
Boshen
64ace42566
feat(transform_conformance): show transform conformance errors ( #4976 )
2024-08-19 09:01:34 +00:00
Boshen
4fdf26dac8
refactor(transform_conformance): add driver ( #4969 )
2024-08-19 07:27:39 +00:00
Boshen
3f6014a042
chore(semantic): add PostTransformChecker ( #4967 )
2024-08-19 05:38:27 +00:00
DonIsaac
96422b6489
refactor(ast): make AstBuilder non-exhaustive ( #4925 )
2024-08-19 05:32:30 +00:00
Boshen
6800e694e3
feat(oxc): add Compiler and CompilerInterface ( #4954 )
...
This PR adds a full compiler pipeline to the `oxc` crate, to stop us
from implementing the same pipeline over and over again.
relates #4455
2024-08-19 10:20:05 +08:00
renovate[bot]
ef057e7545
chore(deps): update npm packages ( #4958 )
...
[](https://renovatebot.com )
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [axios](https://axios-http.com )
([source](https://togithub.com/axios/axios )) | [`1.7.3` ->
`1.7.4`](https://renovatebot.com/diffs/npm/axios/1.7.3/1.7.4 ) |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
| [pnpm](https://pnpm.io ) ([source](https://togithub.com/pnpm/pnpm )) |
[`9.7.0` -> `9.7.1`](https://renovatebot.com/diffs/npm/pnpm/9.7.0/9.7.1 )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
### Release Notes
<details>
<summary>axios/axios (axios)</summary>
###
[`v1.7.4`](https://togithub.com/axios/axios/blob/HEAD/CHANGELOG.md#174-2024-08-13 )
[Compare
Source](https://togithub.com/axios/axios/compare/v1.7.3...v1.7.4 )
##### Bug Fixes
- **sec:** CVE-2024-39338
([#​6539](https://togithub.com/axios/axios/issues/6539 ))
([#​6543](https://togithub.com/axios/axios/issues/6543 ))
([6b6b605](6b6b605eaf ))
- **sec:** disregard protocol-relative URL to remediate SSRF
([#​6539](https://togithub.com/axios/axios/issues/6539 ))
([07a661a](07a661a2a6 ))
##### Contributors to this release
- <img
src="https://avatars.githubusercontent.com/u/31389480?v=4&s=18 "
alt="avatar" width="18"/> [Lev
Pachmanov](https://togithub.com/levpachmanov "+47/-11 (#​6543 )")
- <img
src="https://avatars.githubusercontent.com/u/41283691?v=4&s=18 "
alt="avatar" width="18"/> [Đỗ Trọng Hải](https://togithub.com/hainenber
"+49/-4 (#​6539 )")
</details>
<details>
<summary>pnpm/pnpm (pnpm)</summary>
### [`v9.7.1`](https://togithub.com/pnpm/pnpm/compare/v9.7.0...v9.7.1 )
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v9.7.0...v9.7.1 )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 10am on monday" in timezone
Asia/Shanghai, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/ ). View the
[repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yNi4xIiwidXBkYXRlZEluVmVyIjoiMzguMjYuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-18 23:07:20 +00:00
Boshen
c7a86865f3
fix(coverage): handle transformer errors
2024-08-18 22:19:58 +08:00
Boshen
873d502993
refactor(coverage): use the oxc crate
2024-08-17 22:40:08 +08:00
Boshen
bea76f0f24
fix(coverage): fix babel cases
2024-08-17 11:22:00 +08:00
Boshen
81439403fd
chore(coverage): print path relative to snapshot file ( #4938 )
...
Ctrl + click in terminal can open the file with this change.
I don't know about vscode, but maybe a plugin can help?
<img width="1399" alt="image" src="https://github.com/user-attachments/assets/9bb4609b-14e9-4df8-b5ee-cb96b72b2f7d ">
<img width="1131" alt="image" src="https://github.com/user-attachments/assets/e0293693-f755-4b91-8712-bbd2a0e615cc ">
2024-08-17 03:09:25 +00:00
Boshen
7ecf0efd40
chore(coverage): remove arrow functions plugin from semantic check
2024-08-16 19:12:17 +08:00
Boshen
61cdfef5c7
chore(coverage): remove quotes around path from snapshot files
...
to make it easier to triple click and copy the path
2024-08-16 16:03:50 +08:00
Boshen
c220730779
feat(coverage): check symbols and scopes after transformation ( #4917 )
...
closes https://github.com/oxc-project/oxc/issues/4790
@overlookmotel enjoy ... take a look at the snapshots and probably nothing else.
The snapshots are minimal right now, but it's already showing symbols from import specifiers are not being removed. We can iterate on the snapshot representation to aid debugging later.
I'll extend this to `transformer_conformance` and `oxc-monitor` in an up coming PR.
2024-08-16 07:05:11 +00:00
Dunqing
248a757b34
fix(transformer/typescript): typescript syntax within SimpleAssignmentTarget with MemberExpressions is not stripped ( #4920 )
...
close : #4870
I added the `move_identifier_reference` and `move_member_expression` methods used to take ownership in `ast_builder_impl`. This way can let us get rid of `ast.copy`.
Another possible approach is to add `get_expression_owner` to `SimpleAssignmentTarget` and a `get_inner_expression_owner` method to `Expression`. And add an `into_xxxxx` method for `inherit_variants` macro
The implementation looks like this
```rs
let Some(expression) = self.get_expression_owner() else { return; }
match expr.get_inner_expression_owner() {
Expression::Identifier(ident) => {
*target = self.ctx.ast.simple_assignment_target_from_identifier_reference(ident);
}
inner_expr @ match_member_expression!(Expression) => {
*target = SimpleAssignmentTarget::from(
inner_expr.into_member_expression()
);
}
_ => (),
}
```
2024-08-16 05:05:10 +00:00
DonIsaac
80d0d1f0c4
feat(semantic): check for invalid interface heritage clauses ( #4928 )
2024-08-16 02:30:09 +00:00
Dunqing
f1fcdde593
feat(transformer): support react fast refresh ( #4587 )
...
close : #3943
## Further improvements
There is a double visit here. We need to collect all react hooks calling in `Function` and `ArrowFunctionExpression`. If we want to remove this implementation, we may wait for #4188 .
d797e595d2/crates/oxc_transformer/src/react/refresh.rs (L744-L947)
## Tests
All tests copy from https://github.com/facebook/react/blob/main/packages/react-refresh/src/__tests__/ReactFresh-test.js
There are still 4 tests that have not been passed
**1. refresh/can-handle-implicit-arrow-returns/input.jsx**
Related to #4767 . transform correct, just output doesn't match the expected output
**2. refresh/registers-identifiers-used-in-jsx-at-definition-site/input.jsx**
**3. refresh/registers-identifiers-used-in-react-create-element-at-definition-site/input.jsx**
Blocked by #4746
**4. refresh/supports-typescript-namespace-syntax/input.tsx**
oxc transforms ts to js first, so probably we can ignore this case. If we really want to pass this test, we also need to turn off `TypeScript` plugin.
## What's next?
### Options:
1. Support transform `refresh_reg` and `refresh_sig` options to `MemberExpression`. Currently `import.meta.xxxx` still is an `Identifier`
2. Support `emit_full_signatures` option
### Other
NAPI, testing in `monitor-oxc`, etc..
2024-08-15 16:41:30 +00:00
rzvxa
47c9552ecf
docs(ast, ast_macros, ast_tools): better documentation for Ast helper attributes. ( #4856 )
2024-08-15 11:32:36 +00:00
overlookmotel
90d0b2ba65
refactor(allocator, ast, span, ast_tools): use allocator as var name for Allocator ( #4900 )
...
We mostly use `allocator` as var name for an `Allocator`, but in some places used the shorter name `alloc`. Use `allocator` everywhere for consistency.
2024-08-15 10:49:11 +00:00
Dunqing
0d7912217a
feat(transformer): support logical-assignment-operators plugin ( #4890 )
...
part of #4754
The implementation copy from the original implementation which removed in https://github.com/oxc-project/oxc/pull/2865 .
2024-08-15 10:10:36 +00:00
Dunqing
ab1d08ccfb
feat(transformer): support optional-catch-binding plugin ( #4885 )
...
part of #4754
The implementation copy from the original implementation which removed in https://github.com/oxc-project/oxc/pull/2865 .
2024-08-15 10:10:34 +00:00
Dunqing
69da9fda3a
feat(transformer): support nullish-coalescing-operator plugin ( #4884 )
...
The implementation copy from the original implementation which removed in https://github.com/oxc-project/oxc/pull/2865 .
2024-08-15 10:10:33 +00:00
Dunqing
3a66e5843d
feat(transformer): support exponentiation operator plugin ( #4876 )
...
The implementation copy from the original implementation which removed in https://github.com/oxc-project/oxc/pull/2865 .
2024-08-15 10:10:32 +00:00
Boshen
5b14608a95
chore(tasks/website): do not run textlint nor prettier
2024-08-15 14:28:57 +08:00
Boshen
34aa93bda3
feat(coverage): add checker for correctness of semantic data ( #4908 )
...
Part of https://github.com/oxc-project/oxc/issues/4790
2024-08-15 04:46:07 +00:00
Boshen
117ae36775
refactor(coverage): add driver struct for adding common checks later ( #4893 )
2024-08-14 11:11:13 +00:00