From f69771e2d4ec966cbc029027edef714723a7182c Mon Sep 17 00:00:00 2001 From: LongYinan Date: Fri, 26 Jan 2024 14:00:52 +0800 Subject: [PATCH] fix(napi-derive): JsArrayBuffer generated type --- .husky/pre-commit | 5 +---- crates/backend/src/typegen.rs | 1 + crates/napi/src/js_values/arraybuffer.rs | 2 +- .../__snapshots__/typegen.spec.ts.md | 2 ++ .../__snapshots__/typegen.spec.ts.snap | Bin 4283 -> 4294 bytes examples/napi/__tests__/values.spec.ts | 4 ++++ examples/napi/index.d.ts | 2 ++ examples/napi/index.wasi-browser.js | 2 ++ examples/napi/index.wasi.cjs | 2 ++ examples/napi/src/typed_array.rs | 7 ++++++- package.json | 5 +++-- yarn.lock | 10 +++++----- 12 files changed, 29 insertions(+), 13 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index f5c8eadb..61d94aad 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -yarn lint-staged && cargo fmt --all \ No newline at end of file +yarn lint-staged && cargo fmt --all diff --git a/crates/backend/src/typegen.rs b/crates/backend/src/typegen.rs index 3a7a80e7..a05ba110 100644 --- a/crates/backend/src/typegen.rs +++ b/crates/backend/src/typegen.rs @@ -148,6 +148,7 @@ static KNOWN_TYPES: Lazy> = La ("Map", ("Record", false, false)), ("HashMap", ("Record<{}, {}>", false, false)), ("ArrayBuffer", ("ArrayBuffer", false, false)), + ("JsArrayBuffer", ("ArrayBuffer", false, false)), ("Int8Array", ("Int8Array", false, false)), ("Uint8Array", ("Uint8Array", false, false)), ("Uint8ClampedArray", ("Uint8ClampedArray", false, false)), diff --git a/crates/napi/src/js_values/arraybuffer.rs b/crates/napi/src/js_values/arraybuffer.rs index deb12b2d..ae8bf3da 100644 --- a/crates/napi/src/js_values/arraybuffer.rs +++ b/crates/napi/src/js_values/arraybuffer.rs @@ -147,7 +147,7 @@ impl JsArrayBuffer { let mut data = ptr::null_mut(); let mut len: usize = 0; check_status!(unsafe { - sys::napi_get_arraybuffer_info(self.0.env, self.0.value, &mut data, &mut len as *mut usize) + sys::napi_get_arraybuffer_info(self.0.env, self.0.value, &mut data, &mut len) })?; Ok(JsArrayBufferValue { data, diff --git a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md index 492626e0..3b6b9133 100644 --- a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md +++ b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md @@ -252,6 +252,8 @@ Generated by [AVA](https://avajs.dev). ␊ export function arrayBufferPassThrough(buf: Uint8Array): Promise␊ ␊ + export function asyncBufferToArray(buf: ArrayBuffer): Array␊ + ␊ export function asyncMultiTwo(arg: number): Promise␊ ␊ export function asyncPlus100(p: Promise): Promise␊ diff --git a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap index 9d28de1e9e621965ec2330a659c91f7a4ed57ffc..8c15e912cd569664e708c472084f644959354e8b 100644 GIT binary patch literal 4294 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 literal 4283 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 diff --git a/examples/napi/__tests__/values.spec.ts b/examples/napi/__tests__/values.spec.ts index 6adede8b..4de2771b 100644 --- a/examples/napi/__tests__/values.spec.ts +++ b/examples/napi/__tests__/values.spec.ts @@ -54,6 +54,7 @@ const { getPackageJsonName, getBuffer, getEmptyBuffer, + asyncBufferToArray, readFileAsync, eitherStringOrNumber, returnEither, @@ -649,6 +650,9 @@ test('buffer', (t) => { const b = getEmptyBuffer() t.is(a.toString(), '') t.is(b.toString(), '') + + // @ts-expect-error + t.true(Array.isArray(asyncBufferToArray(Buffer.from([1, 2, 3]).buffer))) }) test('reset empty buffer', (t) => { diff --git a/examples/napi/index.d.ts b/examples/napi/index.d.ts index b4386b8e..72b926a1 100644 --- a/examples/napi/index.d.ts +++ b/examples/napi/index.d.ts @@ -242,6 +242,8 @@ export function apply1(ctx: Animal, callback: (...args: any[]) => any, name: str export function arrayBufferPassThrough(buf: Uint8Array): Promise +export function asyncBufferToArray(buf: ArrayBuffer): Array + export function asyncMultiTwo(arg: number): Promise export function asyncPlus100(p: Promise): Promise diff --git a/examples/napi/index.wasi-browser.js b/examples/napi/index.wasi-browser.js index b600ef7d..091bd169 100644 --- a/examples/napi/index.wasi-browser.js +++ b/examples/napi/index.wasi-browser.js @@ -346,6 +346,7 @@ function __napi_rs_initialize_modules(__napiInstance) { __napiInstance.exports['__napi_register__array_buffer_pass_through_295']?.() __napiInstance.exports['__napi_register__AsyncBuffer_impl_296']?.() __napiInstance.exports['__napi_register__async_reduce_buffer_297']?.() + __napiInstance.exports['__napi_register__async_buffer_to_array_298']?.() } export const Animal = __napiModule.exports.Animal export const AnimalWithDefaultConstructor = @@ -399,6 +400,7 @@ export const apply0 = __napiModule.exports.apply0 export const apply1 = __napiModule.exports.apply1 export const arrayBufferPassThrough = __napiModule.exports.arrayBufferPassThrough +export const asyncBufferToArray = __napiModule.exports.asyncBufferToArray export const asyncMultiTwo = __napiModule.exports.asyncMultiTwo export const asyncPlus100 = __napiModule.exports.asyncPlus100 export const asyncReduceBuffer = __napiModule.exports.asyncReduceBuffer diff --git a/examples/napi/index.wasi.cjs b/examples/napi/index.wasi.cjs index d55d2e39..465698df 100644 --- a/examples/napi/index.wasi.cjs +++ b/examples/napi/index.wasi.cjs @@ -311,6 +311,7 @@ function __napi_rs_initialize_modules(__napiInstance) { __napiInstance.exports['__napi_register__array_buffer_pass_through_295']?.() __napiInstance.exports['__napi_register__AsyncBuffer_impl_296']?.() __napiInstance.exports['__napi_register__async_reduce_buffer_297']?.() + __napiInstance.exports['__napi_register__async_buffer_to_array_298']?.() } module.exports.Animal = __napiModule.exports.Animal module.exports.AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor @@ -358,6 +359,7 @@ module.exports.appendBuffer = __napiModule.exports.appendBuffer module.exports.apply0 = __napiModule.exports.apply0 module.exports.apply1 = __napiModule.exports.apply1 module.exports.arrayBufferPassThrough = __napiModule.exports.arrayBufferPassThrough +module.exports.asyncBufferToArray = __napiModule.exports.asyncBufferToArray module.exports.asyncMultiTwo = __napiModule.exports.asyncMultiTwo module.exports.asyncPlus100 = __napiModule.exports.asyncPlus100 module.exports.asyncReduceBuffer = __napiModule.exports.asyncReduceBuffer diff --git a/examples/napi/src/typed_array.rs b/examples/napi/src/typed_array.rs index 2d7caaef..ba2029a0 100644 --- a/examples/napi/src/typed_array.rs +++ b/examples/napi/src/typed_array.rs @@ -1,4 +1,4 @@ -use napi::bindgen_prelude::*; +use napi::{bindgen_prelude::*, JsArrayBuffer}; #[napi] fn get_buffer() -> Buffer { @@ -71,3 +71,8 @@ impl Task for AsyncBuffer { fn async_reduce_buffer(buf: Buffer) -> Result> { Ok(AsyncTask::new(AsyncBuffer { buf })) } + +#[napi] +fn async_buffer_to_array(buf: JsArrayBuffer) -> Result> { + Ok(buf.into_value()?.as_ref().to_vec()) +} diff --git a/package.json b/package.json index 7fafced1..a8108268 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "test:macro": "cargo test -p napi-examples", "test:memory": "node memory-testing/index.mjs", "postinstall": "husky install", - "prepublish": "yarn build" + "prepublish": "yarn build", + "prepare": "husky" }, "bugs": { "url": "https://github.com/napi-rs/napi-rs/issues" @@ -80,7 +81,7 @@ "eslint": "^8.55.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.29.0", - "husky": "^9.0.0", + "husky": "^9.0.6", "lerna": "^8.0.0", "lint-staged": "^15.2.0", "npm-run-all": "^4.1.5", diff --git a/yarn.lock b/yarn.lock index a2b6aef8..3b828fc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6668,12 +6668,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:^9.0.0": - version: 9.0.1 - resolution: "husky@npm:9.0.1" +"husky@npm:^9.0.6": + version: 9.0.6 + resolution: "husky@npm:9.0.6" bin: husky: bin.js - checksum: d7f3d158fffc8cc91211172637f7069b2173dbf5e732f46596a2a512e5f5f17ddebd895202cc67b0f159b747b698e2cc5601282b198d9cb5d97a5671fcb2afb7 + checksum: 1ef034899dcdc35e5bf5436e1e02f8a7177dbb8a10dd91b77456d7fe110c204d8d4a7d53180e0651b87e35f39d7e0e95a53b4b7c334f68aefbc0d93bce4b54f8 languageName: node linkType: hard @@ -8705,7 +8705,7 @@ __metadata: eslint: "npm:^8.55.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import: "npm:^2.29.0" - husky: "npm:^9.0.0" + husky: "npm:^9.0.6" lerna: "npm:^8.0.0" lint-staged: "npm:^15.2.0" npm-run-all: "npm:^4.1.5"