Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(napi): new Function/FunctionRef API #1913

Merged
merged 2 commits into from
Jan 26, 2024
Merged

Conversation

Brooooooklyn
Copy link
Sponsor Member

@Brooooooklyn Brooooooklyn commented Jan 24, 2024

This is the experimental feature that provides a all new design Function API in NAPI-RS.
The main motivation to design a new Function instead of improving the old JsFunction is there are some fundamental problems in the old JsFunction API.

  1. The old JsFunction doesn't contains a lifetime, which means you can send it to a outlive scope and call it later, which would cause a napi_invalid_arg error in the underlying napi_call_function API. This design issue also happens in the JsObject/JsBuffer and all other non-primitive types APIs.
  2. It's not possible to generate correct TypeScript type definitions for the old JsFunction API.
  3. The arguments of the old JsFunction API must be the same type, which is makes it really unfriendly to use.

Expect that, we also have a high level and modern Function exists in the NAPI-RS which is the Generic type style Fn(Args) -> Return.
This API is pretty nice to use, and more importantly, it's sound.
But there are some limitations to use it, like create a reference to it to outlive the scope of the JavaScript function under the hood. And you can't use it create a ThreadsafeFunction.
So there is the new design Function API, there are some core features:

  1. It's a generic typed API, which means you can get more accurate Rust type information and generate correct TypeScript type definitions.
  2. It's sound, which means you can't send it to a outlive scope and call it later, if you want do that, you must create a reference to it or create a ThreadsafeFunction.
  3. It's friendly to use, you can use different types of arguments and return types, and it can covert the Rust tuple type to JavaScript arguments automatically.
    Here is some examples to show how to use it:
use napi::bindgen_prelude::*;
use napi_derive::napi;

#[napi]
pub fn callback_javascript_callback(add_one: Function<u32, u32>) -> Result<u32> {
  add_one.call(100)
}

⬇️⬇️⬇️

export function callbackJavascriptCallback(add_one: (arg0: number) => number): number;

⬇️⬇️⬇️

callbackJavascriptCallback((arg0) => arg0 + 1);
// 101

If you define a tuple as the Function arguments, it will be converted to JavaScript arguments automatically.

use napi::bindgen_prelude::*;
use napi_derive::napi;

#[napi]
pub fn callback_javascript_callback(add: Function<(u32, u32), u32>) -> Result<u32> {
  add.call((100, 200))
}

⬇️⬇️⬇️

export function callbackJavascriptCallback(add: (arg0: number, arg1: number) => number): number;

⬇️⬇️⬇️

callbackJavascriptCallback((arg0, arg1) => arg0 + arg1);
// 300

If you are trying to send it into a outlive scope, you will get a compile error.
For example, if you are trying to send a callback to git2-rs RemoteCallbacks::credentials API:

use napi::bindgen_prelude::*;
use napi_derive::napi;

#[napi]
pub fn build_credential(on_credential: Function<(String, Option<String>, CredentialType), ClassInstance<Cred>>) -> Result<()> {
 let mut callbacks = git2::RemoteCallbacks::new();
 callbacks.credentials(move |url, username_from_url, allowed_types| {
   on_credential.call((url.to_string(), username_from_url.map(|s| s.to_string()), allowed_types.into()))
    .map(...)
    .map_error(...)
 });
}

You will get a compile error:

error[E0597]: `on_credential` does not live long enough

To fix this issue, you can create a reference to it:

use napi::bindgen_prelude::*;
use napi_derive::napi;
#[napi]
pub fn build_credential(env: Env. on_credential: Function<(String, Option<String>, CredentialType), ClassInstance<Cred>>) -> Result<()> {
  let mut callbacks = git2::RemoteCallbacks::new();
  let on_credential_ref = on_credential.create_ref()?;
  callbacks.credentials(move |url, username_from_url, allowed_types| {
    let on_credential = on_credential_ref.borrow_back(&env)?;
    on_credential.call((url.to_string(), username_from_url.map(|s| s.to_string()), allowed_types.into()))
    .map(...)
    .map_error(...)
  });
}

@Brooooooklyn Brooooooklyn changed the title chore(napi): split JsFunction call/apply implementation feat(napi): new Function/FunctionRef API Jan 25, 2024
@Brooooooklyn Brooooooklyn force-pushed the chore/split-call-apply branch 2 times, most recently from 94f3512 to 20e8b80 Compare January 25, 2024 15:33
@Brooooooklyn Brooooooklyn changed the base branch from main to chore/relax-callback-from-execute_tokio_future January 25, 2024 15:38
Base automatically changed from chore/relax-callback-from-execute_tokio_future to main January 26, 2024 02:27
Copy link
Sponsor Member Author

Brooooooklyn commented Jan 26, 2024

Merge activity

@Brooooooklyn Brooooooklyn merged commit baf0db2 into main Jan 26, 2024
43 checks passed
@Brooooooklyn Brooooooklyn deleted the chore/split-call-apply branch January 26, 2024 02:58
kodiakhq bot pushed a commit to X-oss-byte/Canary-nextjs that referenced this pull request May 2, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [napi](https://togithub.com/napi-rs/napi-rs) | dependencies | minor | `2` -> `2.16.4` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Release Notes

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

### [`v2.16.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.16.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.3...napi@2.16.4)

#### What changed

-   feat(napi): allow user defined tokio runtime by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  [#&#8203;2040](https://togithub.com/napi-rs/napi-rs/issues/2040)
-   fix(napi): handle panic in async block by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  ([napi-rs/napi-rs#2050)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.2...napi@2.16.4

### [`v2.16.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.2...napi@2.16.3)

#### What Changed

-   fix(napi-derive): bail the unexpected factory directive by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  [#&#8203;2051](https://togithub.com/napi-rs/napi-rs/issues/2051)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...napi-derive@2.16.3

### [`v2.16.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.1...napi@2.16.2)

##### What's Changed

-   feat(napi-derive): enhance the error messages in object validator by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#2034

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.1...napi-derive@2.16.2

### [`v2.16.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.0...napi@2.16.1)

#### What's Changed

-   feat(napi-derive): add optional enum_string case conversion by [@&#8203;andrewtoth](https://togithub.com/andrewtoth) in [napi-rs/napi-rs#1995

#### New Contributors

-   [@&#8203;andrewtoth](https://togithub.com/andrewtoth) made their first contribution in [napi-rs/napi-rs#1995

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.0...napi-derive@2.16.1

### [`v2.16.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.4...napi@2.16.0)

#### What's Changed

-   feat(napi-derive): add use_nullable attribute by [@&#8203;sup39](https://togithub.com/sup39) in [napi-rs/napi-rs#1971
-   style(napi-derive): clippy fix by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1976
-   fix(napi-derive): HashMap/IndexMap and slice generated types by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1977
-   fix(napi-derive): wrong dependency condition by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1980

#### New Contributors

-   [@&#8203;sup39](https://togithub.com/sup39) made their first contribution in [napi-rs/napi-rs#1971

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.4...napi-derive@2.16.0

### [`v2.15.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.15.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.2...napi@2.15.4)

#### What's Changed

-   fix(napi): no hard fail on ThreadsafeFunction::call_async by [@&#8203;lbarthon](https://togithub.com/lbarthon) in [napi-rs/napi-rs#1970
-   fix(napi): JsObject.add_finalizer callback being allowed to reference non-static things by [@&#8203;tomb-msft](https://togithub.com/tomb-msft) in [napi-rs/napi-rs#1968

#### New Contributors

-   [@&#8203;tomb-msft](https://togithub.com/tomb-msft) made their first contribution in [napi-rs/napi-rs#1968

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.3...napi@2.15.4

### [`v2.15.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.15.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.1...napi@2.15.2)

#### What's Changed

-   feat(napi): extends the Map types interoperability by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1950
-   feat(napi): accept slice as TypedArray by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1951
-   style: apply clippy fix by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1953
-   fix(napi): memory leak while using Reference by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1954

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.38...napi@2.15.2

### [`v2.15.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.15.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.0...napi@2.15.1)

#### What's Changed

-   fix(napi): Fix buffer corruption and soundness issues by [@&#8203;Janrupf](https://togithub.com/Janrupf) in [napi-rs/napi-rs#1923
-   fix(napi): in "Object::get", return null values wrapped in a "Some" by [@&#8203;jkomyno](https://togithub.com/jkomyno) in [napi-rs/napi-rs#1934

#### New Contributors

-   [@&#8203;Janrupf](https://togithub.com/Janrupf) made their first contribution in [napi-rs/napi-rs#1923
-   [@&#8203;jkomyno](https://togithub.com/jkomyno) made their first contribution in [napi-rs/napi-rs#1934

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.0...napi@2.15.1

### [`v2.15.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.15.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.4...napi@2.15.0)

#### What's Changed

-   fix(napi): callback in execute_tokio_future does not need to be Send by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1917
-   feat(napi): new Function/FunctionRef API by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1913
-   chore(napi): delete unwrap_from_ref API because it was never work by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1915
-   fix(napi): memory issue while creating external buffer on electron by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1921

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.14.4...napi@2.15.0

### [`v2.14.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.14.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.3...napi@2.14.4)

#### What's changed

-   fix(napi): future in block_on do not need to be send [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)   napi-rs/napi-rs@e332270

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.14.3...napi@2.14.4

### [`v2.14.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.14.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.2...napi@2.14.3)

#### What's Changed

-   fix(napi): block_on type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1911
-   chore(napi): expose spawn_blocking on tokio runtime by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1912

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.35...napi@2.14.3

### [`v2.14.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.14.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.1...napi@2.14.2)

#### What's Changed

-   test(napi): decrease the worker sizes on Linux x64 musl platform by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1823
-   fix(napi): apply clippy suggestions by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1878
-   chore(napi): add status to error messages in AsyncWork by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1880

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.14.1...napi@2.14.2

### [`v2.14.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.0...napi@2.14.1)

#### What's Changed

-   fix(napi-derive): async task void output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1795
-   fix(napi-derive): async task optional output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1796

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-sys@2.3.0...napi-derive@2.14.1

### [`v2.14.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.3...napi@2.14.0)

#### What's Changed

-   fix(napi-derive): throw **is not a valid identifier** when generating getters and setters by [@&#8203;yoogoc](https://togithub.com/yoogoc) in [napi-rs/napi-rs#1701
-   feat: integrate with emnapi, support **wasm32-wasi-preview1-threads** target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1669

### [`v2.13.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.13.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.2...napi@2.13.3)

#### What's Changed

-   Fix promise resolve error by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1664
-   feat(napi): impl FromNapiValue for HashMap with custom hasher by [@&#8203;arucil](https://togithub.com/arucil) in [napi-rs/napi-rs#1682

#### New Contributors

-   [@&#8203;H4ad](https://togithub.com/H4ad) made their first contribution in [napi-rs/napi-rs#1660
-   [@&#8203;arucil](https://togithub.com/arucil) made their first contribution in [napi-rs/napi-rs#1682

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.5...napi@2.13.3

### [`v2.13.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.13.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.1...napi@2.13.2)

#### What's Changed

-   docs(README): update platform support status by [@&#8203;kxxt](https://togithub.com/kxxt) in [napi-rs/napi-rs#1607
-   chore(deps): update dependency electron to v25 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1610
-   chore(deps): lock file maintenance by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1612
-   chore(deps): update yarn to v3.6.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1614
-   chore: remove extra #\[cfg] attribute by [@&#8203;aqrln](https://togithub.com/aqrln) in [napi-rs/napi-rs#1616
-   chore(deps): update dependency electron to v25.1.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1617
-   fix(napi): impl send + sync for ThreadsafeFunction by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1622

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.13.1...napi@2.13.2

### [`v2.13.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.13.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.0...napi@2.13.1)

#### What's Changed

-   fix(napi): missing ValidateNapiValue for JsObject by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1606

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.13.0...napi@2.13.1

### [`v2.13.0`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi-derive@2.13.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.7...napi@2.13.0)

### [`v2.12.7`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.12.7)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.6...napi@2.12.7)

#### What's Changed

-   chore(deps): update dependency electron to v24.1.3 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1578
-   chore(deps): update yarn to v3.5.1 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1579
-   chore(deps): update dependency electron to v24.2.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1580
-   feat(cli): add --use-cross command for building with `cross` by [@&#8203;Boshen](https://togithub.com/Boshen) in [napi-rs/napi-rs#1584
-   chore(deps): update dependency [@&#8203;rollup/plugin-commonjs](https://togithub.com/rollup/plugin-commonjs) to v25 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1588
-   chore(deps): update dependency electron to v24.3.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1587
-   chore(example): add callback return promise by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1590
-   chore(deps): update dependency electron to v24.3.1 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1593
-   feat(napi): Bigint deserialization by [@&#8203;JanisGailis](https://togithub.com/JanisGailis) in [napi-rs/napi-rs#1592

#### New Contributors

-   [@&#8203;Boshen](https://togithub.com/Boshen) made their first contribution in [napi-rs/napi-rs#1584
-   [@&#8203;JanisGailis](https://togithub.com/JanisGailis) made their first contribution in [napi-rs/napi-rs#1592

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi@2.12.7

### [`v2.12.6`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.12.6)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.5...napi@2.12.6)

#### What's Changed

-   chore(napi): adds support for `Rc / Arc / Mutex` by [@&#8203;arcanis](https://togithub.com/arcanis) in [napi-rs/napi-rs#1573

#### New Contributors

-   [@&#8203;arcanis](https://togithub.com/arcanis) made their first contribution in [napi-rs/napi-rs#1573

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.12.5...napi@2.12.6

### [`v2.12.5`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.5)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.4...napi@2.12.5)

#### What's Changed

-   fix(napi-derive): increase initial ref count in async fn by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1577

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.4...napi-derive@2.12.5

### [`v2.12.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.3...napi@2.12.4)

#### What's Changed

-   feat: clean napi-derive **noop** feature code path by [@&#8203;forehalo](https://togithub.com/forehalo) in [napi-rs/napi-rs#1571

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.12.5...napi-derive@2.12.4

### [`v2.12.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.2...napi@2.12.3)

#### Core features

```rust

#[napi(string_enum)]
pub enum Status {
  Pristine,
  Loading,
  Ready,
}
```

⬇️⬇️⬇️⬇️⬇️

```ts
export const enum Status {
  Pristine = 'Pristine',
  Loading = 'Loading',
  Ready = 'Ready'
}
```

#### What's Changed

-   feat(napi-derive): add support for string enums by [@&#8203;nebarf](https://togithub.com/nebarf) in [napi-rs/napi-rs#1551

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.2...napi-derive@2.12.3

### [`v2.12.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.1...napi@2.12.2)

#### What's Changed

-   fix(cli,napi-derive): backward compatible with older cli with [#&#8203;1531](https://togithub.com/napi-rs/napi-rs/issues/1531) by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1536

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.1...napi-derive@2.12.2

### [`v2.12.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.0...napi@2.12.1)

#### What's Changed

-   fix(cli,napi-derive): re-export types from shared crate by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1531

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.0...napi-derive@2.12.1

### [`v2.12.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.11.4...napi@2.12.0)

#### What's Changed

-   feat: export registers in wasm32 target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1529

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.11.4...napi-derive@2.12.0

### [`v2.11.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.11.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.11.3...napi@2.11.4)

#### What's Changed

-   fix(napi):  prevent access to tsfn-raw after env's destroyed([#&#8203;1514](https://togithub.com/napi-rs/napi-rs/issues/1514)) by [@&#8203;HotQ](https://togithub.com/HotQ) in [napi-rs/napi-rs#1515

#### New Contributors

-   [@&#8203;HotQ](https://togithub.com/HotQ) made their first contribution in [napi-rs/napi-rs#1515

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.11.3...napi@2.11.4

### [`v2.11.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.11.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.11.2...napi@2.11.3)

#### What's Changed

-   fix(napi): display should be implemented on error generics with `Debug` by [@&#8203;h-a-n-a](https://togithub.com/h-a-n-a) in [napi-rs/napi-rs#1497
-   feat(napi): expose `uv_run` by [@&#8203;MarkusJx](https://togithub.com/MarkusJx) in [napi-rs/napi-rs#1499
-   test(napi): tests for custom gc in worker_threads by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1505
-   chore(napi): remove thread_local from dependenies by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1506
-   build: add libc++ in aarch64-linux-gnu Docker by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1511
-   chore: ci components upgrade by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1512
-   fix(napi): panic when `Promise` callbacks trigger after Promise is dropped by [@&#8203;pose](https://togithub.com/pose) in [napi-rs/napi-rs#1516

#### New Contributors

-   [@&#8203;MarkusJx](https://togithub.com/MarkusJx) made their first contribution in [napi-rs/napi-rs#1499
-   [@&#8203;pose](https://togithub.com/pose) made their first contribution in [napi-rs/napi-rs#1516

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.11.1...napi@2.11.3

### [`v2.11.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.11.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.11.1...napi@2.11.2)

#### What's Changed

-   chore(napi-derive): remove thread_local from dependenies by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1506

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.11.1...napi-derive@2.11.2

### [`v2.11.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.11.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.11.0...napi@2.11.1)

#### Changes

-   Part of https://github.com/napi-rs/napi-rs/releases/tag/%40napi-rs%2Fcli%402.14.8 by [@&#8203;forehalo](https://togithub.com/forehalo)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;2](https://togithub.com/2).14.8...napi-derive@2.11.1

### [`v2.11.0`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.10.1...napi-derive@2.11.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.17...napi@2.11.0)

### [`v2.10.17`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.17)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.16...napi@2.10.17)

#### What's Changed

-   [fix(napi): impl Send Sync to External](https://togithub.com/napi-rs/napi-rs/commit/c34ccc9131ee75a9dae750b98926fbb9906d8f7c) by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.16...napi@2.10.17

### [`v2.10.16`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.16)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.15...napi@2.10.16)

#### What's Changed

-   fix(napi): dropping Error should not call sys if feature is set to noop by [@&#8203;h-a-n-a](https://togithub.com/h-a-n-a) in [napi-rs/napi-rs#1477

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.15...napi@2.10.16

### [`v2.10.15`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.15)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.14...napi@2.10.15)

#### What's Changed

-   build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [napi-rs/napi-rs#1472
-   chore(napi): enhance the error messages while converting types failed by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1473

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;2](https://togithub.com/2).14.6...napi@2.10.15

### [`v2.10.14`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.14)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.13...napi@2.10.14)

#### What's Changed

-   fix(napi): run_script return type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1467

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.13...napi@2.10.14

### [`v2.10.13`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.13)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.12...napi@2.10.13)

#### What's Changed

-   fix(napi): also apply electron external data fallback to lowlevel APIs by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1458

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.12...napi@2.10.13

### [`v2.10.12`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.12)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.11...napi@2.10.12)

#### What's Changed

-   fix(napi): add missing NoExternalBuffersAllowed by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1457

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.11...napi@2.10.12

### [`v2.10.11`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.11)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.10...napi@2.10.11)

#### What's Changed

-   fix(napi): fallback to copy arraybuffer if zero copy is not allowed by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1455

#### Background

Electron disallowed the `create_external_xxx` API since `electron@21`: https://www.electronjs.org/blog/v8-memory-cage
NAPI-RS will fallback to use `create_buffer_copy` if `napi_create_external_buffer` return the `napi_no_external_buffers_allowed` status.

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.10.10...napi@2.10.11

### [`v2.10.10`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.10.10)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.10.9...napi@2.10.10)

#### What's Changed

-   chore(napi): implement FromNapiValue for ThreadsafeFunction by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1447
-   fix(napi): throw fatal error if cast return value failed by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1450
-   fix(napi): add UnknownReturnValue to use in call_async scenario by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1451
-   fix(napi): unhandled promise rejection while using `EitherN<Promise<..>>` by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1452

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;2](https://togithub.com/2).14.4...napi@2.10.10

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] 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/X-oss-byte/Canary-nextjs).
kodiakhq bot pushed a commit to X-oss-byte/Nextjs that referenced this pull request May 3, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [napi](https://togithub.com/napi-rs/napi-rs) | dependencies | minor | `2` -> `2.16.4` |

---

### Release Notes

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

### [`v2.16.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.16.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.3...napi@2.16.4)

#### What changed

-   feat(napi): allow user defined tokio runtime by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  [#&#8203;2040](https://togithub.com/napi-rs/napi-rs/issues/2040)
-   fix(napi): handle panic in async block by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  ([napi-rs/napi-rs#2050)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.2...napi@2.16.4

### [`v2.16.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.2...napi@2.16.3)

#### What Changed

-   fix(napi-derive): bail the unexpected factory directive by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  [#&#8203;2051](https://togithub.com/napi-rs/napi-rs/issues/2051)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...napi-derive@2.16.3

### [`v2.16.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.1...napi@2.16.2)

##### What's Changed

-   feat(napi-derive): enhance the error messages in object validator by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#2034

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.1...napi-derive@2.16.2

### [`v2.16.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.0...napi@2.16.1)

#### What's Changed

-   feat(napi-derive): add optional enum_string case conversion by [@&#8203;andrewtoth](https://togithub.com/andrewtoth) in [napi-rs/napi-rs#1995

#### New Contributors

-   [@&#8203;andrewtoth](https://togithub.com/andrewtoth) made their first contribution in [napi-rs/napi-rs#1995

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.0...napi-derive@2.16.1

### [`v2.16.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.4...napi@2.16.0)

#### What's Changed

-   feat(napi-derive): add use_nullable attribute by [@&#8203;sup39](https://togithub.com/sup39) in [napi-rs/napi-rs#1971
-   style(napi-derive): clippy fix by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1976
-   fix(napi-derive): HashMap/IndexMap and slice generated types by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1977
-   fix(napi-derive): wrong dependency condition by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1980

#### New Contributors

-   [@&#8203;sup39](https://togithub.com/sup39) made their first contribution in [napi-rs/napi-rs#1971

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.4...napi-derive@2.16.0

### [`v2.15.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.15.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.2...napi@2.15.4)

#### What's Changed

-   fix(napi): no hard fail on ThreadsafeFunction::call_async by [@&#8203;lbarthon](https://togithub.com/lbarthon) in [napi-rs/napi-rs#1970
-   fix(napi): JsObject.add_finalizer callback being allowed to reference non-static things by [@&#8203;tomb-msft](https://togithub.com/tomb-msft) in [napi-rs/napi-rs#1968

#### New Contributors

-   [@&#8203;tomb-msft](https://togithub.com/tomb-msft) made their first contribution in [napi-rs/napi-rs#1968

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.3...napi@2.15.4

### [`v2.15.2`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.1...napi-derive@2.15.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.1...napi@2.15.2)

### [`v2.15.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.15.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.15.0...napi@2.15.1)

#### What's Changed

-   fix(napi-derive): serde Number typing by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1941

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.1...napi-derive@2.15.1

### [`v2.15.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.15.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.4...napi@2.15.0)

#### What's Changed

-   feat(napi): new Function/FunctionRef API by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1913
-   fix(napi-derive): JsArrayBuffer generated type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1922

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.6...napi-derive@2.15.0

### [`v2.14.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.3...napi@2.14.4)

#### What's Changed

-   fix(napi-derive): upgrade syn by [@&#8203;forehalo](https://togithub.com/forehalo) in [napi-rs/napi-rs#1849

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.3...napi-derive@2.14.4

### [`v2.14.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.2...napi@2.14.3)

#### What's Changed

-   fix(napi-derive,cli): register function cross crates by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1848

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.15...napi-derive@2.14.3

### [`v2.14.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.1...napi@2.14.2)

#### What's Changed

-   fix(napi-derive): compile warning by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1820
-   fix(napi): compile error for wasm32-unknown-unknown target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1822

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.1...napi-derive@2.14.2

### [`v2.14.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.14.0...napi@2.14.1)

#### What's Changed

-   fix(napi-derive): async task void output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1795
-   fix(napi-derive): async task optional output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1796

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-sys@2.3.0...napi-derive@2.14.1

### [`v2.14.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.3...napi@2.14.0)

#### What's Changed

-   fix(napi-derive): throw **is not a valid identifier** when generating getters and setters by [@&#8203;yoogoc](https://togithub.com/yoogoc) in [napi-rs/napi-rs#1701
-   feat: integrate with emnapi, support **wasm32-wasi-preview1-threads** target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1669

### [`v2.13.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.13.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.2...napi@2.13.3)

#### What's Changed

-   Fix promise resolve error by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1664
-   feat(napi): impl FromNapiValue for HashMap with custom hasher by [@&#8203;arucil](https://togithub.com/arucil) in [napi-rs/napi-rs#1682

#### New Contributors

-   [@&#8203;H4ad](https://togithub.com/H4ad) made their first contribution in [napi-rs/napi-rs#1660
-   [@&#8203;arucil](https://togithub.com/arucil) made their first contribution in [napi-rs/napi-rs#1682

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.5...napi@2.13.3

### [`v2.13.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.13.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.1...napi@2.13.2)

#### What's Changed

-   docs(README): update platform support status by [@&#8203;kxxt](https://togithub.com/kxxt) in [napi-rs/napi-rs#1607
-   chore(deps): update dependency electron to v25 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1610
-   chore(deps): lock file maintenance by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1612
-   chore(deps): update yarn to v3.6.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1614
-   chore: remove extra #\[cfg] attribute by [@&#8203;aqrln](https://togithub.com/aqrln) in [napi-rs/napi-rs#1616
-   chore(deps): update dependency electron to v25.1.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1617
-   fix(napi): impl send + sync for ThreadsafeFunction by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1622

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.13.1...napi@2.13.2

### [`v2.13.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%402.13.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.13.0...napi@2.13.1)

##### Bug Fixes

-   **cli:** zig cross armv7 ([#&#8203;1384](https://togithub.com/napi-rs/napi-rs/issues/1384)) ([2abc946](https://togithub.com/napi-rs/napi-rs/commit/2abc94681ecc1010106ae4e2a9c076a9e964094d))

### [`v2.13.0`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi-derive@2.13.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.7...napi@2.13.0)

### [`v2.12.7`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.12.7)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.6...napi@2.12.7)

#### What's Changed

-   chore(deps): update dependency electron to v24.1.3 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1578
-   chore(deps): update yarn to v3.5.1 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1579
-   chore(deps): update dependency electron to v24.2.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1580
-   feat(cli): add --use-cross command for building with `cross` by [@&#8203;Boshen](https://togithub.com/Boshen) in [napi-rs/napi-rs#1584
-   chore(deps): update dependency [@&#8203;rollup/plugin-commonjs](https://togithub.com/rollup/plugin-commonjs) to v25 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1588
-   chore(deps): update dependency electron to v24.3.0 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1587
-   chore(example): add callback return promise by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1590
-   chore(deps): update dependency electron to v24.3.1 by [@&#8203;renovate](https://togithub.com/renovate) in [napi-rs/napi-rs#1593
-   feat(napi): Bigint deserialization by [@&#8203;JanisGailis](https://togithub.com/JanisGailis) in [napi-rs/napi-rs#1592

#### New Contributors

-   [@&#8203;Boshen](https://togithub.com/Boshen) made their first contribution in [napi-rs/napi-rs#1584
-   [@&#8203;JanisGailis](https://togithub.com/JanisGailis) made their first contribution in [napi-rs/napi-rs#1592

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi@2.12.7

### [`v2.12.6`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.12.6)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.12.5...napi@2.12.6)

#### What's Changed

-   chore(napi): adds support for `Rc / Arc / Mutex` by [@&#8203;arcanis](https://togithub.com/arcanis) in [napi-rs/napi-rs#1573

#### New Contributors

-   [@&#8203;arcanis](https://togithub.com/arcanis) made their first contribution in [napi-rs/napi-rs#1573

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.12.5...napi@2.12.6

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] 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/X-oss-byte/Nextjs).
kodiakhq bot pushed a commit to X-oss-byte/Nextjs that referenced this pull request May 3, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [napi-derive](https://togithub.com/napi-rs/napi-rs) | dependencies | minor | `2` -> `2.16.3` |

---

### Release Notes

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

### [`v2.16.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.16.2...napi-derive@2.16.3)

#### What Changed

-   fix(napi-derive): bail the unexpected factory directive by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn)  [#&#8203;2051](https://togithub.com/napi-rs/napi-rs/issues/2051)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...napi-derive@2.16.3

### [`v2.16.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.16.1...napi-derive@2.16.2)

##### What's Changed

-   feat(napi-derive): enhance the error messages in object validator by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#2034

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.1...napi-derive@2.16.2

### [`v2.16.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.16.0...napi-derive@2.16.1)

#### What's Changed

-   feat(napi-derive): add optional enum_string case conversion by [@&#8203;andrewtoth](https://togithub.com/andrewtoth) in [napi-rs/napi-rs#1995

#### New Contributors

-   [@&#8203;andrewtoth](https://togithub.com/andrewtoth) made their first contribution in [napi-rs/napi-rs#1995

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.0...napi-derive@2.16.1

### [`v2.16.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.16.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.3...napi-derive@2.16.0)

#### What's Changed

-   feat(napi-derive): add use_nullable attribute by [@&#8203;sup39](https://togithub.com/sup39) in [napi-rs/napi-rs#1971
-   style(napi-derive): clippy fix by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1976
-   fix(napi-derive): HashMap/IndexMap and slice generated types by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1977
-   fix(napi-derive): wrong dependency condition by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1980

#### New Contributors

-   [@&#8203;sup39](https://togithub.com/sup39) made their first contribution in [napi-rs/napi-rs#1971

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.4...napi-derive@2.16.0

### [`v2.15.3`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.2...napi-derive@2.15.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.2...napi-derive@2.15.3)

### [`v2.15.2`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.1...napi-derive@2.15.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.1...napi-derive@2.15.2)

### [`v2.15.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.15.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.15.0...napi-derive@2.15.1)

#### What's Changed

-   fix(napi-derive): serde Number typing by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1941

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.1...napi-derive@2.15.1

### [`v2.15.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.15.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.6...napi-derive@2.15.0)

#### What's Changed

-   feat(napi): new Function/FunctionRef API by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1913
-   fix(napi-derive): JsArrayBuffer generated type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1922

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.6...napi-derive@2.15.0

### [`v2.14.6`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.6)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.5...napi-derive@2.14.6)

#### What's Changed

-   fix(napi-derive): proc-macro crash on enum by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1870

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.5...napi-derive@2.14.6

### [`v2.14.5`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.5)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.4...napi-derive@2.14.5)

#### What's Changed

-   fix(napi-derive): catch_unwind on constructor by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1869

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.24...napi-derive@2.14.5

### [`v2.14.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.3...napi-derive@2.14.4)

#### What's Changed

-   fix(napi-derive): upgrade syn by [@&#8203;forehalo](https://togithub.com/forehalo) in [napi-rs/napi-rs#1849

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.3...napi-derive@2.14.4

### [`v2.14.3`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.3)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.2...napi-derive@2.14.3)

#### What's Changed

-   fix(napi-derive,cli): register function cross crates by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1848

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.15...napi-derive@2.14.3

### [`v2.14.2`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.2)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.1...napi-derive@2.14.2)

#### What's Changed

-   fix(napi-derive): compile warning by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1820
-   fix(napi): compile error for wasm32-unknown-unknown target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1822

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.14.1...napi-derive@2.14.2

### [`v2.14.1`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.1)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.14.0...napi-derive@2.14.1)

#### What's Changed

-   fix(napi-derive): async task void output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1795
-   fix(napi-derive): async task optional output type by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1796

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-sys@2.3.0...napi-derive@2.14.1

### [`v2.14.0`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.14.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.13.0...napi-derive@2.14.0)

#### What's Changed

-   fix(napi-derive): throw **is not a valid identifier** when generating getters and setters by [@&#8203;yoogoc](https://togithub.com/yoogoc) in [napi-rs/napi-rs#1701
-   feat: integrate with emnapi, support **wasm32-wasi-preview1-threads** target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1669

### [`v2.13.0`](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi-derive@2.13.0)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.5...napi-derive@2.13.0)

### [`v2.12.5`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.5)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.4...napi-derive@2.12.5)

#### What's Changed

-   fix(napi-derive): increase initial ref count in async fn by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [napi-rs/napi-rs#1577

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.12.4...napi-derive@2.12.5

### [`v2.12.4`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi-derive%402.12.4)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/napi-derive@2.12.3...napi-derive@2.12.4)

#### What's Changed

-   feat: clean napi-derive **noop** feature code path by [@&#8203;forehalo](https://togithub.com/forehalo) in [napi-rs/napi-rs#1571

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.12.5...napi-derive@2.12.4

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] 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/X-oss-byte/Nextjs).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant