{"path":"lib/deploy.js","size":1959,"locked":false,"binary":false,"truncated":false,"content":"import { readConfig } from './config.js';\nimport { runBuild } from './build.js';\nimport { uploadToStoracha } from './storacha.js';\nimport { uploadToFilebase } from './filebase.js';\nimport { writeIpfsRecord } from './sns.js';\n\n// Supported pinning providers. Storacha is the MVP default; Filebase is an\n// alternate for when Storacha's upload endpoint is unavailable (see\n// lib/filebase.js). This is a simple switch, not a multi-provider\n// abstraction — that's explicitly deferred scope (docs/ROADMAP.md).\nconst PROVIDERS = {\n  storacha: uploadToStoracha,\n  filebase: uploadToFilebase\n};\n\nexport async function runDeploy() {\n  const cwd = process.cwd();\n  const config = readConfig(cwd);\n\n  const providerName = config.provider || 'storacha';\n  const upload = PROVIDERS[providerName];\n  if (!upload) {\n    throw new Error(\n      `Unknown provider \"${providerName}\" in anchr.json. Supported: ${Object.keys(PROVIDERS).join(', ')}`\n    );\n  }\n\n  runBuild(cwd, config.buildCommand);\n\n  console.log(`\\n📤 Uploading build output via ${providerName}...`);\n  const buildPath = `${cwd}/${config.outputDir}`;\n  const { cid, gatewayUrl } = await upload(buildPath);\n  console.log(`✅ Pinned! CID: ${cid}`);\n  console.log(`🌐 Gateway preview: ${gatewayUrl}`);\n\n  if (!config.domain) {\n    console.log(\n      '\\nℹ️  No domain set in anchr.json — skipping the .sol record write. ' +\n      'Your site is pinned and reachable at the gateway URL above; add a ' +\n      '\"domain\" once you own one to also get it live at yourdomain.sol.'\n    );\n    return;\n  }\n\n  console.log(`\\n⛓️  Writing IPFS record to ${config.domain}.sol...`);\n  const { signature, explorerUrl } = await writeIpfsRecord(config.domain, cid);\n  console.log(`✅ SNS record updated. Signature: ${signature}`);\n  console.log(`   Explorer: ${explorerUrl}`);\n\n  console.log(\n    `\\n🚀 Live at: ${config.domain}.sol (resolvable via SNS-aware tools like Brave Browser or sol-domain.org)`\n  );\n}\n"}