diff --git a/keyserver/addons/rust-node-addon/index.js b/keyserver/addons/rust-node-addon/index.js index 8c50f7728..946d01dcd 100644 --- a/keyserver/addons/rust-node-addon/index.js +++ b/keyserver/addons/rust-node-addon/index.js @@ -1,41 +1,48 @@ // @flow +import invariant from 'invariant'; +import { createRequire } from 'module'; + const { platform, arch } = process; +const importMetaURL = import.meta.url; +invariant(importMetaURL, 'import.meta.url should be set'); +const require = createRequire(importMetaURL); + type RustAPI = { +registerUser: ( userId: string, deviceId: string, username: string, password: string, userPublicKey: string, ) => Promise, }; async function getRustAPI(): Promise { let nativeBinding = null; if (platform === 'darwin' && arch === 'x64') { // $FlowFixMe - nativeBinding = await import('./napi/rust-node-addon.darwin-x64.node'); + nativeBinding = require('./napi/rust-node-addon.darwin-x64.node'); } else if (platform === 'darwin' && arch === 'arm64') { // $FlowFixMe - nativeBinding = await import('./napi/rust-node-addon.darwin-arm64.node'); + nativeBinding = require('./napi/rust-node-addon.darwin-arm64.node'); } else if (platform === 'linux' && arch === 'x64') { // $FlowFixMe - nativeBinding = await import('./napi/rust-node-addon.linux-x64-gnu.node'); + nativeBinding = require('./napi/rust-node-addon.linux-x64-gnu.node'); } else if (platform === 'linux' && arch === 'arm64') { // $FlowFixMe - nativeBinding = await import('./napi/rust-node-addon.linux-arm64-gnu.node'); + nativeBinding = require('./napi/rust-node-addon.linux-arm64-gnu.node'); } else { throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`); } if (!nativeBinding) { throw new Error('Failed to load native binding'); } - const { registerUser } = nativeBinding.default; + const { registerUser } = nativeBinding; return { registerUser }; } export { getRustAPI }; diff --git a/keyserver/addons/rust-node-addon/package.json b/keyserver/addons/rust-node-addon/package.json index f9204e505..d6203ff8c 100644 --- a/keyserver/addons/rust-node-addon/package.json +++ b/keyserver/addons/rust-node-addon/package.json @@ -1,40 +1,43 @@ { "workspaces": { "nohoist": [ "@napi-rs/cli" ] }, "private": true, "name": "rust-node-addon", "version": "0.0.1", "main": "index.js", "type": "module", "napi": { "name": "rust-node-addon", "triples": { "defaults": false, "additional": [ "x86_64-apple-darwin", "aarch64-apple-darwin", "x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu" ] } }, "license": "BSD-3-Clause", + "dependencies": { + "invariant": "^2.2.4" + }, "devDependencies": { "@napi-rs/cli": "^2.13.0" }, "engines": { "node": ">= 16" }, "scripts": { "artifacts": "napi artifacts", "build": "yarn install-ci-deps && napi build --platform napi --release", "build:debug": "napi build --platform napi", "version": "napi version", "postinstall": "bash ./postinstall.sh", "clean": "rm -rf target/ && rm -rf napi/ && rm -rf node_modules/", "install-ci-deps": "bash ./install_ci_deps.sh" } }