create-stylus 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/package.json +1 -1
  2. package/templates/base/.gitignore.template.mjs +2 -2
  3. package/templates/base/dist/cli.js +683 -0
  4. package/templates/base/dist/cli.js.map +1 -0
  5. package/templates/base/package.json +1 -0
  6. package/templates/base/packages/nextjs/.gitignore.template.mjs +3 -3
  7. package/templates/base/packages/nextjs/scaffold.config.ts +2 -2
  8. package/templates/base/packages/stylus/.env.example +5 -2
  9. package/templates/base/packages/stylus/.gitignore.template.mjs +3 -3
  10. package/templates/base/packages/stylus/package.json +0 -1
  11. package/templates/base/packages/stylus/scripts/deploy.ts +29 -12
  12. package/templates/base/packages/stylus/scripts/deploy_contract.ts +34 -43
  13. package/templates/base/packages/stylus/scripts/deploy_wrapper.ts +4 -44
  14. package/templates/base/packages/stylus/scripts/export_abi.ts +13 -13
  15. package/templates/base/packages/stylus/scripts/utils/command.ts +18 -31
  16. package/templates/base/packages/stylus/scripts/utils/contract.ts +23 -14
  17. package/templates/base/packages/stylus/scripts/utils/deployment.ts +169 -45
  18. package/templates/base/packages/stylus/scripts/utils/network.ts +27 -7
  19. package/templates/base/packages/stylus/scripts/utils/type.ts +13 -10
  20. package/templates/base/packages/stylus/your-contract/Cargo.lock +35 -18
  21. package/templates/base/packages/stylus/your-contract/Cargo.toml +3 -1
  22. package/templates/base/packages/stylus/your-contract/src/lib.rs +51 -21
  23. package/templates/base/readme.md +208 -43
  24. package/templates/base/yarn.lock +1 -2
  25. package/templates/base/packages/stylus/README.md +0 -263
  26. package/templates/base/packages/stylus/header.png +0 -0
  27. package/templates/base/packages/stylus/scripts/deploy_all_contracts.ts +0 -59
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sources":["../src/types.ts","../src/utils/consts.ts","../src/utils/extensions-tree.ts","../src/utils/find-files-recursively.ts","../src/utils/merge-package-json.ts","../src/utils/link.ts","../src/tasks/copy-template-files.ts","../src/tasks/create-project-directory.ts","../src/tasks/install-packages.ts","../src/tasks/create-first-git-commit.ts","../src/tasks/prettier-format.ts","../src/utils/render-outro-message.ts","../src/main.ts","../src/utils/parse-arguments-into-options.ts","../src/config.ts","../src/utils/prompt-for-missing-options.ts","../src/utils/render-intro-message.ts","../src/cli.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["link"],"mappings":"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"}
@@ -23,6 +23,7 @@
23
23
  "stylus:format": "yarn workspace @ss/stylus format",
24
24
  "stylus:test": "yarn workspace @ss/stylus test",
25
25
  "test": "yarn stylus:test",
26
+ "test:networks": "yarn workspace @ss/stylus test:networks",
26
27
  "format": "yarn next:format",
27
28
  "start": "yarn workspace @ss/nextjs dev",
28
29
  "next:lint": "yarn workspace @ss/nextjs lint",
@@ -1,4 +1,4 @@
1
- const contents = () =>
1
+ const contents = () =>
2
2
  `# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
3
3
 
4
4
  # dependencies
@@ -37,6 +37,6 @@ yarn-error.log*
37
37
  # typescript
38
38
  *.tsbuildinfo
39
39
 
40
- ipfs-upload.config.json`;
40
+ ipfs-upload.config.json`
41
41
 
42
- export default contents;
42
+ export default contents;
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
+
3
3
  import { arbitrumNitro } from "./utils/scaffold-stylus/chain";
4
4
  import * as chains from "viem/chains";
5
5
 
@@ -17,7 +17,7 @@ export const DEFAULT_ALCHEMY_API_KEY = "oKxs-03sij-U_N0iOlrSsZFr29-IqbuF";
17
17
 
18
18
  const scaffoldConfig = {
19
19
  // The networks on which your DApp is live
20
- targetNetworks: [chains.arbitrumSepolia],
20
+ targetNetworks: [arbitrumNitro],
21
21
 
22
22
  // The interval at which your front-end polls the RPC servers for new data
23
23
  // it has no effect if you only target the local network (default is 4000)
@@ -1,13 +1,16 @@
1
1
  DEPLOYMENT_DIR=
2
2
 
3
3
  ## devnet
4
- RPC_URL=
5
- PRIVATE_KEY=
4
+ # ACCOUNT_ADDRESS=
5
+ # RPC_URL=
6
+ # PRIVATE_KEY=
6
7
 
7
8
  ## sepolia
9
+ ACCOUNT_ADDRESS_SEPOLIA=
8
10
  RPC_URL_SEPOLIA=
9
11
  PRIVATE_KEY_SEPOLIA=
10
12
 
11
13
  ## mainnet
14
+ ACCOUNT_ADDRESS_MAINNET=
12
15
  RPC_URL_MAINNET=
13
16
  PRIVATE_KEY_MAINNET=
@@ -1,7 +1,7 @@
1
- const contents = () =>
1
+ const contents = () =>
2
2
  `target
3
3
  .env
4
4
  node_modules
5
- deployments`;
5
+ deployments`
6
6
 
7
- export default contents;
7
+ export default contents;
@@ -37,7 +37,6 @@
37
37
  "yargs": "^17.7.2"
38
38
  },
