LongYinan
573f67b90f
chore(napi-derive): make_ref tweaks ( #1371 )
2022-11-22 23:17:44 +08:00
Jacob Kiesel
618d0f8046
fix(napi-derive): unsound behavior while using reference and async together
2022-11-22 00:17:19 +08:00
Simon Laux
035def0600
fix(napi): return the join handle when spawning a tokio task. ( #1351 )
...
we need this to be able to safely drop an struct,
that makes use of an async task.
the drop function needs to be able to call `.abort()`
on the join handle to avoid memory corruption and undefined bahviour.
2022-11-15 11:50:25 +08:00
Simon Laux
b0c248ad7e
chore(napi): expose tokio runtime's block_on function ( #1352 )
2022-11-15 11:49:46 +08:00
LongYinan
9816a77729
Release independent packages
...
napi@2.10.1
2022-11-12 13:39:04 +08:00
LongYinan
3dde26bcef
chore(napi): including type message in error message ( #1350 )
2022-10-24 00:16:30 +08:00
Wodann
77060adb3d
fix(napi): BigInt::get_u64 lossless check ( #1348 )
2022-10-22 11:16:08 +08:00
LongYinan
a12bdc4359
Release independent packages
...
- napi@2.10.0
2022-10-04 17:17:13 +08:00
Devon Govett
5541d650a9
feat(napi): add threadsafe deferred values ( #1306 )
2022-10-03 13:00:48 +08:00
LongYinan
a5a04a4e54
fix(napi): make Buffer/ArrayBuffer truely Send/Sync safe
2022-10-03 11:34:46 +08:00
LongYinan
47de6301ee
fix(napi): should also delete the reference while dropping the Buffer
2022-10-02 10:14:25 +08:00
user.tax
e54c37a0b1
feat(napi): add support for Vec<(std::string::String, u16)> and some other small change ( #1320 )
2022-09-20 12:13:07 +08:00
user.tax
0d49b45ea9
feat(napi): add impl<T: Into<Vec<u8>>> From<T> for Uint8Array ( #1317 )
...
Co-authored-by: any <any@user.tax>
2022-09-16 23:15:29 +08:00
LongYinan
ea18170779
fix(napi): propagation error in function call ( #1315 )
2022-09-14 19:30:43 +08:00
Devon Govett
5ba70b0e1a
fix(napi): improve error propagation ( #1303 )
2022-09-14 17:03:11 +08:00
LongYinan
f3c203d46e
Release independent packages
...
napi@2.9.1
napi-derive@2.9.1
2022-09-08 17:27:35 +08:00
Dennis Duda
fc63ba8b52
fix(napi): some of the unsoundness in Buffer
( #1294 )
...
* fix leaked napi refcount in `Buffer` when cloning
Cloning unconditionally increased the refcount in `Buffer::clone`, but only called `napi_reference_unref` on dropping the last Buffer (the one with `strong_count == 1`). This means that the refcount will never drop back to zero after cloning, leaking the Buffer.
This commit changes it to also unconditionally unref the buffer.
* fix multiple sources of UB in `Buffer`
- `slice::from_raw_parts` may never be created with a null pointer, but `napi_get_buffer_info` was not sufficiently checked → UB when passing an empty Buffer
- `&'static mut [u8],` is invalid, as it certainly doesn't live for `'static`
Switching to `NonNull<u8>` and a `len` field fixes both of these.
- I also don't really understand how the `impl ToNapiValue for &mut Buffer` could have been sound. It creates an entirely new `Arc`, but reuses the same `Vec` allocation, leading to... a double free of the `Vec` on drop? I have replaced it with a simple call to `clone` instead.
* remove overcomplicated bool and drop impl
As far as I can tell, by just removing the bool and letting the drop code do its thing we clean up correctly in all cases. Because `napi_create_external_buffer` gets an owned `Buffer` attached to it via the Box, we can rely on `from_raw` retrieving it in the `drop_buffer` function.
2022-09-05 13:04:43 +08:00
mat-if
26f6c926d3
chore(napi-derive): pin minimum usable version of dependency syn ( #1293 )
2022-09-01 10:50:48 +08:00
LongYinan
32a039aad0
fix(napi-derive): should not generate this types for Constructor/Getter/Setter
2022-08-30 16:39:51 +08:00
LongYinan
525d881590
fix(napi): remove previous reference if value_ref existed
...
Usually happens while using ZST
2022-08-25 21:51:06 +08:00
LongYinan
767c040d94
Release independent packages
...
- napi@2.9.0
- napi-derive@2.9.0
2022-08-23 22:27:53 +08:00
LongYinan
4153c03a9f
Merge pull request #1286 from napi-rs/f32-to-napi-value
...
feat(napi): implement ToNapiValue for f32
2022-08-23 17:03:01 +08:00
LongYinan
f7c00c9a90
feat(napi): implement as_unknown and validate for Either types ( #1285 )
2022-08-23 17:02:51 +08:00
LongYinan
49ec8917df
feat(napi): implement as_object and validate for ClassInstance ( #1284 )
2022-08-23 17:02:41 +08:00
LongYinan
36275438ad
chore(napi): misc cleanup
2022-08-23 16:18:08 +08:00
LongYinan
03e80361d9
feat(napi): implement ToNapiValue for f32
2022-08-23 16:18:08 +08:00
messense
99e17c7294
fix(napi): segfault when ThreadsafeFunction
's callback closure captures data ( #1281 )
2022-08-20 22:40:26 +08:00
LongYinan
b7a3103f0c
feat(napi-derive): catch_unwind attribute ( #1280 )
2022-08-19 23:36:36 +08:00
Fy
bc69e15efb
fix(napi-derive): fix macro expansion naming shadow ( #1278 )
...
Co-authored-by: fengyu <fengyu.shelby@bytedance.com>
2022-08-19 11:05:09 +08:00
LongYinan
5ba603459b
Release independent packages
...
napi@2.8.0
napi-derive@2.8.0
2022-08-17 23:12:05 +08:00
iuser
13996c1864
feat(napi): error_anyhow feature
2022-08-17 22:50:52 +08:00
LongYinan
1cd4fda01e
feat(napi): add get and get_mut method on WeakReference
2022-08-17 21:29:03 +08:00
LongYinan
528b1d21cb
style: clippy fix
2022-08-17 18:16:01 +08:00
LongYinan
0ef482c6ca
feat(napi-derive): support inject This<Value> into raw function
2022-08-17 18:16:00 +08:00
LongYinan
711372e175
feat(napi-derive): implement instance_of for Class
2022-08-17 15:18:43 +08:00
LongYinan
2385b52a72
feat(napi): allow implement custom finalize logic for Class
2022-08-17 13:24:40 +08:00
huzz
fd191a4586
feat(napi): support rust array to js array
2022-08-12 17:53:36 +08:00
LongYinan
4412c28c6d
chore(napi): enhance error message when unwrap failed from JsObject ( #1259 )
2022-08-07 23:05:49 +08:00
LongYinan
a0c7176693
Release independent packages
...
- napi@2.7.0
- napi-derive@2.7.0
2022-08-07 12:51:15 +08:00
LongYinan
cb9239d8dc
fix(napi): either for #[napi(object)] types ( #1258 )
2022-08-07 01:16:28 +08:00
Ivan Enderlin
6a9fdba8b6
feat(napi-derive) Support #[napi(strict)]
on &T
and &mut T
. ( #1238 )
2022-08-06 21:55:35 +08:00
LongYinan
0f14799776
feat(napi-derive): support set property attribute in napi macro ( #1257 )
2022-08-06 21:54:58 +08:00
Jacob Kiesel
94e8e54b38
feat(napi): call sync functions within tokio runtime ( #1242 )
2022-08-04 00:12:35 +08:00
Dennis Duda
a9a62f225e
feat(napi): add derived traits to ThreadsafeFunctionCallMode
( #1243 )
...
This makes it possible to reuse the same value, e.g. when writing utility/helper functions.
2022-07-31 15:29:26 +08:00
Jacob Kiesel
1040c41760
feat(napi): add some useful derived traits for the Null type ( #1241 )
2022-07-22 23:45:02 +08:00
LongYinan
5b2bff79d4
Release independent packages
...
napi@2.6.3
2022-07-11 21:54:02 +08:00
LongYinan
16ec32b68e
fix(napi): memory leak in Buffer/ArrayBuffer
2022-07-11 21:34:27 +08:00
LongYinan
552ec43fae
fix(napi): use Mutex instead of Atomic in ThreadSafeFunction
2022-07-10 00:07:56 +08:00
LongYinan
a4448d3e24
Revert "fix(napi): memory leak in ThreadsafeFunction"
...
This reverts commit 4dfc770c2a
.
2022-07-09 15:48:46 +08:00
LongYinan
3eccf45439
Release independent packages
...
napi@2.6.2
2022-07-08 13:50:37 +08:00
LongYinan
4dfc770c2a
fix(napi): memory leak in ThreadsafeFunction
2022-07-08 00:09:14 +08:00
Ivan Enderlin
1259ce1ba4
fix(napi) undefined
is recognized as a valid None
for Option<T>
.
2022-07-07 15:50:55 +02:00
LongYinan
087b3ed594
Release independent packages
...
napi@2.6.1
2022-07-07 00:17:02 +08:00
LongYinan
bffc49f11a
fix(napi): drop buffer inner data only when Reference count is 0
2022-07-07 00:01:16 +08:00
LongYinan
661b418eb6
Release independent packages
...
napi@2.6.0
napi-derive@2.6.0
2022-07-06 23:33:50 +08:00
LongYinan
1a7cff167e
feat(napi): clone reference for TypedArray/Buffer
2022-07-06 19:15:16 +08:00
LongYinan
cc3086d804
fix(napi): validate fn for Option<T>
2022-07-06 14:01:32 +08:00
LongYinan
87fd74cbb6
feat(napi-derive): allow injecting this in class method
2022-07-05 23:09:40 +08:00
LongYinan
2e53bf7f9a
feat(napi-derive): support return_if_invalid
2022-07-05 18:39:12 +08:00
LongYinan
53cab27bc4
refactor(napi): Either now perform ValidateNapiValue::validate rather than type_of
2022-07-05 17:01:21 +08:00
Ivan Enderlin
81b07ce5a6
feat(napi) implement Either3
to Either26
.
...
This patch introduces a new macro: `either_n!` that generates the types
`Either{n}` where $3 \leq n \leq 26$. Manual implementations for
`Either3`, `Either4` and `Either5` are removed by this patch too.
The `either_n!` macro is quite classical. There is no particular
trick, except `count_idents!` which simply turns, e.g. `A, B, C` into
`3`. This macro is used by `either_n!` to implement the
`debug_assert!` inside `from_napi_value`.
2022-07-05 17:01:12 +08:00
Jonas Platte
7cf87eaf20
chore(napi): replace lazy_static with once_cell ( #1213 )
2022-06-25 11:19:45 +08:00
LongYinan
2e7f3affe1
Release independent packages
...
napi@2.5.0
napi-derive@2.5.0
napi-build@2.0.1
2022-06-10 15:37:27 +08:00
LongYinan
18dc3df5ba
style: clippy
2022-06-10 15:20:06 +08:00
forehalo
f90d63ccde
fix(build): broken android target build caused by ndk upgrade
2022-06-10 15:19:56 +08:00
LongYinan
c1e07b3c12
feat(napi): support into_instance in class struct
2022-06-04 01:07:47 +08:00
Ivan Enderlin
94e95e87e7
feat(napi) Extend #1195 to Vec<T>
.
...
This patch is the sequel of
https://github.com/napi-rs/napi-rs/pull/1195 where `ToNapiValue` and
`FromNapiValue` are implemented for all `Vec<T>` where `T` is a 8 or
16 bits number.
2022-05-30 16:29:44 +02:00
Sunli
5cdfc8cb7e
feat(napi) implement From<Infallible>
for napi::Error
2022-05-30 21:44:03 +08:00
Ivan Enderlin
56e71a76d3
feat(napi) Return an error instead of panicking.
2022-05-25 14:43:23 +08:00
Ivan Enderlin
cb2a407228
feat(napi) Implement ToNapiValue
for 8 and 16-bits numbers.
...
`napi` only supports numbers in 16 and 32-bits. To support Rust
numbers with 8 and 16-bits, we can cast them to 32-bits. To convert
from 8 and 16-bits to 32-bits, we use their `Into` implementation. To
convert from 32-bits to 8 and 16-bits, we use their `TryInto`, we
should theorically not fail, but in case of, an `except` message is
appended.
The code has also been re-indented as it was containing a mix of 2
spaces, 4 spaces and tabs identation.
2022-05-25 14:43:23 +08:00
Jose L
5be415d3d9
feat(napi-derive): add ts_arg_type attribute to override individual args on functions ( #1192 )
2022-05-22 13:43:11 +08:00
messense
5cbeac59dc
Add rust-version
field to Cargo.toml
s ( #1190 )
2022-05-20 16:23:10 +08:00
Devon Govett
d6c755c4eb
fix(napi-derive): js_name
support for getters and setters ( #1179 )
2022-05-13 12:55:54 +08:00
LongYinan
822f4af1cc
Release independent packages
...
- napi@2.4.3
2022-05-12 16:59:33 +08:00
LongYinan
a5c19ce1da
fix(napi): type constraint for either types
2022-05-12 15:12:32 +08:00
LongYinan
fb8d8b97d6
Release independent packages
...
napi@2.4.2
napi-derive@2.4.2
napi-sys@2.2.2
2022-05-10 22:32:06 +08:00
LongYinan
47fcc8501a
fix(napi): missing iterator implementation from class factory
2022-05-10 21:50:20 +08:00
Devon Govett
27402aee81
feat(napi): add support for weak references
2022-05-10 21:09:45 +08:00
LongYinan
65b4b34f40
test(napi): add electron tests
2022-05-10 18:39:37 +08:00
LongYinan
788a962137
fix(napi): drop all thread_local! usage
2022-05-10 18:39:36 +08:00
LongYinan
79d7453713
Release independent packages
2022-05-07 20:23:01 +08:00
LongYinan
e551bd7c1a
fix(napi): load Node-API symbols manually on Windows
2022-05-07 18:54:37 +08:00
LongYinan
daf5f1f9e9
Release independent packages
...
- napi@2.4.0
- napi-derive@2.4.0
- napi-sys@2.2.0
- napi-build@2.0.0
2022-05-07 15:51:22 +08:00
LongYinan
1bf072ad7d
refactor(napi): use libloading on Windows
2022-05-06 22:27:09 +08:00
LongYinan
a3356264f2
feat(napi): experimental iterator support
2022-05-06 18:03:04 +08:00
LongYinan
b074608582
docs: broken example in README.md
...
Fix https://github.com/napi-rs/napi-rs/issues/1158
2022-05-06 17:46:20 +08:00
LongYinan
4b06121c5e
docs: broken links for Prisma and Next.js
2022-05-05 11:59:06 +08:00
Devon Govett
91c62c4616
fix(napi): handle the referenced object is finalized before Reference::drop
2022-05-03 21:59:42 +08:00
Ben Noordhuis
f301581445
feat(napi): make Error::from_reason() generic
2022-05-01 17:00:24 +02:00
LongYinan
8681cadc0f
Release independent packages
...
napi-derive@2.3.3
2022-04-27 18:39:52 +08:00
LongYinan
44b4cc34e0
fix(napi-derive): invalid TypeScript return type
2022-04-27 18:23:45 +08:00
LongYinan
2fecc109ef
Release independent packages
...
napi@2.3.3
napi-derive@2.3.2
2022-04-27 14:14:04 +08:00
LongYinan
66a107a4b9
chore(napi): upgrade windows crate
2022-04-27 13:59:56 +08:00
LongYinan
2e96297e1a
chore: drop node 17, add node 18
2022-04-27 13:17:39 +08:00
LongYinan
cf6b2c9241
chore: upgrade dependencies
2022-04-27 00:57:57 +08:00
LongYinan
878b843f29
feat(napi): support return Reference on class instance
2022-04-26 18:21:55 +08:00
LongYinan
cc79c9794e
fix(napi-derive): should transform struct case on Impl
2022-04-26 18:04:14 +08:00
LongYinan
5aa61c2142
fix(napi): use create_buffer/arrary_buffer if provided data is empty
2022-04-26 16:53:13 +08:00
LongYinan
a41cc07f21
Release independent packages
...
napi@2.3.2
napi-derive@2.3.1
2022-04-25 16:09:57 +08:00
Niklas Mischkulnig
39e55a39c9
fix(napi): use null pointer for empty buffers
2022-04-23 12:27:44 +02:00
Gabriel Francisco
581e3bbb87
chore(napi): add u64 to BigInt conversion through From trait ( #1143 )
...
* Add u64 to BigInt conversion through From trait
* Fix lint
2022-04-23 00:29:18 +08:00
Gabriel Francisco
d56c9c56a8
fix(napi-derive): simplify the optional values in generated declaration file ( #1141 )
2022-04-22 16:53:27 +08:00
LongYinan
e81e3dbb2e
Release independent packages
...
napi@2.3.1
2022-04-15 21:41:14 +08:00
Chanakya
09d7fd671a
fix cannot find trait ToNapiValue
error
2022-04-15 21:02:40 +08:00
LongYinan
ce308a3b54
Release independent packages
...
napi@2.3.0
napi-derive@2.3.0
2022-04-14 17:27:21 +08:00
LongYinan
c553dcd4e0
feat(napi): relax the value type on ThreadSafeFunction
2022-04-14 14:24:47 +08:00
LongYinan
89cce5752b
feat(napi-derive): support generic types on fn
2022-04-14 14:24:47 +08:00
LongYinan
6b7cd185a1
fix(napi-derive): JsUnknown should be unknown type
2022-04-14 14:24:47 +08:00
LongYinan
f05ced0782
feat(napi): add from_unknown method on FromNapiValue
2022-04-14 14:24:47 +08:00
Walt Seymour
73882337cc
unrwap -> unwrap
2022-04-14 14:24:32 +08:00
LongYinan
c605911cdf
chore(napi): show tips if create different buffers with same data
2022-04-13 13:24:53 +08:00
LongYinan
1d1c1706d5
Release independent packages
...
napi@2.3.0-alpha.1
napi-derive@2.3.0-alpha.1
2022-04-13 13:24:53 +08:00
LongYinan
63a557f6cc
test(napi): add memory tests for Reference
2022-04-13 13:24:53 +08:00
LongYinan
6a252c70d2
fix(napi): make buffer Send & Sync safe
2022-04-13 13:24:53 +08:00
LongYinan
6eec0f93c1
feat(napi): redesign the Reference API ( #1118 )
...
- Reference now is inject by #[napi] macro
- Class Reference and underlaying data now have the same lifetime
2022-04-13 13:24:53 +08:00
LongYinan
be0f4760ff
Release independent packages
...
napi@2.3.0-canary.0
napi-derive@2.3.0-canary.0
2022-04-13 13:24:53 +08:00
LongYinan
5c3d1b2144
feat(napi): experimental class reference API
2022-04-13 13:24:53 +08:00
LongYinan
9b0103cf22
fix(napi): remove CString::from_vec_with_nul_unchecked
2022-04-13 01:29:23 +08:00
Stéphan Kochen
50f62f40d7
fix(napi): double allocation in create_buffer
2022-04-01 14:31:29 +08:00
antoniomuso
f783e9537f
feat(napi): allow empty enums
2022-03-06 23:12:31 +08:00
LongYinan
71f3c0ef7e
Release independent packages
...
napi@2.2.0
napi-derive@2.2.0
2022-03-06 14:23:43 +08:00
LongYinan
18afd86a2e
fix(napi): missing ValidateNapiValue trait for types
2022-03-06 14:20:36 +08:00
LongYinan
b48a757837
style: clippy fix
2022-03-05 23:05:04 +08:00
LongYinan
1104742983
fix(napi): Buffer value lifetime should align the Rust lifetime
2022-03-05 23:05:04 +08:00
LongYinan
9f3fbaa8e0
fix(napi): race issues with Node.js worker_thread ( #1081 )
...
Co-authored-by: Jan Piotrowski <piotrowski+github@gmail.com>
2022-03-05 14:14:32 +08:00
messense
132a9a4ae2
chore: fix clippy::needless_late_init
lint
2022-02-28 12:09:40 +08:00
Martin Madsen
e9f43495c2
chore(napi): Mark shutdown_tokio_rt unsafe
2022-02-16 18:02:10 +01:00
Martin Madsen
5a0c1c2af3
fix(napi): cleanup registered hook upon unloading module with tokio_rt
2022-02-16 15:28:16 +01:00
Simon Vandel Sillesen
cb9be7bc6a
Merge remote-tracking branch 'origin/main' into chrono_datetime
2022-02-11 07:21:07 +01:00
LongYinan
d55e4f6f1f
style: format toml files
2022-02-11 10:46:17 +08:00
Simon Vandel Sillesen
f3c34cc452
chrono_date implies napi5
2022-02-10 06:44:43 +01:00
Simon Vandel Sillesen
2b2841e8d3
feat: Add support for Date <-> chrono::DateTime<Utc>
2022-02-09 20:59:58 +01:00
LongYinan
e607bc158e
Release independent packages
...
- napi@2.1.0
- napi-derive@2.1.0
2022-02-09 20:44:53 +08:00
LongYinan
2763a8e7b2
fix(napi): deref from Uint8ClampedArray
2022-02-07 12:24:09 +08:00
LongYinan
80ea0ad78c
fix(napi): re-export JsDate as Date in prelude
2022-02-06 20:42:48 +08:00
LongYinan
5002e782a4
docs(napi): typo
2022-02-06 16:39:11 +08:00
LongYinan
dfd213a1ee
feat(napi): with_value
method on Property
2022-02-06 16:26:00 +08:00
AlCalzone
ed12bd76bd
feat: impl FromNapiValue
for serde_json::Number
, fix it for Null
, throw for impossible types ( #1052 )
...
fix #1013
Co-authored-by: zeroslope <jsx55242@foxmail.com>
2022-02-06 11:58:17 +08:00
LongYinan
89893cdca3
style: apply clippy suggestion
2022-02-06 10:49:16 +08:00
messense
d3e37a44cb
Fix BigInt issue with zero value
...
Looks like 0 is a special case: 4318b2348d/deps/v8/src/objects/bigint.cc (L1595-L1602)
2022-02-04 21:43:57 +08:00
messense
a1be16530b
Fix String roundtrip with interior nul bytes
2022-02-04 16:52:44 +08:00
LongYinan
13533d1a37
feat(napi): re-export tokio and features
2022-01-23 23:04:31 +08:00
LongYinan
16f808276d
feat(napi): implement get_js_function
2022-01-23 23:04:31 +08:00
JoostK
8652019c94
fix(napi-derive): an Option
in front of a required parameter is no longer optional in TypeScript
...
This fixes a bug where having a parameter of type `Option<T>` followed by required parameters
would incorrectly declare the parameter as option in the TypeScript declaration file, resulting
in invalid syntax.
2022-01-23 18:57:01 +08:00
Jose L
40651714c9
feat(napi-derive): add ts_type
attribute to override typtescript type for fields in structs
2022-01-23 18:45:41 +08:00
messense
a109c54918
fix(napi): add missing nul byte to noop
...
Fixes a global-buffer-overflow bug
2022-01-22 12:34:55 +08:00
LongYinan
1238ee0276
Release independent packages
...
napi@2.0.4
napi-derive@2.0.8
2022-01-18 14:38:34 +08:00
Jose Acevedo
36e808d2a6
feat: add 'coerce_to_object' method to Array
2022-01-17 21:07:25 -08:00
Tim Fish
cdcab888ee
fix(napi-derive): correctly escape backslash in type definition doc comments ( #1034 )
2022-01-17 12:38:16 +08:00
LongYinan
cbbccf2084
Merge pull request #1029 from napi-rs/fix-clippy
...
fix(napi): clippy error on 1.58
2022-01-14 11:48:25 +08:00