refactor(napi): Either now perform ValidateNapiValue::validate rather than type_of
This commit is contained in:
parent
81b07ce5a6
commit
53cab27bc4
28 changed files with 179 additions and 157 deletions
examples/napi
|
@ -62,6 +62,7 @@ Generated by [AVA](https://avajs.dev).
|
|||
export function either4(input: string | number | boolean | Obj): number␊
|
||||
export function receiveClassOrNumber(either: number | JsClassForEither): number␊
|
||||
export function receiveMutClassOrNumber(either: number | JsClassForEither): number␊
|
||||
export function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number␊
|
||||
export function returnEitherClass(input: number): number | JsClassForEither␊
|
||||
export function eitherFromOption(): JsClassForEither | undefined␊
|
||||
/** default enum values are continuos i32s start from 0 */␊
|
||||
|
@ -276,6 +277,9 @@ Generated by [AVA](https://avajs.dev).
|
|||
export class JsClassForEither {␊
|
||||
constructor()␊
|
||||
}␊
|
||||
export class AnotherClassForEither {␊
|
||||
constructor()␊
|
||||
}␊
|
||||
export class Fib {␊
|
||||
[Symbol.iterator](): Iterator<number, void, number>␊
|
||||
constructor()␊
|
||||
|
|
Binary file not shown.
|
@ -99,6 +99,8 @@ import {
|
|||
overrideIndividualArgOnFunctionWithCbArg,
|
||||
createObjectWithClassField,
|
||||
receiveObjectWithClassField,
|
||||
AnotherClassForEither,
|
||||
receiveDifferentClass,
|
||||
} from '../'
|
||||
|
||||
test('export const', (t) => {
|
||||
|
@ -500,6 +502,13 @@ test('receive class reference in either', (t) => {
|
|||
t.is(receiveMutClassOrNumber(c), 100)
|
||||
})
|
||||
|
||||
test('receive different class', (t) => {
|
||||
const a = new JsClassForEither()
|
||||
const b = new AnotherClassForEither()
|
||||
t.is(receiveDifferentClass(a), 42)
|
||||
t.is(receiveDifferentClass(b), 100)
|
||||
})
|
||||
|
||||
test('return either class', (t) => {
|
||||
t.is(returnEitherClass(1), 1)
|
||||
t.true(returnEitherClass(-1) instanceof JsClassForEither)
|
||||
|
|
4
examples/napi/index.d.ts
vendored
4
examples/napi/index.d.ts
vendored
|
@ -52,6 +52,7 @@ export interface Obj {
|
|||
export function either4(input: string | number | boolean | Obj): number
|
||||
export function receiveClassOrNumber(either: number | JsClassForEither): number
|
||||
export function receiveMutClassOrNumber(either: number | JsClassForEither): number
|
||||
export function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number
|
||||
export function returnEitherClass(input: number): number | JsClassForEither
|
||||
export function eitherFromOption(): JsClassForEither | undefined
|
||||
/** default enum values are continuos i32s start from 0 */
|
||||
|
@ -266,6 +267,9 @@ export class ClassWithFactory {
|
|||
export class JsClassForEither {
|
||||
constructor()
|
||||
}
|
||||
export class AnotherClassForEither {
|
||||
constructor()
|
||||
}
|
||||
export class Fib {
|
||||
[Symbol.iterator](): Iterator<number, void, number>
|
||||
constructor()
|
||||
|
|
|
@ -67,6 +67,17 @@ impl JsClassForEither {
|
|||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
struct AnotherClassForEither {}
|
||||
|
||||
#[napi]
|
||||
impl AnotherClassForEither {
|
||||
#[napi(constructor)]
|
||||
pub fn new() -> Self {
|
||||
Self {}
|
||||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
fn receive_class_or_number(either: Either<u32, &JsClassForEither>) -> u32 {
|
||||
match either {
|
||||
|
@ -83,6 +94,14 @@ fn receive_mut_class_or_number(either: Either<u32, &mut JsClassForEither>) -> u3
|
|||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
fn receive_different_class(either: Either<&JsClassForEither, &AnotherClassForEither>) -> u32 {
|
||||
match either {
|
||||
Either::A(_) => 42,
|
||||
Either::B(_) => 100,
|
||||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
fn return_either_class(input: i32) -> Either<u32, JsClassForEither> {
|
||||
if input > 0 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue