99 Commits

Author SHA1 Message Date
Mikaël Francoeur
83389a186b
feat(napi): add ScopeGenerator trait (#2831)
* add lifetime to iterator

* Add ScopedIterator

* fix type gen

* Clippy fix

---------

Co-authored-by: LongYinan <lynweklm@gmail.com>
2025-08-07 21:44:01 +08:00
Mikaël Francoeur
88fca29e3b
feat: make generator an iterator (#2784)
* make the generator an iterator

* add JSDoc for generators

* prevent naming conflicts

* add JSDoc struct

* update snapshot

* clippy

* Update typedef

* update fmt

* Apply code review

* test compatible

---------

Co-authored-by: LongYinan <lynweklm@gmail.com>
2025-08-07 08:03:37 +00:00
LongYinan
1ca2bad43f
feat(napi): provide ScopedTask to resolve JsValue with lifetime (#2786) 2025-07-21 13:55:44 +08:00
LongYinan
7e34e30b66
feat!(napi): create function from #[napi] fn (#2757) 2025-07-02 16:54:31 +08:00
LongYinan
8c3db48686
style: run clippy on nightly Rust (#2744) 2025-06-25 13:55:11 +08:00
LongYinan
814bc79412
fix(napi-derive): using js_name generating wrong type defs (#2700)
This commit introduces two main changes:

1.  Refactors the variable names used during the creation of
    `NapiStruct` in `crates/macro/src/parser/mod.rs`. The goal is to
    make the source of `NapiStruct.name` (the Rust identifier) and
    `NapiStruct.js_name` (the JavaScript name, potentially from a
    `#[napi(js_name = "...")]` attribute) more explicit. This change
    is primarily for code readability and maintainability. The core
    logic remains the same.

2.  Adds a new test case to `examples/napi` to specifically verify
    the behavior of `#[napi(js_name = "...")]` on structs. This
    includes:
    - A new Rust struct `OriginalRustNameForJsNamedStruct` in
      `examples/napi/src/class.rs` decorated with
      `#[napi(js_name = "MyJsNamedClass")]`.
    - Corresponding tests in `examples/napi/__tests__/values.spec.ts`
      that check for correct class instantiation, method calls, and
      type alias generation (`OriginalRustNameForJsNamedStruct` as an
      alias for `MyJsNamedClass`).

Note: I encountered some issues running the full build and tests for the example due to pre-commit hooks in the testing environment that I couldn't bypass. However, I believe the changes are correct based on static analysis and focused checks.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-06-08 17:14:57 +08:00
liuyi
5a17b88636
fix: revalidate shared libs if type def not found (#2689) 2025-06-04 15:05:24 +08:00
LongYinan
375b32b2b1
chore: clippy fix 2025-06-03 20:18:57 +08:00
liuyi
d874a46647
fix: type generation for shared libs (#2684) 2025-06-03 19:19:29 +08:00
LongYinan
a9c8ae0f99
fix(napi-derive): disallow JsValue assign to napi class as a field (#2648) 2025-05-18 21:04:30 +08:00
LongYinan
0dd473d52b
style(napi-derive): clippy fix (#2647) 2025-05-18 16:08:28 +08:00
LongYinan
b1fb82dade
fix!(napi): unsound issues in Error (#2644)
- Close https://github.com/napi-rs/napi-rs/issues/1640
2025-05-17 22:44:24 +08:00
LongYinan
4407678a25
fix(napi-derive): #[cfg_attr(feature = "xxx", napi)] (#2640) 2025-05-17 20:37:36 +08:00
LongYinan
21982a1508
feat(napi-derive): auto invalid type gen (#2638) 2025-05-16 22:30:27 +08:00
LongYinan
5d360e89fc
chore(cli): remove outdated WASI_REGISTER_TMP_PATH (#2633) 2025-05-14 15:24:33 +08:00
LongYinan
8cd752db86
feat(napi): support #[napi(module_exports)] (#2631) 2025-05-13 17:47:52 +08:00
LongYinan
ff2c64b35d
chore: clippy fix (#2545) 2025-04-04 13:52:49 +08:00
CPunisher
511b0da174
fix(napi-derive): add object_from_js and object_to_js support for enum (#2489) 2025-03-03 15:06:20 +08:00
LongYinan
680742f1b6
fix(napi-derive): module_init macro fix 2025-02-22 12:06:28 +08:00
LongYinan
d96bd288de
fix!(napi): upgrade to ctor 0.3.6 (#2472) 2025-02-20 12:22:29 +08:00
lghuahua
8ea8e9ebfc
feat(napi-derive): impl #[napi(array)] (#2459) 2025-02-11 13:35:27 +08:00
lghuahua
cc4d8bfa84
fix(napi-derive): enable tuple fields to support js_name attribute (#2439)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2025-01-22 12:10:26 +08:00
LongYinan
98cb7671d3
feat(napi): impl ReadableStream and AsyncGenerator (#2418)
* feat(napi): impl ReadableStream and AsyncGenerator

* clippy fix

* Into<Vec<u8>> trait

* Skip node18 stream test due to Node.js bug

* Cleanup

* Also skip wasi test

* Merge test

* Skip wasi

* Useless expect-error
2025-01-03 17:09:42 +08:00
lghuahua
31cd07c8c2
feat(napi-derive): support type on #[napi] (#2416)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2025-01-02 17:15:07 +08:00
翠 / green
521aefe420
feat(napi-derive): implement #[napi(transparent)] (#2376) 2024-11-30 10:28:40 +08:00
frankwang
8b474f929d
feat(napi-derive): allow ts_type in napi fn attrs (#2362)
* feat: allow ts_type in fn attrs

* chore: add override fn type example
2024-11-22 15:44:16 +08:00
LongYinan
afd081d003
feat(napi,napi-derive): allow lifetime in Class (#2298) 2024-10-10 05:59:14 +02:00
LongYinan
69cd73d71c
refactor!(napi,napi-derive): add lifetime to ClassInstance (#2286) 2024-10-02 10:42:34 +02:00
LongYinan
f704b4ac0f
feat(napi-derive): add async_runtime attribute (#2270) 2024-09-23 16:21:13 +08:00
LongYinan
0698bb1d80
feat(napi-derive): allow napi fn with lifetime (#2266) 2024-09-21 12:26:41 +08:00
LongYinan
fc4b6a632d
refactor(napi-derive): expand order (#2265) 2024-09-20 22:44:34 +08:00
LongYinan
521ef58f59
refactor(napi): allow create BufferSlice from external data (#2263)
- also refactor the enum codegen, now we will not emit #[derive(Copy,
  Clone)] for the original enums.
- also refacotr the fn codegen, now #[napi] fn can accept env: &Env as
  argument, this is useful when the return type contains lifetime
2024-09-19 22:22:33 +08:00
Richer
814188f1ad
fix(derive): fix clippy warning with newer rust version (#2262) 2024-09-19 21:55:48 +08:00
Richer
58bcb64c19
fix(napi-derive): call flush on the BufWriter (#2242) 2024-09-02 14:16:00 +08:00
Richer
b9c884e788
fix(macro): constructor don't support asynchronous function (#2239) 2024-08-31 10:40:49 +08:00
CPunisher
c459f0acf6
feat: support structured enum with discriminated unions (#2222)
* Structured enum

* Type indent

* Add test example

* Remove trailing commas

* discriminant

* discriminant conflict

* more test

* typo
2024-08-22 14:59:50 +08:00
CPunisher
e02ec1e87c
Replace self for Result<T> (#2224) 2024-08-22 14:59:00 +08:00
LongYinan
2e5bf773e3
fix(napi-derive): warning in empty enum codegen (#2214) 2024-08-10 22:30:50 +08:00
Louis
f88b90f71e
fix(napi-derive): call flush on the BufWriter (#2195)
This is mandated by the Rust doc of the BufWriter. We've also seen bugs where
the data doesn't seem to be flushed properly, and thus the CLI fails to parse
JSONs emitted by napi-derive. This might be it, or not, but flushing shouldn't
hurt.
2024-07-23 21:08:13 +08:00
Cong-Cong Pan
782d6ac5f8
fix(napi-derive): napi getter macros (#2188)
* fix: napi getter macros

* chore: cargo fmt
2024-07-16 12:48:38 +08:00
Ranger
a3b01870a3
feat(napi): support External for compact mode and add JsExternal as deprecated (#2125) 2024-05-26 14:43:33 +08:00
Louis
c223954dc6
chore(napi): allow value attribute on enum variants (#2115)
This allows us to customize the enum value for string_enum. So far, only the case attribute was allowing us to customize the value of those variants, this is a next step in allowing the value to be different from the actual name.

This has a new test, and snapshots have been updated accordingly.

@Brooooooklyn - could we include that in napi v2 and tag after it?
2024-05-17 11:22:33 +08:00
Ranger
b2239fd880
fix(napi-macro): gengerate type file should align with type-def featrue (#2100)
* fix: make sure env without exception pending before throw error

* fix(napi-macro): gengerate type file should align with type-def featrue

* fix(napi-macro): gengerate type file should align with type-def featrue
2024-05-10 14:32:48 +08:00
inokawa
0adc36ce1c
feat(cli): support generation of literal union from string enum (#2054)
* feat(cli): support generation of literal union from enum

* Remove const

---------

Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-04-22 14:28:04 +08:00
LongYinan
22c751ced0
fix(napi-derive): bail the unexpected factory directive (#2051)
- Close https://github.com/napi-rs/napi-rs/issues/2048
2024-04-18 00:14:00 +08:00
Andrew Toth
6b1058a268
feat(napi-derive): add optional enum_string case conversion (#1995) 2024-03-11 20:10:00 +08:00
サポミク
ebe97257a6
feat(napi-derive): add use_nullable attribute (#1971)
* feat(napi-derive): add use_nullable attribute

Co-authored-by: naskya <m@naskya.net>

* chore(napi-derive): update tests

Co-authored-by: naskya <m@naskya.net>

---------

Co-authored-by: naskya <m@naskya.net>
2024-02-24 21:49:54 +08:00
LongYinan
84f3092d70
fix(napi-derive): proc-macro crash on enum (#1870) 2023-12-27 21:18:02 +08:00
liuyi
6f40f94d09
fix(napi-derive): more accurate napi expanding error (#1854) 2023-12-13 15:23:00 +08:00
liuyi
e32c105a26
fix(napi-derive): upgrade syn (#1849) 2023-12-13 12:40:01 +08:00