feat(napi-derive): support return_if_invalid
This commit is contained in:
parent
dface0c6a7
commit
2e53bf7f9a
9 changed files with 43 additions and 1 deletions
examples/napi
|
@ -17,6 +17,8 @@ import {
|
|||
validateSymbol,
|
||||
validateNull,
|
||||
validateUndefined,
|
||||
returnUndefinedIfInvalid,
|
||||
returnUndefinedIfInvalidPromise,
|
||||
} from '../index'
|
||||
|
||||
test('should validate array', (t) => {
|
||||
|
@ -166,3 +168,15 @@ test('should validate undefined', (t) => {
|
|||
message: 'Expect value to be Undefined, but received Number',
|
||||
})
|
||||
})
|
||||
|
||||
test('should return undefined if arg is invalid', (t) => {
|
||||
t.is(returnUndefinedIfInvalid(true), false)
|
||||
// @ts-expect-error
|
||||
t.is(returnUndefinedIfInvalid(1), undefined)
|
||||
})
|
||||
|
||||
test('should return Promise.reject() if arg is not Promise', async (t) => {
|
||||
t.is(await returnUndefinedIfInvalidPromise(Promise.resolve(true)), false)
|
||||
// @ts-expect-error
|
||||
await t.throwsAsync(() => returnUndefinedIfInvalidPromise(1))
|
||||
})
|
||||
|
|
|
@ -110,6 +110,8 @@ Generated by [AVA](https://avajs.dev).
|
|||
export function validatePromise(p: Promise<number>): Promise<number>␊
|
||||
export function validateString(s: string): string␊
|
||||
export function validateSymbol(s: symbol): boolean␊
|
||||
export function returnUndefinedIfInvalid(input: boolean): boolean␊
|
||||
export function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>␊
|
||||
export function tsRename(a: { foo: number }): string[]␊
|
||||
export function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string␊
|
||||
export function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object␊
|
||||
|
|
Binary file not shown.
2
examples/napi/index.d.ts
vendored
2
examples/napi/index.d.ts
vendored
|
@ -100,6 +100,8 @@ export function validateNumber(i: number): number
|
|||
export function validatePromise(p: Promise<number>): Promise<number>
|
||||
export function validateString(s: string): string
|
||||
export function validateSymbol(s: symbol): boolean
|
||||
export function returnUndefinedIfInvalid(input: boolean): boolean
|
||||
export function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>
|
||||
export function tsRename(a: { foo: number }): string[]
|
||||
export function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string
|
||||
export function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object
|
||||
|
|
|
@ -87,3 +87,14 @@ fn validate_string(s: String) -> String {
|
|||
fn validate_symbol(_s: JsSymbol) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
#[napi(return_if_invalid)]
|
||||
fn return_undefined_if_invalid(input: bool) -> bool {
|
||||
!input
|
||||
}
|
||||
|
||||
#[napi(return_if_invalid)]
|
||||
async fn return_undefined_if_invalid_promise(input: Promise<bool>) -> Result<bool> {
|
||||
let input_value = input.await?;
|
||||
Ok(!input_value)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue