{"version":3,"file":"install.cjs","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */\nimport { spawn } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport {\n  createWriteStream,\n  existsSync,\n  readdirSync,\n  readFileSync,\n  statSync,\n} from 'node:fs';\nimport {\n  chmod,\n  mkdir,\n  readFile,\n  rename,\n  rm,\n  unlink,\n  writeFile,\n} from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { arch as osArch, homedir, platform as osPlatform } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nconst SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';\nconst RELEASE_CACHE_NAMESPACE = 'release';\n\nexport type SolanaTestValidatorArtifactConfig = {\n  platforms: Record<\n    string,\n    SolanaTestValidatorArtifactPlatformConfig | undefined\n  >;\n  version?: string;\n};\n\nexport type SolanaTestValidatorArtifactPlatformConfig = {\n  checksum: string;\n  size?: number;\n  url: string;\n};\n\nexport type SolanaTestValidatorInstallOptions = {\n  binDirectory?: string;\n  cacheDirectory?: string;\n  cwd?: string;\n  platform?: string;\n  release?: SolanaTestValidatorArtifactConfig;\n};\n\nexport type SolanaTestValidatorInstallResult = {\n  binaryPath: string;\n  cacheHit: boolean;\n  checksum: string;\n  solanaBinary: string;\n  validatorBinary: string;\n  version?: string;\n};\n\nexport type SolanaTestValidatorInstallDependencies = {\n  downloadFile?: (url: string, destination: string) => Promise<void>;\n  extractArchive?: (archivePath: string, destination: string) => Promise<void>;\n};\n\ntype SolanaTestValidatorPackageJson = {\n  'solana-test-validator-up'?: SolanaTestValidatorPackageJsonConfig;\n  solanaTestValidatorUp?: SolanaTestValidatorPackageJsonConfig;\n  solanatestvalidatorup?: SolanaTestValidatorPackageJsonConfig;\n};\n\ntype SolanaTestValidatorPackageJsonConfig = Pick<\n  SolanaTestValidatorInstallOptions,\n  'binDirectory' | 'cacheDirectory' | 'release'\n>;\n\nexport const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE: SolanaTestValidatorArtifactConfig =\n  {\n    version: 'v3.1.14',\n    platforms: {\n      'darwin-arm64': {\n        checksum:\n          '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',\n        size: 77_158_067,\n        url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',\n      },\n      'darwin-x64': {\n        checksum:\n          'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',\n        size: 81_239_759,\n        url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',\n      },\n      'linux-x64': {\n        checksum:\n          '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',\n        size: 215_235_690,\n        url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',\n      },\n    },\n  };\n\nexport function getSolanaTestValidatorCacheDirectory({\n  cwd = process.cwd(),\n  homeDirectory = homedir(),\n}: {\n  cwd?: string;\n  homeDirectory?: string;\n} = {}): string {\n  const yarnRcPath = join(cwd, '.yarnrc.yml');\n\n  try {\n    const yarnRc = readFileSync(yarnRcPath, 'utf8');\n    if (/^\\s*enableGlobalCache:\\s*true\\s*$/mu.test(yarnRc)) {\n      return join(homeDirectory, '.cache', 'metamask');\n    }\n  } catch (error) {\n    if (!isFileMissingError(error)) {\n      console.warn(\n        `Warning: Error reading ${yarnRcPath}, using local solana-test-validator-up cache:`,\n        error,\n      );\n    }\n  }\n\n  return join(cwd, '.metamask', 'cache');\n}\n\nexport function readSolanaTestValidatorInstallOptionsFromPackageJson({\n  cwd = process.cwd(),\n  packageJsonPath = join(cwd, 'package.json'),\n}: {\n  cwd?: string;\n  packageJsonPath?: string;\n} = {}): SolanaTestValidatorInstallOptions {\n  const packageJson = JSON.parse(\n    readFileSync(packageJsonPath, 'utf8'),\n  ) as SolanaTestValidatorPackageJson;\n  const config =\n    packageJson.solanaTestValidatorUp ??\n    packageJson.solanatestvalidatorup ??\n    packageJson['solana-test-validator-up'];\n  const options: SolanaTestValidatorInstallOptions = {};\n\n  if (config?.binDirectory) {\n    options.binDirectory = config.binDirectory;\n  }\n  if (config?.cacheDirectory) {\n    options.cacheDirectory = config.cacheDirectory;\n  }\n  if (config?.release) {\n    options.release = config.release;\n  }\n\n  return options;\n}\n\nexport function parseSolanaTestValidatorInstallCliOptions(\n  args: string[],\n): SolanaTestValidatorInstallOptions {\n  const options: SolanaTestValidatorInstallOptions = {};\n  const release: Partial<SolanaTestValidatorArtifactPlatformConfig> = {};\n\n  for (let index = 0; index < args.length; index += 1) {\n    const arg = args[index];\n    const value = args[index + 1];\n\n    switch (arg) {\n      case '--bin-directory':\n        options.binDirectory = readCliValue(arg, value);\n        index += 1;\n        break;\n      case '--cache-directory':\n        options.cacheDirectory = readCliValue(arg, value);\n        index += 1;\n        break;\n      case '--platform':\n        options.platform = readCliValue(arg, value);\n        index += 1;\n        break;\n      case '--release-checksum':\n        release.checksum = readCliValue(arg, value);\n        index += 1;\n        break;\n      case '--release-url':\n        release.url = readCliValue(arg, value);\n        index += 1;\n        break;\n      default:\n        throw new Error(\n          `Unknown solana-test-validator-up install option: ${arg}`,\n        );\n    }\n  }\n\n  if (release.url || release.checksum) {\n    options.release = {\n      platforms: {\n        current: requireCompletePlatformConfig(\n          release,\n          'Solana release CLI options',\n        ),\n      },\n    };\n  }\n\n  return options;\n}\n\nexport async function installSolanaTestValidator(\n  options: SolanaTestValidatorInstallOptions = {},\n  dependencies: SolanaTestValidatorInstallDependencies = {},\n): Promise<SolanaTestValidatorInstallResult> {\n  const cwd = options.cwd ?? process.cwd();\n  const cacheDirectory =\n    options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n  const binDirectory =\n    options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n  const platformKey = options.platform ?? getPlatformKey();\n  const release = options.release ?? SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE;\n  const releaseConfig = resolvePlatformConfig(\n    release,\n    platformKey,\n    'Solana release',\n  );\n  const releaseResult = await installSolanaRelease(\n    { cacheDirectory, config: releaseConfig },\n    dependencies,\n  );\n  const binaryPath = await installExecutableWrapper({\n    binDirectory,\n    commandName: 'solana-test-validator',\n    executablePath: releaseResult.validatorBinary,\n  });\n  await installExecutableWrapper({\n    binDirectory,\n    commandName: 'solana',\n    executablePath: releaseResult.solanaBinary,\n  });\n\n  return {\n    binaryPath,\n    cacheHit: releaseResult.cacheHit,\n    checksum: releaseConfig.checksum,\n    solanaBinary: releaseResult.solanaBinary,\n    validatorBinary: releaseResult.validatorBinary,\n    version: release.version,\n  };\n}\n\nexport async function cleanSolanaTestValidatorCache(\n  options: Pick<\n    SolanaTestValidatorInstallOptions,\n    'cacheDirectory' | 'cwd'\n  > = {},\n): Promise<void> {\n  const cwd = options.cwd ?? process.cwd();\n  const cacheDirectory =\n    options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n\n  await rm(join(cacheDirectory, SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE), {\n    force: true,\n    recursive: true,\n  });\n}\n\nasync function installSolanaRelease(\n  {\n    cacheDirectory,\n    config,\n  }: {\n    cacheDirectory: string;\n    config: SolanaTestValidatorArtifactPlatformConfig;\n  },\n  dependencies: SolanaTestValidatorInstallDependencies,\n): Promise<{\n  cacheHit: boolean;\n  solanaBinary: string;\n  validatorBinary: string;\n}> {\n  const cacheKey = getCacheKey(config);\n  const cacheRoot = join(\n    cacheDirectory,\n    SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n    RELEASE_CACHE_NAMESPACE,\n    cacheKey,\n  );\n  const checksumPath = join(cacheRoot, '.source-checksum');\n  const cached = findSolanaBinaries(cacheRoot);\n\n  if (\n    cached &&\n    existsSync(checksumPath) &&\n    readFileSync(checksumPath, 'utf8') === config.checksum\n  ) {\n    return { cacheHit: true, ...cached };\n  }\n\n  const tempRoot = `${cacheRoot}.downloading`;\n  const archivePath = join(tempRoot, 'solana-release.tar.bz2');\n  const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n  const extractArchive = dependencies.extractArchive ?? extractTarBz2Archive;\n\n  await rm(tempRoot, { force: true, recursive: true });\n  await rm(cacheRoot, { force: true, recursive: true });\n  await mkdir(tempRoot, { recursive: true });\n\n  try {\n    await downloadFile(config.url, archivePath);\n    await verifyFileChecksum(\n      archivePath,\n      config.checksum,\n      'Downloaded Solana release',\n    );\n    await extractArchive(archivePath, tempRoot);\n\n    const binaries = findSolanaBinaries(tempRoot);\n    if (!binaries) {\n      throw new Error(\n        'Solana release archive did not contain bin/solana-test-validator and bin/solana.',\n      );\n    }\n\n    await writeFile(checksumPath.replace(cacheRoot, tempRoot), config.checksum);\n    await mkdir(dirname(cacheRoot), { recursive: true });\n    await rename(tempRoot, cacheRoot);\n\n    return {\n      cacheHit: false,\n      solanaBinary: binaries.solanaBinary.replace(tempRoot, cacheRoot),\n      validatorBinary: binaries.validatorBinary.replace(tempRoot, cacheRoot),\n    };\n  } catch (error) {\n    await rm(tempRoot, { force: true, recursive: true });\n    await rm(cacheRoot, { force: true, recursive: true });\n    throw error;\n  }\n}\n\nasync function installExecutableWrapper({\n  binDirectory,\n  commandName,\n  executablePath,\n}: {\n  binDirectory: string;\n  commandName: string;\n  executablePath: string;\n}): Promise<string> {\n  const binaryPath = join(binDirectory, commandName);\n  const relativeExecutablePath = relative(binDirectory, executablePath);\n\n  await mkdir(binDirectory, { recursive: true });\n  await unlink(binaryPath).catch((error) => {\n    if (!isFileMissingError(error)) {\n      throw error;\n    }\n  });\n  await writeFile(\n    binaryPath,\n    `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst executablePath = path.resolve(__dirname, ${JSON.stringify(relativeExecutablePath)});\nconst result = spawnSync(executablePath, process.argv.slice(2), {\n  stdio: 'inherit',\n});\n\nif (result.error) {\n  console.error(result.error.message);\n  process.exit(1);\n}\n\nif (result.signal) {\n  process.kill(process.pid, result.signal);\n}\n\nprocess.exit(result.status ?? 0);\n`,\n  );\n  await chmod(binaryPath, 0o755);\n\n  return binaryPath;\n}\n\nfunction findSolanaBinaries(\n  root: string,\n): { solanaBinary: string; validatorBinary: string } | undefined {\n  const validatorBinary = findExecutable(root, 'solana-test-validator');\n  const solanaBinary = findExecutable(root, 'solana');\n\n  if (!validatorBinary || !solanaBinary) {\n    return undefined;\n  }\n\n  return { solanaBinary, validatorBinary };\n}\n\nfunction findExecutable(root: string, name: string): string | undefined {\n  if (!existsSync(root)) {\n    return undefined;\n  }\n\n  for (const entry of readdirSync(root)) {\n    const entryPath = join(root, entry);\n    const stat = statSync(entryPath);\n    if (stat.isDirectory()) {\n      const found = findExecutable(entryPath, name);\n      if (found) {\n        return found;\n      }\n    } else if (entry === name) {\n      return entryPath;\n    }\n  }\n\n  return undefined;\n}\n\nfunction resolvePlatformConfig(\n  config: SolanaTestValidatorArtifactConfig,\n  platform: string,\n  label: string,\n): SolanaTestValidatorArtifactPlatformConfig {\n  const platformConfig = config.platforms[platform] ?? config.platforms.current;\n\n  if (!platformConfig) {\n    throw new Error(`No ${label} is configured for ${platform}.`);\n  }\n\n  return platformConfig;\n}\n\nfunction requireCompletePlatformConfig(\n  config: Partial<SolanaTestValidatorArtifactPlatformConfig>,\n  label: string,\n): SolanaTestValidatorArtifactPlatformConfig {\n  if (!config.url || !config.checksum) {\n    throw new Error(`${label} require both a URL and a checksum.`);\n  }\n\n  return {\n    checksum: config.checksum,\n    url: config.url,\n  };\n}\n\nfunction getCacheKey(\n  config: SolanaTestValidatorArtifactPlatformConfig,\n): string {\n  return createHash('sha256')\n    .update(`${config.url}:${config.checksum}`)\n    .digest('hex');\n}\n\nasync function verifyFileChecksum(\n  filePath: string,\n  expectedChecksum: string,\n  label: string,\n): Promise<void> {\n  const checksum = createHash('sha256')\n    .update(await readFile(filePath))\n    .digest('hex');\n\n  if (checksum !== expectedChecksum) {\n    throw new Error(\n      `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n    );\n  }\n}\n\nasync function downloadFileFromUrl(\n  url: string,\n  destination: string,\n): Promise<void> {\n  await mkdir(dirname(destination), { recursive: true });\n  await pipeline(\n    await openDownloadStream(new URL(url)),\n    createWriteStream(destination),\n  );\n}\n\nasync function openDownloadStream(\n  url: URL,\n  redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n  const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n  return await new Promise((resolvePromise, rejectPromise) => {\n    const req = request(url, (response) => {\n      const { headers, statusCode, statusMessage } = response;\n\n      if (\n        statusCode &&\n        statusCode >= 300 &&\n        statusCode < 400 &&\n        headers.location\n      ) {\n        response.resume();\n        if (redirectsRemaining <= 0) {\n          rejectPromise(new Error(`Too many redirects downloading ${url}`));\n          return;\n        }\n\n        openDownloadStream(\n          new URL(headers.location, url),\n          redirectsRemaining - 1,\n        )\n          .then(resolvePromise)\n          .catch(rejectPromise);\n        return;\n      }\n\n      if (!statusCode || statusCode < 200 || statusCode >= 300) {\n        response.resume();\n        rejectPromise(\n          new Error(\n            `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n              statusMessage ?? ''\n            }`.trim(),\n          ),\n        );\n        return;\n      }\n\n      resolvePromise(response);\n    });\n\n    req.on('error', rejectPromise);\n    req.end();\n  });\n}\n\nasync function extractTarBz2Archive(\n  archivePath: string,\n  destination: string,\n): Promise<void> {\n  await runCommand('tar', ['-xjf', archivePath, '-C', destination]);\n}\n\nasync function runCommand(command: string, args: string[]): Promise<void> {\n  await new Promise<void>((resolvePromise, rejectPromise) => {\n    const child = spawn(command, args, {\n      shell: false,\n      stdio: ['ignore', 'ignore', 'pipe'],\n    });\n    let stderr = '';\n\n    child.stderr.on('data', (chunk) => {\n      stderr += chunk.toString();\n    });\n    child.on('error', rejectPromise);\n    child.on('close', (code) => {\n      if (code === 0) {\n        resolvePromise();\n        return;\n      }\n      rejectPromise(\n        new Error(\n          `${command} ${args.join(' ')} failed with code ${code}: ${stderr}`,\n        ),\n      );\n    });\n  });\n}\n\nfunction getPlatformKey(): string {\n  const platform = osPlatform();\n  const arch = osArch();\n\n  if (platform === 'darwin' && arch === 'arm64') {\n    return 'darwin-arm64';\n  }\n  if (platform === 'darwin' && arch === 'x64') {\n    return 'darwin-x64';\n  }\n  if (platform === 'linux' && arch === 'x64') {\n    return 'linux-x64';\n  }\n\n  return `${platform}-${arch}`;\n}\n\nfunction readCliValue(arg: string, value: string | undefined): string {\n  if (!value || value.startsWith('--')) {\n    throw new Error(`${arg} requires a value.`);\n  }\n\n  return value;\n}\n\nfunction isFileMissingError(error: unknown): boolean {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    Object.prototype.hasOwnProperty.call(error, 'code') &&\n    (error as NodeJS.ErrnoException).code === 'ENOENT'\n  );\n}\n"]}