{"id":45677000,"url":"https://github.com/livekit/uniffi-bindgen-node","last_synced_at":"2026-02-24T13:04:28.045Z","repository":{"id":327127724,"uuid":"1085088301","full_name":"livekit/uniffi-bindgen-node","owner":"livekit","description":"Mechanism for generating ffi bindings between node and rust using uniffi","archived":false,"fork":false,"pushed_at":"2026-02-06T16:03:46.000Z","size":279,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-07T00:24:33.597Z","etag":null,"topics":["bindgen","ffi","javascript","node-js","typescript","uniffi"],"latest_commit_sha":null,"homepage":"https://github.com/livekit/uniffi-bindgen-node","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/livekit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-28T15:11:32.000Z","updated_at":"2026-02-06T22:36:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/livekit/uniffi-bindgen-node","commit_stats":null,"previous_names":["livekit/uniffi-bindgen-node"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/livekit/uniffi-bindgen-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Funiffi-bindgen-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Funiffi-bindgen-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Funiffi-bindgen-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Funiffi-bindgen-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/livekit","download_url":"https://codeload.github.com/livekit/uniffi-bindgen-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Funiffi-bindgen-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29783615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindgen","ffi","javascript","node-js","typescript","uniffi"],"created_at":"2026-02-24T13:04:27.215Z","updated_at":"2026-02-24T13:04:28.038Z","avatar_url":"https://github.com/livekit.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uniffi-bindgen-node\n\n`uniffi-bindgen-node` is an experimental [uniffi](https://mozilla.github.io/uniffi-rs/latest/)\nbindgen for node.js. It's heavily inspired by much of the excellent work on\n[uniffi-bindgen-react-native](https://github.com/jhugman/uniffi-bindgen-react-native) and\n[uniffi-bindgen-cpp](https://github.com/nordSecurity/uniffi-bindgen-cpp). It generates typescript\nbindings and behind the scenes uses [ffi-rs](https://www.npmjs.com/package/ffi-rs) to load the input\ndynamic library file and call the relevant operations.\n\n\u003e [!WARNING]\n\u003e uniffi-bindgen-node is a work in progress, and doesn't yet support the whole uniffi ffi specification.\n\u003e \n\u003e Implemented features:\n\u003e - Records\n\u003e - Regular function calling\n\u003e - Async function calling\n\u003e - Enums (both bare enums and enums with associated fields)\n\u003e - Objects (multiple constructors, async + regular method calling)\n\u003e - Error enums / exceptions\n\u003e \n\u003e Currently missing features:\n\u003e - Traits (including node -\u003e rust function calls support)\n\u003e - Any sort of comprehensive test suite\n\n## Differences from `uniffi-bindgen-react-native`\nOn the surface, these projects may seem to have similar aims, but there are some important\ndifferences. `uniffi-bindgen-react-native` only supports mobile targets and web targets, and doesn't\nhave explicit node support. In addition, in order to compile the web target, the uniffi rust\nbindings need to be compiled for `wasm32-unknown-unknown`, which depending on what the rust end of\nthe bindings are doing, may prove to be difficult given the lack of standard library availability.\nAlso, the `uniffi-bindgen-react-native` project uses a multi phase build process which fits\nwell into a react native workflow, but is fairly involved. `uniffi-bindgen-node` aims for a model\nmuch closer to the [`python`\nbindings](https://github.com/mozilla/uniffi-rs/tree/5fece7634717279765b4d0d38871b46e85067613/uniffi_bindgen/src/bindings/python),\nwhere the build code bridges the dynamic library to node.js directly.\n\n## Installation\n1. Clone down this repository\n2. Run `cargo install --path .`\n3. `uniffi-bindgen-node` should be in `~/.cargo/bin` - make sure this is part of your `PATH`.\n\n## Usage\nRun `uniffi-bindgen-node generate \u003clib_path\u003e`, passing a dynamic library (`dylib`/`dll`/`so`) build to\nexport a uniffi interface. See `output/` for the results. For more complicated scenarios, run\n`uniffi-bindgen-node --help`.\n\n## Development\nHistorically, local development has consisted of compiling ad hoc dynamic libraries, pointing the\nbindgen at these, and then writing ad hoc scripts to exercise the resulting api interface.\n\nFor the time being, there is no comprehensive test suite. Some of these ad hoc scripts probably\ncould end up being turned into tests.\n\nOn mac / linux, a `test_bindgen.sh` script exists to automate this process. This script will build\nthe bindgen, copy the relevant dynamic library into the proper location, and run your test script\nagainst the bindgen. Example script usage: `./test_bindgen.sh path/to/libexample.dylib path/to/test-script.ts`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Funiffi-bindgen-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivekit%2Funiffi-bindgen-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Funiffi-bindgen-node/lists"}