From 161758393f2fa1a7575dc534b1e767d88fc5eedc Mon Sep 17 00:00:00 2001 From: LongYinan Date: Thu, 17 Oct 2024 16:36:21 +0800 Subject: [PATCH] fix(napi): TypedArray is not ArrayBuffer in Deno (#2314) --- crates/napi/src/js_values/de.rs | 5 +++++ examples/napi/__tests__/values.spec.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/napi/src/js_values/de.rs b/crates/napi/src/js_values/de.rs index aa188f45..7122924c 100644 --- a/crates/napi/src/js_values/de.rs +++ b/crates/napi/src/js_values/de.rs @@ -129,6 +129,11 @@ impl<'x, 'de, 'env> serde::de::Deserializer<'x> for &'de mut De<'env> { return visitor.visit_byte_buf( unsafe { BufferSlice::from_napi_value(self.0.env, self.0.value)? }.to_vec(), ); + } else if js_object.is_typedarray()? { + return visitor.visit_byte_buf(unsafe { + let u8_slice: &[u8] = FromNapiValue::from_napi_value(self.0.env, self.0.value)?; + u8_slice.to_vec() + }); } else if js_object.is_arraybuffer()? { let array_buf = unsafe { JsArrayBuffer::from_napi_value(self.0.env, self.0.value)?.into_value()? }; diff --git a/examples/napi/__tests__/values.spec.ts b/examples/napi/__tests__/values.spec.ts index 2d28ab4a..ed0eb1dd 100644 --- a/examples/napi/__tests__/values.spec.ts +++ b/examples/napi/__tests__/values.spec.ts @@ -610,7 +610,7 @@ test('create object from Property', (t) => { }) test('global', (t) => { - t.is(getGlobal(), global) + t.is(getGlobal(), typeof global === 'undefined' ? globalThis : global) }) test('get undefined', (t) => {