#!/usr/bin/env node const { spawnSync } = require("child_process"); const path = require("path"); const PLATFORMS = { "darwin arm64": ["@socketsecurity/socket-patch-darwin-arm64"], "darwin x64": ["@socketsecurity/socket-patch-darwin-x64"], "linux x64": ["@socketsecurity/socket-patch-linux-x64-gnu", "@socketsecurity/socket-patch-linux-x64-musl"], "linux arm64": ["@socketsecurity/socket-patch-linux-arm64-gnu", "@socketsecurity/socket-patch-linux-arm64-musl"], "linux arm": ["@socketsecurity/socket-patch-linux-arm-gnu", "@socketsecurity/socket-patch-linux-arm-musl"], "linux ia32": ["@socketsecurity/socket-patch-linux-ia32-gnu", "@socketsecurity/socket-patch-linux-ia32-musl"], "win32 x64": ["@socketsecurity/socket-patch-win32-x64"], "win32 ia32": ["@socketsecurity/socket-patch-win32-ia32"], "win32 arm64": ["@socketsecurity/socket-patch-win32-arm64"], "android arm64": ["@socketsecurity/socket-patch-android-arm64"], }; const key = `${process.platform} ${process.arch}`; const candidates = PLATFORMS[key]; if (!candidates) { console.error(`Unsupported platform: ${key}`); process.exit(1); } const exe = process.platform === "win32" ? "socket-patch.exe" : "socket-patch"; let binPath; for (const pkg of candidates) { try { const pkgDir = path.dirname(require.resolve(`${pkg}/package.json`)); binPath = path.join(pkgDir, exe); break; } catch {} } if (!binPath) { // Fallback: try local bin directory (for development or bundled installs) const localBin = process.platform === "win32" ? `socket-patch-${key.replace(" ", "-")}.exe` : `socket-patch-${key.replace(" ", "-")}`; binPath = path.join(__dirname, localBin); } const result = spawnSync(binPath, process.argv.slice(2), { stdio: "inherit", env: process.env, }); process.exit(result.status ?? 1);