39
39
  "dependencies": {
40
- "@tanstack/react-query": "^5.81.5",
41
40
  "abitype": "^1.0.8",
42
41
  "dotenv": "^16.0.0",
43
42
  "ethers": "^6.15.0",
@@ -1,29 +1,46 @@
1
1
  import deployStylusContract from "./deploy_contract";
2
- import {
3
- getDeploymentConfig,
4
- printDeployedAddresses,
5
- } from "./utils/";
2
+ import { getDeploymentConfig, printDeployedAddresses } from "./utils/";
6
3
  import { DeployOptions } from "./utils/type";
4
+ import { config as dotenvConfig } from "dotenv";
5
+ import * as path from "path";
6
+ import * as fs from "fs";
7
+
8
+ const envPath = path.resolve(__dirname, "../.env");
9
+ if (fs.existsSync(envPath)) {
10
+ dotenvConfig({ path: envPath });
11
+ }
7
12
 
8
13
  /**
9
14
  * Define your deployment logic here
10
15
  */
11
16
  export default async function deployScript(deployOptions: DeployOptions) {
17
+ const config = getDeploymentConfig(deployOptions);
18
+
19
+ console.log(`📡 Using endpoint: ${config.chain?.rpcUrl}`);
20
+ if (config.chain) {
21
+ console.log(`🌐 Network: ${config.chain?.name}`);
22
+ console.log(`🔗 Chain ID: ${config.chain?.id}`);
23
+ }
24
+ console.log(`🔑 Using private key: ${config.privateKey.substring(0, 10)}...`);
25
+ console.log(`📁 Deployment directory: ${config.deploymentDir}`);
26
+ console.log(`\n`);
27
+
12
28
  // Deploy a single contract
13
29
  await deployStylusContract({
14
30
  contract: "your-contract",
31
+ constructorArgs: [config.deployerAddress!],
15
32
  ...deployOptions,
16
33
  });
17
34
 
18
- // deploy your contract with a custom name
19
- await deployStylusContract({
20
- contract: "your-contract",
21
- name: "my-contract",
22
- ...deployOptions,
23
- });
35
+ /// Deploy your contract with a custom name
36
+ // await deployStylusContract({
37
+ // contract: "your-contract",
38
+ // constructorArgs: [config.deployerAddress],
39
+ // name: "my-contract",
40
+ // ...deployOptions,
41
+ // });
24
42
 
25
43
  // Print the deployed addresses
26
- const config = getDeploymentConfig(deployOptions);
27
44
  console.log("\n\n");
28
- printDeployedAddresses(config.deploymentDir);
45
+ printDeployedAddresses(config.deploymentDir, config.chain?.id);
29
46
  }
@@ -2,17 +2,12 @@ import {
2
2
  getDeploymentConfig,
3
3
  ensureDeploymentDirectory,
4
4
  executeCommand,
5
- generateContractAddress,
6
- extractDeployedAddress,
7
- saveDeployedAddress,
8
- clearDeploymentDir,
5
+ extractDeploymentInfo,
6
+ saveDeployment,
9
7
  // estimateGasPrice,
10
8
  } from "./utils/";
11
9
  import { exportStylusAbi } from "./export_abi";
12
- import {
13
- DeployOptions,
14
- AdditionalOptions,
15
- } from "./utils/type";
10
+ import { DeployOptions } from "./utils/type";
16
11
  import { buildDeployCommand } from "./utils/command";
17
12
 
18
13
  /**
@@ -23,34 +18,14 @@ import { buildDeployCommand } from "./utils/command";
23
18
  */
24
19
  export default async function deployStylusContract(
25
20
  deployOptions: DeployOptions,
26
- additionalOptions: AdditionalOptions = {
27
- isSingleCommand: true,
28
- shouldClearDeploymentDir: false,
29
- },
30
21
  ) {
31
22
  console.log(`\n🚀 Deploying contract in: ${deployOptions.contract}`);
32
23
 
33
24
  const config = getDeploymentConfig(deployOptions);
34
- if (additionalOptions.shouldClearDeploymentDir) {
35
- clearDeploymentDir();
36
- ensureDeploymentDirectory(config.deploymentDir);
37
- }
25
+ ensureDeploymentDirectory(config.deploymentDir);
38
26
 
39
27
  console.log(`📄 Contract name: ${config.contractName}`);
40
28
 
41
- config.contractAddress = generateContractAddress();
42
-
43
- if (additionalOptions.isSingleCommand) {
44
- console.log(`📡 Using endpoint: ${config.chain?.rpcUrl}`);
45
- if (config.chain) {
46
- console.log(`🌐 Network specified: ${config.chain?.name}`);
47
- }
48
- console.log(
49
- `🔑 Using private key: ${config.privateKey.substring(0, 10)}...`,
50
- );
51
- console.log(`📁 Deployment directory: ${config.deploymentDir}`);
52
- }
53
-
54
29
  try {
55
30
  // Step 1: Deploy the contract using cargo stylus with contract address
56
31
  // --contract-address='${config.contractAddress}' deactivated for now as it's not working. Issue https://github.com/OffchainLabs/cargo-stylus/issues/171
@@ -63,31 +38,47 @@ export default async function deployStylusContract(
63
38
 
64
39
  if (deployOptions.estimateGas) {
65
40
  console.log(deployOutput);
66
- process.exit(0);
41
+ return;
67
42
  }
68
43
 
69
44
  // Extract the actual deployed address from the output
70
- const deployedAddress = extractDeployedAddress(deployOutput);
71
- if (deployedAddress) {
72
- config.contractAddress = deployedAddress;
73
- console.log(`📋 Contract deployed at address: ${config.contractAddress}`);
45
+ const deploymentInfo = extractDeploymentInfo(deployOutput);
46
+ if (deploymentInfo) {
47
+ console.log(`📋 Contract deployed at address: ${deploymentInfo.address}`);
48
+ console.log("Transaction hash: ", deploymentInfo.txHash);
74
49
  } else {
75
- console.log(`📋 Using fallback address: ${config.contractAddress}`);
50
+ throw new Error("Failed to extract deployed address");
76
51
  }
77
52
 
78
- // Save the deployed address to addresses.json
79
- saveDeployedAddress(config);
53
+ // Save the deployed address to chain-specific deployment file
54
+ saveDeployment(config, deploymentInfo);
80
55
 
81
56
  // Step 2: Export ABI using the shared function
82
- await exportStylusAbi(config.contractFolder, config.contractName, false);
57
+ await exportStylusAbi(
58
+ config.contractFolder,
59
+ config.contractName,
60
+ false,
61
+ config.chain?.id,
62
+ );
83
63
 
84
- console.log(`✅ Successfully deployed contract in: ${deployOptions.contract}`);
85
- if (additionalOptions.isSingleCommand) {
86
- console.log(`📋 Contract deployed at address: ${config.contractAddress}`);
87
- console.log(`📋 Chain ID: ${config.chain?.id}`);
64
+ // Step 3: Verify the contract
65
+ if (deployOptions.verify) {
66
+ try {
67
+ const output = await executeCommand(
68
+ `cargo stylus verify --endpoint=${config.chain?.rpcUrl} --deployment-tx=${deploymentInfo.txHash}`,
69
+ deployOptions.contract!,
70
+ "Verifying contract with cargo stylus",
71
+ );
72
+ console.log(output);
73
+ } catch (error) {
74
+ console.error(
75
+ `❌ Verification failed in: ${deployOptions.contract}`,
76
+ error,
77
+ );
78
+ }
88
79
  }
89
80
  } catch (error) {
90
81
  console.error(`❌ Deployment failed in: ${deployOptions.contract}`, error);
91
82
  process.exit(1);
92
83
  }
93
- }
84
+ }
@@ -1,9 +1,6 @@
1
- import * as fs from "fs";
2
- import deployStylusContract from "./deploy_contract";
3
1
  import { hideBin } from "yargs/helpers";
4
2
  import yargs from "yargs";
5
3
  import { DeployCommandOptions, DeployOptions } from "./utils/type";
6
- import deployAllStylusContracts from "./deploy_all_contracts";
7
4
  import deployScript from "./deploy";
8
5
 
9
6
  /**
@@ -14,24 +11,6 @@ if (require.main === module) {
14
11
  // Use yargs for argument parsing
15
12
  const argv = yargs(hideBin(process.argv))
16
13
  .usage("Usage: yarn deploy --name <contractName> --network <network>")
17
- .option("all", {
18
- alias: "a",
19
- describe: "Deploy all contracts in the stylus folder",
20
- type: "boolean",
21
- demandOption: false,
22
- })
23
- .option("contract", {
24
- alias: "c",
25
- describe: "Name of the contract folder",
26
- type: "string",
27
- demandOption: false,
28
- })
29
- .option("name", {
30
- alias: "n",
31
- describe: "Name of the contract",
32
- type: "string",
33
- demandOption: false,
34
- })
35
14
  .option("network", {
36
15
  alias: "net",
37
16
  describe: "Network to deploy to",
@@ -53,27 +32,8 @@ if (require.main === module) {
53
32
  .help()
54
33
  .parseSync() as DeployCommandOptions;
55
34
 
56
- if (argv.all) {
57
- deployAllStylusContracts(argv as DeployOptions).catch((error) => {
58
- console.error("Fatal error:", error);
59
- process.exit(1);
60
- });
61
- } else if (argv.contract) {
62
- if (!fs.existsSync(argv.contract)) {
63
- console.error(`❌ Contract folder does not exist: ${argv.contract}`);
64
- process.exit(1);
65
- }
66
-
67
- deployStylusContract(argv as DeployOptions, {
68
- shouldClearDeploymentDir: true,
69
- }).catch((error) => {
70
- console.error("Fatal error:", error);
71
- process.exit(1);
72
- });
73
- } else {
74
- deployScript(argv as DeployOptions).catch((error) => {
75
- console.error("Fatal error:", error);
76
- process.exit(1);
77
- });
78
- }
35
+ deployScript(argv as DeployOptions).catch((error) => {
36
+ console.error("Fatal error:", error);
37
+ process.exit(1);
38
+ });
79
39
  }
@@ -11,21 +11,21 @@ import {
11
11
  export async function exportStylusAbi(
12
12
  contractFolder: string,
13
13
  contractName: string,
14
- isSingleCommand: boolean = true,
14
+ isScript: boolean = true,
15
+ chainId?: string,
15
16
  ) {
16
17
  console.log("📄 Starting Stylus ABI export...");
17
18
 
18
- const config = getExportConfig(contractFolder, contractName);
19
+ const config = getExportConfig(contractFolder, contractName, chainId);
19
20
 
20
- // If contractAddress is not set, error and exit
21
21
  if (!config.contractAddress) {
22
22
  console.error(
23
- `❌ Contract address not found. Please deploy the contract first or ensure it is saved in ${path.resolve(config.deploymentDir, "addresses.json")}`,
23
+ `❌ Contract address not found. Please deploy the contract first or ensure it is saved in a chain-specific deployment file in ${config.deploymentDir}`,
24
24
  );
25
25
  process.exit(1);
26
26
  }
27
27
 
28
- if (isSingleCommand) {
28
+ if (isScript) {
29
29
  console.log(`📄 Contract name: ${config.contractName}`);
30
30
  console.log(`📁 Deployment directory: ${config.deploymentDir}`);
31
31
  console.log(`📍 Contract address: ${config.contractAddress}`);
@@ -33,7 +33,6 @@ export async function exportStylusAbi(
33
33
  }
34
34
 
35
35
  try {
36
- // Ensure deployment directory exists
37
36
  ensureDeploymentDirectory(config.deploymentDir);
38
37
 
39
38
  // Export ABI
@@ -44,7 +43,6 @@ export async function exportStylusAbi(
44
43
  `📄 ABI file location: ${config.deploymentDir}/${config.contractFolder}`,
45
44
  );
46
45
 
47
- // Verify the ABI file was created
48
46
  const abiFilePath = path.resolve(
49
47
  config.deploymentDir,
50
48
  `${config.contractFolder}`,
@@ -58,11 +56,12 @@ export async function exportStylusAbi(
58
56
  }
59
57
 
60
58
  // do not Generate TypeScript ABI when called from yarn script
61
- if (!isSingleCommand) {
59
+ if (!isScript) {
62
60
  await generateTsAbi(
63
61
  abiFilePath,
64
62
  config.contractName,
65
63
  config.contractAddress,
64
+ config.txHash,
66
65
  config.chainId,
67
66
  );
68
67
  }
@@ -72,7 +71,6 @@ export async function exportStylusAbi(
72
71
  }
73
72
  }
74
73
 
75
- // Allow running this file directly
76
74
  if (require.main === module) {
77
75
  // Get contract folder from command line args, default to 'your-contract'
78
76
  const contractFolder = process.argv[2] || "your-contract";
@@ -80,8 +78,10 @@ if (require.main === module) {
80
78
  console.error(`❌ Contract folder does not exist: ${contractFolder}`);
81
79
  process.exit(1);
82
80
  }
83
- exportStylusAbi(contractFolder, contractFolder).catch((error) => {
84
- console.error("Fatal error:", error);
85
- process.exit(1);
86
- });
81
+ exportStylusAbi(contractFolder, contractFolder).catch(
82
+ (error) => {
83
+ console.error("Fatal error:", error);
84
+ process.exit(1);
85
+ },
86
+ );
87
87
  }
@@ -6,24 +6,38 @@ export async function buildDeployCommand(
6
6
  config: DeploymentConfig,
7
7
  deployOptions: DeployOptions,
8
8
  ) {
9
- const baseCommand = `cargo stylus deploy --endpoint='${config.chain?.rpcUrl}' --private-key='${config.privateKey}' --no-verify`;
9
+ let baseCommand = `cargo stylus deploy --endpoint='${config.chain?.rpcUrl}' --private-key='${config.privateKey}'`;
10
+
11
+ if (
12
+ deployOptions.constructorArgs &&
13
+ deployOptions.constructorArgs.length > 0
14
+ ) {
15
+ baseCommand += ` --constructor-args='${deployOptions.constructorArgs.join(" ")}'`;
16
+ }
10
17
 
11
18
  if (deployOptions.estimateGas) {
12
19
  return `${baseCommand} --estimate-gas`;
13
20
  }
14
21
 
22
+ if (!deployOptions.verify) {
23
+ baseCommand += ` --no-verify`;
24
+ }
25
+
15
26
  if (deployOptions.maxFee) {
16
- return `${baseCommand} --max-fee-per-gas-gwei=${deployOptions.maxFee}`;
27
+ baseCommand += ` --max-fee-per-gas-gwei=${deployOptions.maxFee}`;
17
28
  }
18
29
 
19
- // const gasPrice = await estimateGasPrice(config);
20
30
  return baseCommand;
21
31
  }
22
32
 
23
33
  export async function estimateGasPrice(
24
34
  config: DeploymentConfig,
35
+ deployOptions: DeployOptions,
25
36
  ): Promise<string> {
26
- const deployCommand = `cargo stylus deploy --endpoint='${config.chain?.rpcUrl}' --private-key='${config.privateKey}' --no-verify --estimate-gas`;
37
+ let deployCommand = `cargo stylus deploy --endpoint='${config.chain?.rpcUrl}' --private-key='${config.privateKey}' --no-verify --estimate-gas `;
38
+ if (deployOptions.constructorArgs) {
39
+ deployCommand += ` --constructor-args='${deployOptions.constructorArgs.join(" ")}'`;
40
+ }
27
41
  const deployOutput = await executeCommand(
28
42
  deployCommand,
29
43
  config.contractName,
@@ -88,33 +102,6 @@ export function executeCommand(
88
102
  childProcess.on("close", (code: number | null) => {
89
103
  if (code === 0) {
90
104
  console.log(`\n✅ ${description} completed successfully!`);
91
- // Print output starting from "project metadata hash computed on deployment" or error patterns, or all logs if not found
92
- // if (outputLines.length > 0) {
93
- // const metadataIndex = outputLines.findIndex((line) =>
94
- // line.includes("project metadata hash computed on deployment"),
95
- // );
96
- // const errorIndex = outputLines.findIndex((line) =>
97
- // line.includes("error["),
98
- // );
99
-
100
- // let startIndex = -1;
101
- // if (metadataIndex >= 0) {
102
- // startIndex = metadataIndex;
103
- // } else if (errorIndex >= 0) {
104
- // startIndex = errorIndex;
105
- // }
106
-
107
- // if (startIndex >= 0) {
108
- // const linesToPrint = outputLines.slice(startIndex);
109
- // linesToPrint.forEach((line) => {
110
- // if (line.trim()) console.log(line);
111
- // });
112
- // } else {
113
- // outputLines.forEach((line) => {
114
- // if (line.trim()) console.log(line);
115
- // });
116
- // }
117
- // }
118
105
  resolve(output);
119
106
  } else {
120
107
  console.error(`\n❌ ${description} failed with exit code ${code}`);
@@ -3,8 +3,9 @@ import * as fs from "fs";
3
3
  import { ethers } from "ethers";
4
4
  import toml from "toml";
5
5
  import prettier from "prettier";
6
- import { ExportConfig } from "./type";
6
+ import { DeploymentData, ExportConfig } from "./type";
7
7
  import { getContractDataFromDeployments } from "./deployment";
8
+ import { Address } from "viem";
8
9
 
9
10
  export const generatedContractComment = `
10
11
  /**
@@ -42,6 +43,7 @@ export function getContractNameFromCargoToml(contractFolder: string): string {
42
43
  export function getExportConfig(
43
44
  contractFolder?: string,
44
45
  contractName?: string,
46
+ chainId?: string,
45
47
  ): ExportConfig {
46
48
  if (!contractFolder) {
47
49
  throw new Error("Contract folder is required");
@@ -53,10 +55,11 @@ export function getExportConfig(
53
55
  const deploymentData = getContractDataFromDeployments(
54
56
  deploymentDir,
55
57
  contractName,
58
+ chainId,
56
59
  );
57
60
  if (!deploymentData) {
58
61
  throw new Error(
59
- `❌ Contract address for '${contractName}' not found in ${deploymentDir}/addresses.json. Please deploy the contract first.`,
62
+ `❌ Contract address for '${contractName}' not found in any chain-specific deployment files in ${deploymentDir}. Please deploy the contract first.`,
60
63
  );
61
64
  }
62
65
 
@@ -64,7 +67,8 @@ export function getExportConfig(
64
67
  contractFolder,
65
68
  contractName,
66
69
  deploymentDir,
67
- contractAddress: deploymentData.address,
70
+ contractAddress: deploymentData.address as Address,
71
+ txHash: deploymentData.txHash,
68
72
  chainId: deploymentData.chainId,
69
73
  };
70
74
  }
@@ -86,19 +90,28 @@ export function generateContractAddress(): string {
86
90
  return wallet.address;
87
91
  }
88
92
 
89
- export function extractDeployedAddress(output: string): string | null {
90
- // Look for the line containing "deployed code at address:"
93
+ export function extractDeploymentInfo(output: string): DeploymentData | null {
94
+ let result: DeploymentData | null = null;
91
95
  const lines = output.split("\n");
92
96
  for (const line of lines) {
93
97
  if (line.includes("deployed code at address:")) {
94
- // Simple approach: just extract the hex address directly
98
+ // Extract the hex address directly
95
99
  const hexMatch = line.match(/(0x[a-fA-F0-9]{40})/);
96
100
  if (hexMatch && hexMatch[1]) {
97
- return hexMatch[1];
101
+ result = { address: hexMatch[1] as Address, txHash: "" };
102
+ }
103
+ }
104
+ if (line.includes("deployment tx hash:")) {
105
+ const txHashMatch = line.match(/(0x[a-fA-F0-9]{64})/);
106
+ if (txHashMatch && txHashMatch[1]) {
107
+ result = {
108
+ address: result?.address as Address,
109
+ txHash: txHashMatch[1],
110
+ };
98
111
  }
99
112
  }
100
113
  }
101
- return null;
114
+ return result;
102
115
  }
103
116
 
104
117
  export function extractGasPriceFromOutput(output: string): string | null {
@@ -109,7 +122,6 @@ export function extractGasPriceFromOutput(output: string): string | null {
109
122
  // eslint-disable-next-line no-control-regex
110
123
  const cleanLine = line.replace(/\x1b\[[0-9;]*m/g, "");
111
124
 
112
- // Extract the value inside quotes after 'gas price:'
113
125
  const match = cleanLine.match(/gas price:\s*"([^"]+)"/);
114
126
  if (match && match[1]) {
115
127
  return match[1];
@@ -123,6 +135,7 @@ export async function generateTsAbi(
123
135
  abiFilePath: string,
124
136
  contractName: string,
125
137
  contractAddress: string,
138
+ txHash: string,
126
139
  chainId: string,
127
140
  ) {
128
141
  const TARGET_DIR = "../nextjs/contracts/";
@@ -134,9 +147,9 @@ export async function generateTsAbi(
134
147
  const extractedAbi = lines.slice(3).join("\n");
135
148
  const abiJson = JSON.parse(extractedAbi);
136
149
 
137
- // Helper to generate the contract entry
138
150
  const newContractEntry = {
139
151
  address: contractAddress,
152
+ txHash: txHash,
140
153
  abi: abiJson,
141
154
  };
142
155
 
@@ -146,7 +159,6 @@ export async function generateTsAbi(
146
159
  'import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";\n\n';
147
160
 
148
161
  if (fs.existsSync(TARGET_FILE)) {
149
- // Read and parse the existing file
150
162
  const fileContent = fs.readFileSync(TARGET_FILE, "utf8");
151
163
  // Extract the deployedContracts object using regex
152
164
  const match = fileContent.match(
@@ -158,14 +170,11 @@ export async function generateTsAbi(
158
170
  }
159
171
  }
160
172
 
161
- // Ensure the chainId exists
162
173
  if (!deployedContractsObj[chainId]) {
163
174
  deployedContractsObj[chainId] = {};
164
175
  }
165
- // Update or insert the contract entry
166
176
  deployedContractsObj[chainId][contractName] = newContractEntry;
167
177
 
168
- // Stringify the object for TypeScript output
169
178
  const contractsString = JSON.stringify(deployedContractsObj, null, 2);
170
179
 
171
180
  const output = `${fileHeader}const deployedContracts = ${contractsString} as const;\n\nexport default deployedContracts satisfies GenericContractsDeclaration;\n`;