diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/dts/lib.deno.unstable.d.ts | 71 |
1 files changed, 41 insertions, 30 deletions
diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts index 643386ced..ab6f8634f 100644 --- a/cli/dts/lib.deno.unstable.d.ts +++ b/cli/dts/lib.deno.unstable.d.ts @@ -362,49 +362,60 @@ declare namespace Deno { export type NativeResultType = NativeType | NativeVoidType; + type ToNativeTypeMap = + & Record<NativeNumberType, number> + & Record<NativeBigIntType, bigint | number> + & Record<NativePointerType, TypedArray | bigint | null> + & Record<NativeFunctionType, bigint | null>; + /** Type conversion for foreign symbol parameters and unsafe callback return types */ - type ToNativeType<T extends NativeType = NativeType> = T extends - NativeNumberType ? number - : T extends NativeBigIntType ? bigint | number - : T extends NativePointerType ? TypedArray | bigint | null - : T extends NativeFunctionType ? bigint | null - : never; + type ToNativeType<T extends NativeType = NativeType> = ToNativeTypeMap[T]; + + type ToNativeResultTypeMap = ToNativeTypeMap & Record<NativeVoidType, void>; /** Type conversion for unsafe callback return types */ type ToNativeResultType<T extends NativeResultType = NativeResultType> = - T extends NativeType ? ToNativeType<T> - : T extends NativeVoidType ? void + ToNativeResultTypeMap[T]; + + type ToNativeParameterTypes<T extends readonly NativeType[]> = + // + [(T[number])[]] extends [T] ? ToNativeType<T[number]>[] + : [readonly (T[number])[]] extends [T] + ? readonly ToNativeType<T[number]>[] + : T extends readonly [...NativeType[]] ? { + [K in keyof T]: ToNativeType<T[K]>; + } : never; - type ToNativeParameterTypes<T extends readonly NativeType[]> = T extends - readonly [] ? [] - : T extends readonly [ - infer U extends NativeType, - ...(infer V extends NativeType[]), - ] ? [ToNativeType<U>, ...ToNativeParameterTypes<V>] - : never; + type FromNativeTypeMap = + & Record<NativeNumberType, number> + & Record<NativeBigIntType, bigint> + & Record<NativePointerType, bigint> + & Record<NativeFunctionType, bigint>; /** Type conversion for foreign symbol return types and unsafe callback parameters */ - type FromNativeType<T extends NativeType = NativeType> = T extends - NativeNumberType ? number - : T extends NativeBigIntType | NativePointerType | NativeFunctionType - ? bigint - : never; + type FromNativeType<T extends NativeType = NativeType> = FromNativeTypeMap[T]; + + type FromNativeResultTypeMap = + & FromNativeTypeMap + & Record<NativeVoidType, void>; /** Type conversion for foregin symbol return types */ type FromNativeResultType<T extends NativeResultType = NativeResultType> = - T extends NativeType ? FromNativeType<T> - : T extends NativeVoidType ? void + FromNativeResultTypeMap[T]; + + type FromNativeParameterTypes< + T extends readonly NativeType[], + > = + // + [(T[number])[]] extends [T] ? FromNativeType<T[number]>[] + : [readonly (T[number])[]] extends [T] + ? readonly FromNativeType<T[number]>[] + : T extends readonly [...NativeType[]] ? { + [K in keyof T]: FromNativeType<T[K]>; + } : never; - type FromNativeParameterTypes<T extends readonly NativeType[]> = T extends - readonly [] ? [] - : T extends readonly [ - infer U extends NativeType, - ...(infer V extends NativeType[]), - ] ? [FromNativeType<U>, ...FromNativeParameterTypes<V>] - : never; - /** A foreign function as defined by its parameter and result types */ export interface ForeignFunction< Parameters extends readonly NativeType[] = readonly NativeType[], |