diff --git a/.gitignore b/.gitignore index 705f9921..4f5cbc63 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,7 @@ # Built files -/*.js -!node-swc/jest.config.js /*.map -/*.d.ts -native/artifacts.json -artifacts.json *.node *.tmp_node_swc_fixture_test -/scripts/npm/**/swc -/scripts/npm/**/swc.exe .yarn/ target/ diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..501f590a --- /dev/null +++ b/index.d.ts @@ -0,0 +1,11 @@ +/* tslint:disable */ +/* eslint-disable */ + +/* auto-generated by NAPI-RS */ + +export type JsHello = Hello +export class Hello { + constructor() + echo(query: string): Promise + sayHello(): string +} diff --git a/index.js b/index.js new file mode 100644 index 00000000..59635211 --- /dev/null +++ b/index.js @@ -0,0 +1,300 @@ +/* tslint:disable */ +/* eslint-disable */ +/* prettier-ignore */ + +/* auto-generated by NAPI-RS */ + +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') + +const { platform, arch } = process + +let nativeBinding = null +let localFileExisted = false +let loadError = null + +function isMusl() { + // For Node 10 + if (!process.report || typeof process.report.getReport !== 'function') { + try { + const lddPath = require('child_process').execSync('which ldd').toString().trim() + return readFileSync(lddPath, 'utf8').includes('musl') + } catch (e) { + return true + } + } else { + const { glibcVersionRuntime } = process.report.getReport().header + return !glibcVersionRuntime + } +} + +switch (platform) { + case 'android': + switch (arch) { + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'walletkit.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.android-arm64.node') + } else { + nativeBinding = require('@worldcoin/walletkit-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'walletkit.android-arm-eabi.node')) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.android-arm-eabi.node') + } else { + nativeBinding = require('@worldcoin/walletkit-android-arm-eabi') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Android ${arch}`) + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync( + join(__dirname, 'walletkit.win32-x64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.win32-x64-msvc.node') + } else { + nativeBinding = require('@worldcoin/walletkit-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync( + join(__dirname, 'walletkit.win32-ia32-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.win32-ia32-msvc.node') + } else { + nativeBinding = require('@worldcoin/walletkit-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'walletkit.win32-arm64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.win32-arm64-msvc.node') + } else { + nativeBinding = require('@worldcoin/walletkit-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + localFileExisted = existsSync(join(__dirname, 'walletkit.darwin-universal.node')) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.darwin-universal.node') + } else { + nativeBinding = require('@worldcoin/walletkit-darwin-universal') + } + break + } catch {} + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'walletkit.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.darwin-x64.node') + } else { + nativeBinding = require('@worldcoin/walletkit-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'walletkit.darwin-arm64.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.darwin-arm64.node') + } else { + nativeBinding = require('@worldcoin/walletkit-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'walletkit.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.freebsd-x64.node') + } else { + nativeBinding = require('@worldcoin/walletkit-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-x64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-x64-musl.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-x64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-x64-gnu.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-arm64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-arm64-musl.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-arm64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-arm64-gnu.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-arm-gnueabihf.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + case 'riscv64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-riscv64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-riscv64-musl.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-riscv64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-riscv64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-riscv64-gnu.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-riscv64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 's390x': + localFileExisted = existsSync( + join(__dirname, 'walletkit.linux-s390x-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./walletkit.linux-s390x-gnu.node') + } else { + nativeBinding = require('@worldcoin/walletkit-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) +} + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) +} + +const { Hello } = nativeBinding + +module.exports.Hello = Hello