Commit graph

4375 commits

Author SHA1 Message Date
github-actions[bot]
0abcf499b7
Release crates v0.21.0 (#4338)
## [0.21.0] - 2024-07-18

- d7ab0b8 semantic: [**BREAKING**] Simplify node creation (#4226)
(lucab)

### Features

- af4dc01 ast: Align ts ast scope with typescript (#4253) (Dunqing)
- 83c2c62 codegen: Add option for choosing quotes; remove slow
`choose_quot` method (#4219) (Boshen)
- 5d17675 mangler: Add debug mode (#4314) (Boshen)
- e3e663b mangler: Initialize crate and integrate into minifier (#4197)
(Boshen)
- c818472 minifier: Dce conditional expression `&&` or `||` (#4190)
(Boshen)
- 8a190eb oxc: Export `oxc_mangler` (Boshen)
- 20cdb1f semantic: Align class scope with typescript (#4195) (Dunqing)
- 92ee774 semantic: Add `ScopeFlags::CatchClause` for use in CatchClause
(#4205) (Dunqing)
- 205c259 sourcemap: Support SourceMapBuilder#token_chunks (#4220)
(underfin)
- 7eb960d transformer: Decode xml character entity `&#xhhhh` and
`&#nnnn;` (#4235) (Boshen)

### Bug Fixes

- bf3d8d3 codegen: Print annotation comment inside parens for new and
call expressions (#4290) (Boshen)
- 084ab76 codegen: Use `ryu-js` for f64 to string (Boshen)
- e167ef7 codegen: Print parenthesis properly (#4245) (Boshen)
- c65198f codegen: Choose the right quote for jsx attribute string
(#4236) (Boshen)
- be82c28 codegen: Print `JSXAttributeValue::StringLiteral` directly
(#4231) (Boshen)
- 3df9e69 mangler: No shorthand `BindingProperty`; handle var hoisting
and export variables (#4319) (Boshen)
- f144082 minifier: RemoveDeadCode should visit nested expression
(#4268) (underfin)
- 66b455a oxc_codegen: Avoid print same pure comments multiple time
(#4230) (IWANABETHATGUY)
- 9a87e41 parser: Avoid crashing on invalid const modifier (#4267)
(lucab)
- 641a78b parser: Fix tests for number parsing (#4254) (overlookmotel)
- 9badac0 semantic: Avoid var hosting insert the var variable to the
`CatchClause` scope (#4337) (Dunqing)
- 95e15b6 semantic: Incorrect resolve references for `ExportSpecifier`
(#4320) (Dunqing)
- c362bf7 semantic: Incorrect resolve references for
`TSInterfaceHeritage` (#4311) (Dunqing)
- 351ecf2 semantic: Incorrect resolve references for `TSTypeQuery`
(#4310) (Dunqing)
- 1108f2a semantic: Resolve references to the incorrect symbol (#4280)
(Dunqing)
- 22d56bd semantic: Do not resolve references after `FormalParameters`
in TS type (#4241) (overlookmotel)- 1c117eb Avoid print extra semicolon
after accessor property (#4199) (IWANABETHATGUY)

### Performance

- a8dc4f3 parser: Speed up parsing numbers with `_` separators (#4259)
(overlookmotel)
- b94540d parser: Speed up parsing octal literals (#4258)
(overlookmotel)
- a7b328c parser: Faster parsing decimal numbers (#4257) (overlookmotel)
- f9d3f2e semantic: Inline ast record functions (#4272) (overlookmotel)
- 8fad7db semantic: Reduce `AstNodeId` to `u32` (#4264) (overlookmotel)
- 23743db semantic: Do not record ast nodes for cfg if cfg disabled
(#4263) (overlookmotel)
- da69076 semantic: Reduce overhead of cfg recording ast nodes (#4262)
(overlookmotel)
- cb15303 semantic: Reduce memory copies (#4216) (overlookmotel)
- ef4c1f4 semantic: Reduce lookups (#4214) (overlookmotel)
- f23e54f semantic: Recycle unresolved references hash maps (#4213)
(overlookmotel)
- 2602ce2 semantic: Reuse existing map of unresolved refs (#4206)
(lucab)

### Refactor

- 2c7bb9f ast: Pass final `ScopeFlags` into `visit_function` (#4283)
(overlookmotel)
- 3e099fe ast: Move `enter_scope` after `visit_binding_identifier`
(#4246) (Dunqing)
- aab7aaa ast/visit: Fire node events as the outermost one. (#4203)
(rzvxa)
- d1c4be0 codegen: Clean up annotation_comment (Boshen)
- 06197b8 codegen: Separate tests (Boshen)
- aa22073 codegen: Improve print API (#4196) (Boshen)
- c5731a5 semantic: Remove defunct code setting ScopeFlags twice (#4286)
(overlookmotel)
- 16698bc semantic: Move function/class-specific code into specific
visitors (#4278) (overlookmotel)
- ee16668 semantic: Rename function param (#4277) (overlookmotel)
- 25f0771 semantic: Alter syntax of `control_flow!` macro (#4275)
(overlookmotel)
- 639fd48 semantic: Comment why extra CFG enabled check (#4274)
(overlookmotel)
- c418bf5 semantic: Directly record `current_node_id` when adding a
scope (#4265) (Dunqing)
- ace4f1f semantic: Update the order of `visit_function` and `Visit`
fields in the builder to be consistent (#4248) (Dunqing)
- 8bfeabf semantic: Simplify adding `SymbolFlags::Export` (#4249)
(Dunqing)
- dc2b3c4 semantic: Add strict mode in scope flags for class definitions
(#4156) (Dunqing)
- 81ed588 semantic: Convert scope fields to IndexVecs (#4208) (lucab)
- bbe5ded semantic: Set `current_scope_id` to `scope_id` in
`enter_scope` (#4193) (Dunqing)
- 7f1addd semantic: Correct scope in CatchClause (#4192) (Dunqing)
- fc0b17d syntax: Turn the `AstNodeId::dummy` into a constant field.
(#4308) (rzvxa)
- a197e01 transformer/typescript: Remove unnecessary code (#4321)
(Dunqing)
- 1458d81 visit: Add `#[inline]` to empty functions (#4330)
(overlookmotel)

Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-18 13:56:35 +08:00
Dunqing
9badac030d fix(semantic): avoid var hosting insert the var variable to the CatchClause scope (#4337)
related: #4192 #4323

I will figure it out #4323 later
2024-07-18 02:52:14 +00:00
DonIsaac
7afa1f06c3 feat(linter): support suggestions and dangerous fixes (#4223) 2024-07-18 02:20:30 +00:00
cinchen
acc57295d5
feat(linter): eslint-plugin-vitest/expect-expect (#4299)
support
[eslint-plugin-vitest/expect-expect](https://github.com/veritem/eslint-plugin-vitest/blob/main/src/rules/expect-expect.ts)

---------

Co-authored-by: wenzhe <mysteryven@gmail.com>
2024-07-18 10:13:45 +08:00
Jelle van der Waa
ed49e169cb
feat(linter/eslint-plugin-unicorn): implement fixer for prefer-dom-node-append (#4306) 2024-07-18 09:44:23 +08:00
Jelle van der Waa
9df7b5675f
feat(jsx-a11y/no-autofocus): implement fixer support (#4171)
Let oxlint automatically remove the autoFocus attribute when `--fix` is
passed.
2024-07-17 16:31:19 -04:00
cinchen
2213f9393b
feat(linter): eslint-plugin-vitest/no-alias-methods (#4301)
support
[eslint-plugin-vitest/no-alias-methods](https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-alias-method.md)
2024-07-17 16:30:35 -04:00
Jelle van der Waa
4463eb4c48
chore(linter): add fixer test cases for prefer-dom-node-text-content (#4315) 2024-07-17 16:21:31 -04:00
Jelle van der Waa
db2fd70432
feat(linter/eslint-plugin-promise): implement no-webpack-loader-syntax (#4331)
Rule detail:

[link](https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-webpack-loader-syntax.md)
2024-07-17 16:13:54 -04:00
overlookmotel
1458d81268 refactor(visit): add #[inline] to empty functions (#4330)
Add `#[inline]` to empty default implementations of `enter_node` etc. Hopefully compiler will inline them automatically within Oxc even cross-crate because we compile with LTO, but maybe not for external consumers who don't use LTO.
2024-07-17 17:10:36 +00:00
Don Isaac
650615c15d
build: compile macro crates with some optimizations (#4327)
## What This PR Does
Compile `oxc_macros` and `oxc_ast_macros` with `O1` in debug builds.

This should make consuming crates compile faster, as well as test
binaries (oxc_linter tests take a while to compile when developing rules
locally)
2024-07-17 23:32:00 +08: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
Boshen
3df9e697cc
fix(mangler): no shorthand BindingProperty; handle var hoisting and export variables (#4319)
Trying to pass tests in https://github.com/oxc-project/monitor-oxc
2024-07-17 18:12:42 +08:00
Dunqing
a197e01b5c refactor(transformer/typescript): remove unnecessary code (#4321)
close: #3827
2024-07-17 10:07:30 +00:00
Dunqing
95e15b6dc5 fix(semantic): incorrect resolve references for ExportSpecifier (#4320)
```ts
type A = any;
const B = 0;
export { A, B }
       ^^^^^^^^ ExportSpecifiers

export { A }
       ^^^^^ type-only ExportSpecifiers

```

non-type-only `ExportSpecifier` can reference value and type symbols. but currently, `IdentifierReference` in ExportSpecifier only has a `ReferenceFlags::Read`
2024-07-17 09:52:58 +00:00
Dunqing
a88d588a07 feat(semantic): add ReferenceFlags::TSTypeQuery to indicate referenced by TSTypeQuery (#4317)
`ReferenceFlags::TSTypeQuery` can be used to help us insist on whether the reference is referenced by the type or not.
2024-07-17 09:52:57 +00:00
Boshen
5d17675cde feat(mangler): add debug mode (#4314)
closes #4303
2024-07-17 04:59:23 +00:00
Dunqing
c362bf7edf fix(semantic): incorrect resolve references for TSInterfaceHeritage (#4311)
related issue: https://github.com/oxc-project/oxc/issues/3963
fixes: https://github.com/oxc-project/monitor-oxc/actions/runs/9960183591/job/27518854841
2024-07-17 03:33:02 +00:00
Dunqing
351ecf2707 fix(semantic): incorrect resolve references for TSTypeQuery (#4310)
```ts
type A = typeof Foo
                ^^^ Only allow reference to value symbol
```

I have verified the changed snapshot. That's correct
2024-07-17 03:33:00 +00:00
Dunqing
48724a0d44 chore(semantic): copy tests from typescript-eslint’s scope-manager (#3990)
close:  #2947

These fixtures were copied from a5b652da1e/packages/scope-manager/tests/fixtures. We used them to test out semantic `ScopeTree` and `SymbolTable`
2024-07-17 02:50:50 +00:00
Dunqing
1108f2a700 fix(semantic): resolve references to the incorrect symbol (#4280)
close: #3799
related: #3863
2024-07-17 02:50:48 +00:00
Dunqing
af4dc0112e feat(ast): align ts ast scope with typescript (#4253)
close: #3969
close: #2023

We need to add scope according to [this](d8086f14b6/src/compiler/binder.ts (L3883-L3962)). There are still some ASTs that need to be added to the scope.

---

Context from @Boshen:

Before this whole journey of fixing symbols and scopes I asked @Dunqing to debug through binder.ts via a debugger to fully understand how it does resolution.

We then agreed to align the implementation so that when a problem occurs, we can debug through both implementations and find where our problem is.

tsc doesn't have a specification, so we need to align with the reference implementation instead.
2024-07-17 02:50:47 +00: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
rzvxa
fc0b17d5a0 refactor(syntax): turn the AstNodeId::dummy into a constant field. (#4308) 2024-07-16 22:43:21 +00:00
rzvxa
96af45933a
chore(justfile): add just check to the just ast command. (#4302)
I use this in my local environment when I'm developing the ast_codegen
and want a thorough build with the newly generated files. If you find it
useful merge otherwise feel free to close.
2024-07-16 23:58:29 +08:00
Boshen
8e2fd8c5f3
ci: remove graphite optimize_ci
The savings does not out weight the confusion this feature brings yet.
2024-07-16 21:26:33 +08:00
Boshen
4a50b88af4
ci: remove instructions for sccache
Performance improvement does not out weight cost yet.
2024-07-16 21:24:32 +08:00
lucab
0fdc88beee perf(linter): optimize no-dupe-keys (#4292)
This tweaks the `no-dupe-keys` lint in order to try to optimize it.
The lints reliably shows up in both CPU and memory profiling,
due to the cost of allocating/growing the hashmap and hashing into it.
This PR tries to tackle both by skipping trivial cases and by
pre-allocating a larger hashmap.
2024-07-16 11:08:23 +00:00
overlookmotel
c5731a5431 refactor(semantic): remove defunct code setting ScopeFlags twice (#4286)
Scope flags for functions is set when the scope is created. Remove redundant code that sets them again.
2024-07-16 07:32:36 +00:00
overlookmotel
2c7bb9f6c8 refactor(ast): pass final ScopeFlags into visit_function (#4283)
We have a strange workaround for `visit_function` where we pass in `ScopeFlags`, to support creating the scope inside `Function`, but setting different flags for `MethodDefinition`s.

Previously `visit_function` took `Option<ScopeFlags>` and then did `flags.unwrap_or(ScopeFlags::empty()) | ScopeFlags::Function` to it. Personally, I found this confusing. When I was looking at `MethodDefinition`, I was wondering "It's a function, why doesn't it set Function flag too?"

This changes makes it more explicit and clear what `ScopeFlags` everything has.
2024-07-16 07:22:07 +00:00
Boshen
bf3d8d3e8f fix(codegen): print annotation comment inside parens for new and call expressions (#4290) 2024-07-16 06:55:36 +00:00
Boshen
107e57019c feat(coverage): run multi-file typescript tests (#4256)
The code is really ugly because I didn't anticipate multi-test files from typescript when I started writing the runner :-(
2024-07-16 06:15:04 +00:00
Jelle van der Waa
b5a8f3c60c
refactor(linter): use get_first_parameter_name from unicorn utils (#4255) 2024-07-16 09:41:38 +08:00
Jelle van der Waa
3416099a18
eslint-plugin-unicorn: prefer-string-trim-start-end rule fixer and fixes (#4285) 2024-07-16 01:45:33 +03:30
overlookmotel
16698bc191 refactor(semantic): move function/class-specific code into specific visitors (#4278)
Instead of calling `bind_function_or_class_expression` for every scope, and then branching on the AST node kind, insert the relevant code into the visitors for functions and classes. This reduces work on all other kinds of scopes e.g. block statements.
2024-07-15 18:36:20 +00:00
overlookmotel
ee16668168 refactor(semantic): rename function param (#4277)
Small style nit. It's nicer to have Rust Analyser's param name hint show `builder` rather than `_builder`.
2024-07-15 15:06:59 +00:00
overlookmotel
25f0771185 refactor(semantic): alter syntax of control_flow! macro (#4275)
Previously:

```rs
let ix = control_flow!(|self, cfg| cfg.current_node_ix);
```

after this PR:

```rs
let ix = control_flow!(self, |cfg| cfg.current_node_ix);
```

It expands to:

```rs
let ix = if let Some(ref mut cfg) = self.cfg {
    cfg.current_node_ix
} else {
    Default::default()
};
```

So rationale for this change is that it makes it clearer that `self` is passed *in* and `cfg` comes *out* into the "closure".
2024-07-15 14:31:04 +00:00
overlookmotel
639fd48227 refactor(semantic): comment why extra CFG enabled check (#4274)
Add a comment referencing conclusions of #4273.
2024-07-15 12:11:04 +00:00
overlookmotel
f9d3f2ef55 perf(semantic): inline ast record functions (#4272)
Inline these functions so that when CFG is disabled, it doesn't cost a function call just for the trivial `if self.cfg.is_some()` check.

Based on @rzvxa's suggestion in https://github.com/oxc-project/oxc/pull/4263#pullrequestreview-2176762670.
2024-07-15 11:43:48 +00:00
lucab
9a87e41332 fix(parser): avoid crashing on invalid const modifier (#4267)
Followup on https://github.com/oxc-project/oxc/pull/3977, fixing one of the crashes at https://github.com/oxc-project/oxc/pull/3977.
2024-07-15 11:37:31 +00:00
underfin
f144082a60
fix(minifier): RemoveDeadCode should visit nested expression (#4268) 2024-07-15 19:37:12 +08:00
overlookmotel
8fad7dbac3 perf(semantic): reduce AstNodeId to u32 (#4264)
`AstNodeId` was a `usize`. This seems excessive.

Parser has a limit on size of a JS file of 4 GiB. While it is *possible* for a JS file of that size to create an AST with more than `1 << 32` (~4 billion) AST nodes, that would be insanely large.

So make `AstNodeId` `u32` instead.
2024-07-15 04:31:51 +00:00
overlookmotel
23743dbd59 perf(semantic): do not record ast nodes for cfg if cfg disabled (#4263)
Control flow graph builder records AST node IDs in a temp structure `ast_node_records`. Disable this if CFG is disabled.
2024-07-15 04:31:47 +00:00
overlookmotel
da69076c98 perf(semantic): reduce overhead of cfg recording ast nodes (#4262)
Control flow graph builder records AST node IDs in a temp structure `ast_nodes_records`. Only the first AST node ID inserted into the `Vec` is ever used, so turn it into just a single value.

Using `AstNodeId::dummy()` as sentinel for "not set" instead of using `Option<AstNodeId>` to reduce size of the records stack. `Option<AstNodeId>` is 16 bytes.
2024-07-15 04:31:43 +00:00
overlookmotel
a8dc4f34b2
perf(parser): speed up parsing numbers with _ separators (#4259)
When parsing a number which contains `_` separators, rather than looping
through the string once to remove separators, and then again to convert
to an `f64`, do it all in a single loop.

Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
2024-07-15 12:27:47 +08:00
overlookmotel
b94540d0fb perf(parser): speed up parsing octal literals (#4258)
Micro-optimization to parsing octal numbers. This removes usage of `char`, so removes a surprising amount of instructions.
2024-07-15 03:42:47 +00:00
overlookmotel
a7b328c4f5 perf(parser): faster parsing decimal numbers (#4257)
Closes #3288.

Speed up parsing decimal literals (e.g. `123`), using same techniques as `parse_octal` etc.
2024-07-15 03:38:09 +00:00
Dunqing
c418bf53ce refactor(semantic): directly record current_node_id when adding a scope (#4265)
close: #4234
2024-07-15 03:02:18 +00:00
Boshen
f85188b1af
chore: sync ast changes 2024-07-15 10:51:38 +08:00
renovate[bot]
d3df3c20d9
chore(deps): update rust crates (#4261)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [compact_str](https://togithub.com/ParkMyCar/compact_str) |
workspace.dependencies | minor | `0.7.1` -> `0.8.0` |
| [napi](https://togithub.com/napi-rs/napi-rs) | workspace.dependencies
| patch | `3.0.0-alpha.3` -> `3.0.0-alpha` |
| [napi-derive](https://togithub.com/napi-rs/napi-rs) |
workspace.dependencies | patch | `3.0.0-alpha.2` -> `3.0.0-alpha` |
| [oxc_resolver](https://togithub.com/oxc-project/oxc-resolver) |
workspace.dependencies | minor | `1.9.3` -> `1.10.0` |

---

### Release Notes

<details>
<summary>ParkMyCar/compact_str (compact_str)</summary>

###
[`v0.8.0`](https://togithub.com/ParkMyCar/compact_str/blob/HEAD/CHANGELOG.md#080)

##### July 8, 2024

#### Breaking Changes 💥

- Consolidate `CompactString::new_inline(...)` and
`CompactString::from_static_str(...)` into
`CompactString::const:new(...)`. Methods are currently marked as
deprecated and will be removed in `v0.9.0`.
- Implemented in [`Add const_new(); remove new_inline() and
from_static_str()`](https://togithub.com/ParkMyCar/compact_str/pull/336)
-   Minimum supported Rust version (MSRV) was bumped to `v1.60`
- Implemented in [`fix: MSRV check and change MSRV to
1.60`](https://togithub.com/ParkMyCar/compact_str/pull/395)

#### Changes

- Add support for [`borsh`](https://crates.io/crates/borsh) under an
optional feature.
- Implemented in [`Add borsh
support`](https://togithub.com/ParkMyCar/compact_str/pull/393)
-   Add additial `PartialEq` impls for `CompactString`
- Implemented in [`fix: More PartialEq
impls`](https://togithub.com/ParkMyCar/compact_str/pull/381)
-   Match alignment of internal `InlineBuffer` and `Repr`.
- Implemeneted in [`Align InlineBuffer same as
Repr`](https://togithub.com/ParkMyCar/compact_str/pull/358)
-   Fix conflict between `serde` and `no_std` features.
- Implemented in [`fix serde no-std
issue`](https://togithub.com/ParkMyCar/compact_str/pull/347)
-   Improve performance of `CompactString::is_empty`.
- Implemented in [`Simplify
is_empty()`](https://togithub.com/ParkMyCar/compact_str/pull/330)
-   Implement additional `From` impls that `std::string::String` has.
- Implemented in [`Add missing From impls that String
has`](https://togithub.com/ParkMyCar/compact_str/pull/328)
- Implement
[`Clone::clone_from`](https://doc.rust-lang.org/std/clone/trait.Clone.html#method.clone_from)
for `CompactString`.
- Implemented in [`Impl Clone::clone_from for
CompactString`](https://togithub.com/ParkMyCar/compact_str/pull/325)
-   Make re-allocations of a heap-based `CompactString` fallible.
- Implemented in [`Make (re)allocations
fallible`](https://togithub.com/ParkMyCar/compact_str/pull/323)
-   Inline short `&'static str`s
- Implemented in [`Inline short static
strings`](https://togithub.com/ParkMyCar/compact_str/pull/321)
- Add support for serializing a `CompactString` from
[`diesel`](https://crates.io/crates/diesel) and
[`sqlx`](https://crates.io/crates/sqlx)
- Implemented in [`Implement diesel
compatibility`](https://togithub.com/ParkMyCar/compact_str/pull/318)
- Implemented in [`Implement for
sqlx`](https://togithub.com/ParkMyCar/compact_str/pull/329)

... and everything from `v0.8.0-beta`

#### Fixed Issues

- Re-enabled specialization for `String` in `trait ToCompactString` by
upgrading to `castaway v0.2.3`
- Implemented in [`deps: Upgrade to castaway
v0.2.3`](https://togithub.com/ParkMyCar/compact_str/pull/394)

</details>

<details>
<summary>napi-rs/napi-rs (napi)</summary>

###
[`v3.0.0-alpha.7`](https://togithub.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.6...napi@3.0.0-alpha.7)

[Compare
Source](https://togithub.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.6...napi@3.0.0-alpha.7)

</details>

<details>
<summary>oxc-project/oxc-resolver (oxc_resolver)</summary>

###
[`v1.10.0`](https://togithub.com/oxc-project/oxc-resolver/blob/HEAD/CHANGELOG.md#1100---2024-07-11)

[Compare
Source](https://togithub.com/oxc-project/oxc-resolver/compare/oxc_resolver-v1.9.4...oxc_resolver-v1.10.0)

##### Added

- *(napi)* expose module type info in ResolveResult
([#&#8203;223](https://togithub.com/oxc-project/oxc_resolver/pull/223))

##### Fixed

- remove `#[cfg(target_os = "windows")]` logic in `canonicalize`
([#&#8203;221](https://togithub.com/oxc-project/oxc_resolver/pull/221))

##### Other

- update `cargo deny`
([#&#8203;222](https://togithub.com/oxc-project/oxc_resolver/pull/222))
-   pin crate-ci/typos version

###
[`v1.9.4`](https://togithub.com/oxc-project/oxc-resolver/blob/HEAD/CHANGELOG.md#194---2024-07-10)

[Compare
Source](https://togithub.com/oxc-project/oxc-resolver/compare/oxc_resolver-v1.9.3...oxc_resolver-v1.9.4)

##### Other

- use custom canonicalize impl to avoid useless syscall
([#&#8203;220](https://togithub.com/oxc-project/oxc_resolver/pull/220))
- add symlink fixtures
([#&#8203;219](https://togithub.com/oxc-project/oxc_resolver/pull/219))

</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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzEuNCIsInVwZGF0ZWRJblZlciI6IjM3LjQzMS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: rzvxa <rzvxa@protonmail.com>
2024-07-15 10:49:08 +08:00