typedffi
Easily create types for your Deno FFI functions without any additional code.
Usage
Import the module from the Deno Third Party Modules hosting service:
import { dlopen } from "https://deno.land/x/typedffi/mod.ts";
After that, simply replace Deno.dlopen
with our dlopen
function.
Note:
typedffi
doesn't change the behavior ofDeno.dlopen
with any special magic, so it still requires the--unstable
flag to use.
Example
Now, let's look at what typedffi
can do for you by only adding in a as const
after your FFI object:
import { dlopen } from "https://deno.land/x/typedffi/mod.ts";
const lib = dlopen(
"YOUR_LIB",
{
add: {
parameters: ["i32", "i32"],
result: "i32",
},
long_async_crypto: {
parameters: ["buffer", "u32"],
result: "void",
nonblocking: true,
},
} as const,
);
// You can now safely call `lib.symbols.add` while still having TypeScript
// typing for the function.
type AddFuncType = typeof lib.symbols.foo;
// (arg_0: number, arg_1: number) => number
// It even transforms the nonblocking functions types to be promises!
typeof lib.symbols.long_async_crypto;
// (arg_0: Uint8Array, arg_1: number) => Promise<void>