pcsc-mini
Version:
PC/SC (smart card) API bindings for Linux, MacOS, and Win32.
92 lines (80 loc) • 2.27 kB
JavaScript
// [Tokota] Auto-generated.
/* eslint-disable */
const fs = require("node:fs");
let pkg;
const abi = detectAbi();
const target = (abi)
? `${process.platform}-${process.arch}-${abi}`
: `${process.platform}-${process.arch}`;
switch (target) {
case "linux-arm64-glibc":
pkg = "@pcsc-mini/linux-aarch64-gnu";
break;
case "linux-arm64-musl":
pkg = "@pcsc-mini/linux-aarch64-musl";
break;
case "linux-x64-glibc":
pkg = "@pcsc-mini/linux-x86_64-gnu";
break;
case "linux-x64-musl":
pkg = "@pcsc-mini/linux-x86_64-musl";
break;
case "linux-ia32-glibc":
pkg = "@pcsc-mini/linux-x86-gnu";
break;
case "linux-ia32-musl":
pkg = "@pcsc-mini/linux-x86-musl";
break;
case "darwin-arm64":
pkg = "@pcsc-mini/macos-aarch64";
break;
case "darwin-x64":
pkg = "@pcsc-mini/macos-x86_64";
break;
case "win32-arm64-bun":
pkg = "@pcsc-mini/windows-aarch64-bun";
break;
case "win32-arm64-electron":
pkg = "@pcsc-mini/windows-aarch64-electron";
break;
case "win32-arm64-node":
pkg = "@pcsc-mini/windows-aarch64-node";
break;
case "win32-x64-bun":
pkg = "@pcsc-mini/windows-x86_64-bun";
break;
case "win32-x64-electron":
pkg = "@pcsc-mini/windows-x86_64-electron";
break;
case "win32-x64-node":
pkg = "@pcsc-mini/windows-x86_64-node";
break;
default:
throw new Error(`Unsupported platform: ${target}`);
}
try {
module.exports = require(pkg);
} catch (error) {
throw new Error(
`Required addon dependency not found (${pkg}):\n${error}\n\n` +
`⚠ NOTE: If optional dependencies are disabled, you may need ` +
`to add ${pkg} as an explicit dependency.\n`
);
}
function detectAbi() {
if (process.platform === "win32") {
if (process.versions.bun) return "bun";
if (process.versions.electron) return "electron";
return "node";
}
if (process.platform !== "linux") return null;
try {
const lddContents = fs.readFileSync("/usr/bin/ldd", "utf8");
if (lddContents.includes("GLIBC")) return "glibc";
if (lddContents.includes("musl")) return "musl";
} catch {}
if (process.report?.getReport()?.header.glibcVersionRuntime) {
return "glibc";
}
throw new Error("Unable to detect Linux ABI");
}