diff --git a/Cargo.toml b/Cargo.toml index d009d4f..93780e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ version = "0.1.0" crate-type = ["cdylib"] [dependencies] -napi = "3.0.0" +napi = { version = "3", features = ["async"] } napi-derive = "3.0.0" [build-dependencies] diff --git a/__test__/index.spec.ts b/__test__/index.spec.ts index 7e546a3..9191e3d 100644 --- a/__test__/index.spec.ts +++ b/__test__/index.spec.ts @@ -1,8 +1,9 @@ import test from 'ava' -import { plus100 } from '../index.js' +import { plus100, plus100Async } from '../index.js' -test('sync function from native code', (t) => { +test('sync function from native code', async (t) => { const fixture = 42 t.is(plus100(fixture), fixture + 100) + t.is(await plus100Async(fixture), fixture + 100) }) diff --git a/index.d.ts b/index.d.ts index 57ec103..f06ffe6 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,3 +1,5 @@ /* auto-generated by NAPI-RS */ /* eslint-disable */ export declare function plus100(input: number): number + +export declare function plus100Async(input: number): Promise diff --git a/index.js b/index.js index 79873ee..3150667 100644 --- a/index.js +++ b/index.js @@ -394,3 +394,4 @@ if (!nativeBinding) { module.exports = nativeBinding module.exports.plus100 = nativeBinding.plus100 +module.exports.plus100Async = nativeBinding.plus100Async diff --git a/package-template.wasi-browser.js b/package-template.wasi-browser.js index 59cc3ca..975beae 100644 --- a/package-template.wasi-browser.js +++ b/package-template.wasi-browser.js @@ -57,3 +57,4 @@ const { }) export default __napiModule.exports export const plus100 = __napiModule.exports.plus100 +export const plus100Async = __napiModule.exports.plus100Async diff --git a/package-template.wasi.cjs b/package-template.wasi.cjs index 97a73de..49f3cca 100644 --- a/package-template.wasi.cjs +++ b/package-template.wasi.cjs @@ -109,3 +109,4 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule }) module.exports = __napiModule.exports module.exports.plus100 = __napiModule.exports.plus100 +module.exports.plus100Async = __napiModule.exports.plus100Async diff --git a/simple-test.js b/simple-test.js index fb76fb9..0bea01b 100644 --- a/simple-test.js +++ b/simple-test.js @@ -1,5 +1,11 @@ -const { plus100 } = require('./index') +const { plus100, plus100Async } = require('./index') -console.assert(plus100(0) === 100, 'Simple test failed') +async function test() { + console.assert(plus100(0) === 100, 'Simple test failed') -console.info('Simple test passed') + console.assert(await plus100Async(0), 'Simple test failed') + + console.info('Simple test passed') +} + +test() \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index c01cf9e..e8034fb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,3 +6,8 @@ use napi_derive::napi; pub fn plus_100(input: u32) -> u32 { input + 100 } + +#[napi] +pub async fn plus_100_async(input: u32) -> u32 { + input + 100 +}