{"_id":"@bun-eth/foundry-deployer","_rev":"4-f150d7a8df7029df2670998b06374f27","name":"@bun-eth/foundry-deployer","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@bun-eth/foundry-deployer","version":"0.2.0","keywords":["foundry","ethereum","deployment","hot-reload"],"license":"MIT","_id":"@bun-eth/foundry-deployer@0.2.0","maintainers":[{"name":"decebal","email":"decebal1988@gmail.com"}],"bin":{"foundry-deployer":"dist/cli.js"},"dist":{"shasum":"57886b64fd8292ff19a928f97d1b2670c6654ee9","tarball":"https://registry.npmjs.org/@bun-eth/foundry-deployer/-/foundry-deployer-0.2.0.tgz","fileCount":18,"integrity":"sha512-w4MzGga/qlmjo8o8HraPPofXbmjG5AmjXlWnMglsSNAX3m/9eO3TPgcQIifw49nEo/6k2+wPNNEhg6wTbYHAzA==","signatures":[{"sig":"MEUCIDP83ZUMoOXjbO795ZTbApwMPdIdRGlp0mKTB6vR2mAsAiEAqa/X///swA3s5oWNHFwHl+ZaARboJ51Xrs4eF26mVWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31968},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"36cff4286800f55ee1853fc4aa156ffdffac8aad","scripts":{"dev":"tsup src/index.ts src/cli.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts src/cli.ts --format cjs,esm --dts","generate":"bun run src/cli.ts"},"_npmUser":{"name":"decebal","email":"decebal1988@gmail.com"},"_npmVersion":"11.5.2","description":"Foundry deployment utilities with contract hot reload support","directories":{},"_nodeVersion":"23.7.0","dependencies":{"glob":"^10.3.10","viem":"^2.7.8","prettier":"^3.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.6.2","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/foundry-deployer_0.2.0_1759548133945_0.5655987567853675","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bun-eth/foundry-deployer","version":"0.2.1","keywords":["foundry","ethereum","deployment","hot-reload"],"license":"MIT","_id":"@bun-eth/foundry-deployer@0.2.1","maintainers":[{"name":"decebal","email":"decebal1988@gmail.com"}],"bin":{"foundry-deployer":"src/cli.ts"},"dist":{"shasum":"25df88fc991e1110793126816a774f7051cc8b71","tarball":"https://registry.npmjs.org/@bun-eth/foundry-deployer/-/foundry-deployer-0.2.1.tgz","fileCount":18,"integrity":"sha512-CtPU8NkvCZCLIdMS50ix6BSQrpyQLDpY0dEv6E7DqwPYsj9LvmvYxMRv2iH5T8AvuiJH4xlHB7TXMDkMjzmttA==","signatures":[{"sig":"MEQCIBdsqSgiU+OA3Fz0lR84EFDPvDwdxbDlOf+vzeJFBf3xAiBZyFHZA1J0EvXCPGdykfROAEAm3TiNm1/8KUw+54QWaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35515},"main":"./src/index.ts","types":"./src/index.ts","module":"./src/index.ts","exports":{".":{"bun":"./src/index.ts","import":"./src/index.ts","require":"./src/index.ts"}},"gitHead":"48c073ff589ebeddfc5c833b5a7e96dffa03aa22","scripts":{"dev":"echo 'No dev build needed - import source files directly'","build":"echo 'No build needed - Bun uses TypeScript directly'","generate":"bun run src/cli.ts"},"_npmUser":{"name":"decebal","email":"decebal1988@gmail.com"},"_npmVersion":"11.5.2","description":"Foundry deployment utilities with contract hot reload support","directories":{},"_nodeVersion":"23.7.0","dependencies":{"glob":"^10.3.10","viem":"^2.7.8","prettier":"^3.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.6.2","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/foundry-deployer_0.2.1_1760751203185_0.27267281457570314","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@bun-eth/foundry-deployer","version":"0.2.2","keywords":["foundry","ethereum","deployment","hot-reload"],"license":"MIT","_id":"@bun-eth/foundry-deployer@0.2.2","maintainers":[{"name":"decebal","email":"decebal1988@gmail.com"}],"bin":{"foundry-deployer":"src/cli.ts"},"dist":{"shasum":"2525bdc94418912ae0730bb1796673ef67661612","tarball":"https://registry.npmjs.org/@bun-eth/foundry-deployer/-/foundry-deployer-0.2.2.tgz","fileCount":19,"integrity":"sha512-IcJiLQmqrKSRzz6VaQ3jMUIUEq/IlRLXu5lNliGYuj2qgYpvk1D6COv4nPoruO19NxG19gwyI1bhvmd4zyUqig==","signatures":[{"sig":"MEUCICSuPW4lVj97XNnpuO95dQ0SI0E/clkfw0H+qkqP/xnBAiEAotQT4jfIKkcArB2T/+8GesgCah5Xz8dxhizuA6chgbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35691},"main":"./src/index.ts","types":"./src/index.ts","module":"./src/index.ts","exports":{".":{"bun":"./src/index.ts","import":"./src/index.ts","require":"./src/index.ts"}},"gitHead":"0e1eea35310744a8ba6e5abc0f2dfa23ac5a1b25","scripts":{"dev":"echo 'No dev build needed - import source files directly'","build":"echo 'No build needed - Bun uses TypeScript directly'","generate":"bun run src/cli.ts"},"_npmUser":{"name":"decebal","email":"decebal1988@gmail.com"},"_npmVersion":"11.6.2","description":"Foundry deployment utilities with contract hot reload support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"glob":"^10.3.10","viem":"^2.7.8","prettier":"^3.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.6.2","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/foundry-deployer_0.2.2_1768915625934_0.002023649621633039","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bun-eth/foundry-deployer","version":"0.3.0","description":"Foundry deployment utilities with contract hot reload support","bin":{"foundry-deployer":"dist/cli.mjs"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"bun":"./src/index.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"build":"tsup","dev":"tsup --watch","generate":"bun run src/cli.ts","prepublishOnly":"bun run build"},"dependencies":{"glob":"^10.3.10","prettier":"^3.2.4","viem":"^2.7.8"},"devDependencies":{"@types/node":"^20.11.5","tsup":"^8.5.1","typescript":"^5.6.2"},"keywords":["foundry","ethereum","deployment","hot-reload"],"license":"MIT","gitHead":"09767f7fff984089f8dd69753836127fef95cb4a","_id":"@bun-eth/foundry-deployer@0.3.0","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-/G6t3emFIjUKsY+WScGmUrCBJ/19AEoZvZ9xxj7Wb3JMWpV72ZdY/uznhkBMrqsZm4L2QE0MDjmIRtxxoHMFyA==","shasum":"d7fa757179708068ad73f285ba6a9c78c0339b6d","tarball":"https://registry.npmjs.org/@bun-eth/foundry-deployer/-/foundry-deployer-0.3.0.tgz","fileCount":15,"unpackedSize":53211,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDmDVsFUpdFkNXyGYLOI6qvcfwwSBniqIB8bnsecRosCwIhALZCl0Uly1kIxithwlhpligIy3nHACChEYwO/0iqQjEZ"}]},"_npmUser":{"name":"decebal","email":"decebal1988@gmail.com"},"directories":{},"maintainers":[{"name":"decebal","email":"decebal1988@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/foundry-deployer_0.3.0_1768940344141_0.5429466448038103"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-04T03:22:13.877Z","modified":"2026-01-20T20:19:04.383Z","0.2.0":"2025-10-04T03:22:14.157Z","0.2.1":"2025-10-18T01:33:23.398Z","0.2.2":"2026-01-20T13:27:06.088Z","0.3.0":"2026-01-20T20:19:04.277Z"},"license":"MIT","keywords":["foundry","ethereum","deployment","hot-reload"],"description":"Foundry deployment utilities with contract hot reload support","maintainers":[{"name":"decebal","email":"decebal1988@gmail.com"}],"readme":"# @bun-eth/foundry-deployer\n\nFoundry deployment utilities with contract hot reload support for Bun-Eth.\n\n## Features\n\n- 🔥 **Contract Hot Reload** - Auto-generate TypeScript from Foundry deployments\n- ⚡ **Bun-Native** - Fast execution with Bun runtime\n- 🎯 **Type-Safe** - Generated contracts have full TypeScript support\n- 🌐 **Multi-Chain** - Support for multiple networks\n- 🔄 **Auto-Update** - Next.js Fast Refresh integration\n\n## How It Works\n\n1. **Deploy with Foundry**: Run `forge script` to deploy contracts\n2. **Generate TypeScript**: This package reads Foundry's broadcast artifacts\n3. **Hot Reload**: Next.js detects the file change and updates the UI automatically\n\n## Installation\n\n```bash\nbun add @bun-eth/foundry-deployer\n```\n\n## Usage\n\n### As a Script\n\nAdd to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"generate:contracts\": \"foundry-deployer\"\n  }\n}\n```\n\nRun after deploying:\n\n```bash\nforge script script/Deploy.s.sol:DeployScript --broadcast\nbun run generate:contracts\n```\n\n### Programmatic\n\n```typescript\nimport { generateDeployedContracts } from \"@bun-eth/foundry-deployer\";\n\nawait generateDeployedContracts({\n  foundryRoot: \"./packages/contracts\",\n  outputPath: \"./packages/contracts/deployedContracts.ts\",\n  networks: {\n    31337: { name: \"localhost\", deploymentDir: \"31337\" },\n    1: { name: \"mainnet\", deploymentDir: \"1\" },\n  },\n});\n```\n\n### With Foundry Post-Deploy Hook\n\nAdd to `foundry.toml`:\n\n```toml\n[profile.default]\npost_deploy = \"bun run generate:contracts\"\n```\n\nNow contracts auto-generate after every deployment!\n\n## Generated File Structure\n\n```typescript\n// packages/contracts/deployedContracts.ts\nconst deployedContracts = {\n  31337: {\n    SimpleStorage: {\n      address: \"0x5FbDB2315678afecb367f032d93F642f64180aa3\",\n      abi: [...]\n    }\n  }\n} as const;\n\nexport default deployedContracts;\n```\n\n## Integration with Hooks\n\nThe generated file works seamlessly with `@bun-eth/hooks`:\n\n```typescript\nimport { useScaffoldReadContract } from \"@bun-eth/hooks\";\n\n// Contract name and ABI are auto-loaded from deployedContracts.ts\nconst { data } = useScaffoldReadContract({\n  contractName: \"SimpleStorage\", // Type-safe!\n  functionName: \"retrieve\",\n});\n```\n\n## Configuration\n\n### Custom Networks\n\n```typescript\nawait generateDeployedContracts({\n  foundryRoot: \"./contracts\",\n  outputPath: \"./src/contracts/deployedContracts.ts\",\n  networks: {\n    31337: { name: \"localhost\", deploymentDir: \"31337\" },\n    1: { name: \"mainnet\", deploymentDir: \"1\" },\n    10: { name: \"optimism\", deploymentDir: \"10\" },\n    8453: { name: \"base\", deploymentDir: \"8453\" },\n  },\n});\n```\n\n### Custom Output Location\n\nYou can place the generated file anywhere:\n\n```typescript\n{\n  outputPath: \"./apps/web/src/contracts/deployedContracts.ts\"\n}\n```\n\n## Foundry Broadcast Structure\n\nThis package expects Foundry's standard broadcast structure:\n\n```\npackages/contracts/\n├── broadcast/\n│   └── Deploy.s.sol/\n│       ├── 31337/\n│       │   └── run-latest.json\n│       └── 1/\n│           └── run-latest.json\n└── out/\n    └── SimpleStorage.sol/\n        └── SimpleStorage.json\n```\n\n## Hot Reload Flow\n\n```\n┌─────────────────────────────────────────────────┐\n│ 1. Deploy Contracts (forge script)             │\n└─────────────────┬───────────────────────────────┘\n                  │\n                  ▼\n┌─────────────────────────────────────────────────┐\n│ 2. Foundry writes to broadcast/               │\n└─────────────────┬───────────────────────────────┘\n                  │\n                  ▼\n┌─────────────────────────────────────────────────┐\n│ 3. foundry-deployer generates TypeScript       │\n└─────────────────┬───────────────────────────────┘\n                  │\n                  ▼\n┌─────────────────────────────────────────────────┐\n│ 4. deployedContracts.ts file updated           │\n└─────────────────┬───────────────────────────────┘\n                  │\n                  ▼\n┌─────────────────────────────────────────────────┐\n│ 5. Next.js Fast Refresh detects change         │\n└─────────────────┬───────────────────────────────┘\n                  │\n                  ▼\n┌─────────────────────────────────────────────────┐\n│ 6. React components re-render with new data 🎉 │\n└─────────────────────────────────────────────────┘\n```\n\n## API\n\n### `generateDeployedContracts(config)`\n\nGenerates the TypeScript contracts file.\n\n**Parameters:**\n- `config.foundryRoot` - Path to Foundry project root\n- `config.outputPath` - Where to write the generated file\n- `config.networks` - Networks to include (optional)\n\n**Returns:** `Promise<void>`\n\n### `loadFoundryDeployment(foundryRoot, chainId)`\n\nLoads deployment data for a specific chain.\n\n**Parameters:**\n- `foundryRoot` - Path to Foundry project root\n- `chainId` - Chain ID to load\n\n**Returns:** `FoundryDeployment`\n\n## Requirements\n\n- Foundry installed and configured\n- Bun runtime\n- Valid Foundry deployment artifacts\n\n## License\n\nMIT\n","readmeFilename":"README.md"}