Add Typescript support via N-API #659
Open
+5,272
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rust → TypeScript Binding Options
Options to consider
1️⃣ Direct N-API with
napi-rs✅ Pros
❌ Cons
2️⃣ WASM with
wasm-bindgen(Browser-Focused)✅ Pros
❌ Cons
gl-sdkdependencies are not WASM-compatibleHigh-Level Comparison
Attempted UniFFI (WASM Approach)
cargo build --release cd ./libs/gl-sdk npm install uniffi-bindgen-react-native --save-dev mkdir -p test-bindings/ts mkdir -p test-bindings/cpp npx uniffi-bindgen-react-native generate wasm bindings --library ../../target/release/libglsdk.so --ts-dir test-bindings/ts --cpp-dir test-bindings/cpp🚨 Critical Compatibility Issue
gl-sdkcannot currently be compiled to WASM.secp256k1-sys-- Requires native C compilation (not WASM-compatible)getrandom-- Requires"js"feature flag at minimumtokio-- Async runtime has WASM limitationsConclusion
gl-sdkdue to native cryptographic and system-level dependencies.napi-rsis the practical and production-ready solution.Next Steps (if we decide to add N-API bindings)