gate-evm-tools 1.0.26 → 1.0.27

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 (323) hide show
  1. package/README.md +14 -0
  2. package/bin/workflow.cjs +19 -0
  3. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  4. package/dist/core/BytecodeChecker.js +16 -1
  5. package/dist/core/BytecodeChecker.js.map +1 -1
  6. package/dist/core/legacyProxyArtifact.d.ts +6 -0
  7. package/dist/core/legacyProxyArtifact.d.ts.map +1 -0
  8. package/dist/core/legacyProxyArtifact.js +36 -0
  9. package/dist/core/legacyProxyArtifact.js.map +1 -0
  10. package/dist-runtime/config/hardhatAdapters.d.ts +5 -0
  11. package/dist-runtime/config/hardhatAdapters.js +53 -0
  12. package/dist-runtime/config/hardhatAdapters.js.map +1 -0
  13. package/dist-runtime/config/networks.d.ts +8 -0
  14. package/dist-runtime/config/networks.js +269 -0
  15. package/dist-runtime/config/networks.js.map +1 -0
  16. package/dist-runtime/config/openzeppelin.d.ts +28 -0
  17. package/dist-runtime/config/openzeppelin.js +144 -0
  18. package/dist-runtime/config/openzeppelin.js.map +1 -0
  19. package/dist-runtime/config/rpc.d.ts +7 -0
  20. package/dist-runtime/config/rpc.js +19 -0
  21. package/dist-runtime/config/rpc.js.map +1 -0
  22. package/dist-runtime/config/zksyncSolcPath.d.ts +1 -0
  23. package/dist-runtime/config/zksyncSolcPath.js +61 -0
  24. package/dist-runtime/config/zksyncSolcPath.js.map +1 -0
  25. package/dist-runtime/migrate.d.ts +13 -0
  26. package/dist-runtime/migrate.js +208 -0
  27. package/dist-runtime/migrate.js.map +1 -0
  28. package/dist-runtime/package.json +1 -0
  29. package/dist-runtime/projectHardhat.d.ts +4 -0
  30. package/dist-runtime/projectHardhat.js +16 -0
  31. package/dist-runtime/projectHardhat.js.map +1 -0
  32. package/dist-runtime/runtime-identity.json +4 -0
  33. package/dist-runtime/template-migration.json +293 -0
  34. package/dist-runtime/workflow/checkCode.d.ts +1 -0
  35. package/dist-runtime/workflow/checkCode.js +16 -0
  36. package/dist-runtime/workflow/checkCode.js.map +1 -0
  37. package/dist-runtime/workflow/checkCodeFinalize.d.ts +1 -0
  38. package/dist-runtime/workflow/checkCodeFinalize.js +11 -0
  39. package/dist-runtime/workflow/checkCodeFinalize.js.map +1 -0
  40. package/dist-runtime/workflow/checkCodePlan.d.ts +1 -0
  41. package/dist-runtime/workflow/checkCodePlan.js +11 -0
  42. package/dist-runtime/workflow/checkCodePlan.js.map +1 -0
  43. package/dist-runtime/workflow/cli.d.ts +1 -0
  44. package/dist-runtime/workflow/cli.js +302 -0
  45. package/dist-runtime/workflow/cli.js.map +1 -0
  46. package/dist-runtime/workflow/commitContractInfo.d.ts +1 -0
  47. package/dist-runtime/workflow/commitContractInfo.js +64 -0
  48. package/dist-runtime/workflow/commitContractInfo.js.map +1 -0
  49. package/dist-runtime/workflow/create2Hashes.d.ts +1 -0
  50. package/dist-runtime/workflow/create2Hashes.js +76 -0
  51. package/dist-runtime/workflow/create2Hashes.js.map +1 -0
  52. package/dist-runtime/workflow/forkSourceProxy.d.ts +1 -0
  53. package/dist-runtime/workflow/forkSourceProxy.js +151 -0
  54. package/dist-runtime/workflow/forkSourceProxy.js.map +1 -0
  55. package/dist-runtime/workflow/importState.d.ts +1 -0
  56. package/dist-runtime/workflow/importState.js +193 -0
  57. package/dist-runtime/workflow/importState.js.map +1 -0
  58. package/dist-runtime/workflow/lib/authority.d.ts +28 -0
  59. package/dist-runtime/workflow/lib/authority.js +122 -0
  60. package/dist-runtime/workflow/lib/authority.js.map +1 -0
  61. package/dist-runtime/workflow/lib/calldata.d.ts +2 -0
  62. package/dist-runtime/workflow/lib/calldata.js +8 -0
  63. package/dist-runtime/workflow/lib/calldata.js.map +1 -0
  64. package/dist-runtime/workflow/lib/calls.d.ts +23 -0
  65. package/dist-runtime/workflow/lib/calls.js +316 -0
  66. package/dist-runtime/workflow/lib/calls.js.map +1 -0
  67. package/dist-runtime/workflow/lib/checkCode/args.d.ts +2 -0
  68. package/dist-runtime/workflow/lib/checkCode/args.js +68 -0
  69. package/dist-runtime/workflow/lib/checkCode/args.js.map +1 -0
  70. package/dist-runtime/workflow/lib/checkCode/command.d.ts +5 -0
  71. package/dist-runtime/workflow/lib/checkCode/command.js +35 -0
  72. package/dist-runtime/workflow/lib/checkCode/command.js.map +1 -0
  73. package/dist-runtime/workflow/lib/checkCode/dependencies.d.ts +6 -0
  74. package/dist-runtime/workflow/lib/checkCode/dependencies.js +125 -0
  75. package/dist-runtime/workflow/lib/checkCode/dependencies.js.map +1 -0
  76. package/dist-runtime/workflow/lib/checkCode/finalize.d.ts +17 -0
  77. package/dist-runtime/workflow/lib/checkCode/finalize.js +174 -0
  78. package/dist-runtime/workflow/lib/checkCode/finalize.js.map +1 -0
  79. package/dist-runtime/workflow/lib/checkCode/index.d.ts +3 -0
  80. package/dist-runtime/workflow/lib/checkCode/index.js +20 -0
  81. package/dist-runtime/workflow/lib/checkCode/index.js.map +1 -0
  82. package/dist-runtime/workflow/lib/checkCode/plan.d.ts +22 -0
  83. package/dist-runtime/workflow/lib/checkCode/plan.js +145 -0
  84. package/dist-runtime/workflow/lib/checkCode/plan.js.map +1 -0
  85. package/dist-runtime/workflow/lib/checkCodeReport.d.ts +25 -0
  86. package/dist-runtime/workflow/lib/checkCodeReport.js +102 -0
  87. package/dist-runtime/workflow/lib/checkCodeReport.js.map +1 -0
  88. package/dist-runtime/workflow/lib/checkCodeRunner.d.ts +87 -0
  89. package/dist-runtime/workflow/lib/checkCodeRunner.js +964 -0
  90. package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -0
  91. package/dist-runtime/workflow/lib/cliTool.d.ts +10 -0
  92. package/dist-runtime/workflow/lib/cliTool.js +25 -0
  93. package/dist-runtime/workflow/lib/cliTool.js.map +1 -0
  94. package/dist-runtime/workflow/lib/config.d.ts +33 -0
  95. package/dist-runtime/workflow/lib/config.js +100 -0
  96. package/dist-runtime/workflow/lib/config.js.map +1 -0
  97. package/dist-runtime/workflow/lib/contractInfoCandidates.d.ts +82 -0
  98. package/dist-runtime/workflow/lib/contractInfoCandidates.js +441 -0
  99. package/dist-runtime/workflow/lib/contractInfoCandidates.js.map +1 -0
  100. package/dist-runtime/workflow/lib/create2.d.ts +49 -0
  101. package/dist-runtime/workflow/lib/create2.js +194 -0
  102. package/dist-runtime/workflow/lib/create2.js.map +1 -0
  103. package/dist-runtime/workflow/lib/create2Hashes.d.ts +22 -0
  104. package/dist-runtime/workflow/lib/create2Hashes.js +57 -0
  105. package/dist-runtime/workflow/lib/create2Hashes.js.map +1 -0
  106. package/dist-runtime/workflow/lib/deploymentInfo.d.ts +40 -0
  107. package/dist-runtime/workflow/lib/deploymentInfo.js +240 -0
  108. package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -0
  109. package/dist-runtime/workflow/lib/deploymentRecords.d.ts +137 -0
  110. package/dist-runtime/workflow/lib/deploymentRecords.js +374 -0
  111. package/dist-runtime/workflow/lib/deploymentRecords.js.map +1 -0
  112. package/dist-runtime/workflow/lib/deployments.d.ts +21 -0
  113. package/dist-runtime/workflow/lib/deployments.js +240 -0
  114. package/dist-runtime/workflow/lib/deployments.js.map +1 -0
  115. package/dist-runtime/workflow/lib/erc1967.d.ts +5 -0
  116. package/dist-runtime/workflow/lib/erc1967.js +29 -0
  117. package/dist-runtime/workflow/lib/erc1967.js.map +1 -0
  118. package/dist-runtime/workflow/lib/errors.d.ts +6 -0
  119. package/dist-runtime/workflow/lib/errors.js +77 -0
  120. package/dist-runtime/workflow/lib/errors.js.map +1 -0
  121. package/dist-runtime/workflow/lib/executionId.d.ts +7 -0
  122. package/dist-runtime/workflow/lib/executionId.js +26 -0
  123. package/dist-runtime/workflow/lib/executionId.js.map +1 -0
  124. package/dist-runtime/workflow/lib/executionPlan.d.ts +85 -0
  125. package/dist-runtime/workflow/lib/executionPlan.js +450 -0
  126. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -0
  127. package/dist-runtime/workflow/lib/executionProgress.d.ts +5 -0
  128. package/dist-runtime/workflow/lib/executionProgress.js +100 -0
  129. package/dist-runtime/workflow/lib/executionProgress.js.map +1 -0
  130. package/dist-runtime/workflow/lib/external.d.ts +62 -0
  131. package/dist-runtime/workflow/lib/external.js +282 -0
  132. package/dist-runtime/workflow/lib/external.js.map +1 -0
  133. package/dist-runtime/workflow/lib/externalExecutionScanner.d.ts +64 -0
  134. package/dist-runtime/workflow/lib/externalExecutionScanner.js +638 -0
  135. package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -0
  136. package/dist-runtime/workflow/lib/forkSnapshot.d.ts +34 -0
  137. package/dist-runtime/workflow/lib/forkSnapshot.js +167 -0
  138. package/dist-runtime/workflow/lib/forkSnapshot.js.map +1 -0
  139. package/dist-runtime/workflow/lib/gateTool.d.ts +16 -0
  140. package/dist-runtime/workflow/lib/gateTool.js +177 -0
  141. package/dist-runtime/workflow/lib/gateTool.js.map +1 -0
  142. package/dist-runtime/workflow/lib/gateToolSync.d.ts +22 -0
  143. package/dist-runtime/workflow/lib/gateToolSync.js +253 -0
  144. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -0
  145. package/dist-runtime/workflow/lib/lock.d.ts +52 -0
  146. package/dist-runtime/workflow/lib/lock.js +269 -0
  147. package/dist-runtime/workflow/lib/lock.js.map +1 -0
  148. package/dist-runtime/workflow/lib/migrationState.d.ts +103 -0
  149. package/dist-runtime/workflow/lib/migrationState.js +920 -0
  150. package/dist-runtime/workflow/lib/migrationState.js.map +1 -0
  151. package/dist-runtime/workflow/lib/operatorExecution.d.ts +28 -0
  152. package/dist-runtime/workflow/lib/operatorExecution.js +134 -0
  153. package/dist-runtime/workflow/lib/operatorExecution.js.map +1 -0
  154. package/dist-runtime/workflow/lib/parameters.d.ts +58 -0
  155. package/dist-runtime/workflow/lib/parameters.js +322 -0
  156. package/dist-runtime/workflow/lib/parameters.js.map +1 -0
  157. package/dist-runtime/workflow/lib/pendingDeploymentReuse.d.ts +29 -0
  158. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +277 -0
  159. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -0
  160. package/dist-runtime/workflow/lib/proxy.d.ts +18 -0
  161. package/dist-runtime/workflow/lib/proxy.js +19 -0
  162. package/dist-runtime/workflow/lib/proxy.js.map +1 -0
  163. package/dist-runtime/workflow/lib/registryCommit.d.ts +33 -0
  164. package/dist-runtime/workflow/lib/registryCommit.js +319 -0
  165. package/dist-runtime/workflow/lib/registryCommit.js.map +1 -0
  166. package/dist-runtime/workflow/lib/release.d.ts +57 -0
  167. package/dist-runtime/workflow/lib/release.js +256 -0
  168. package/dist-runtime/workflow/lib/release.js.map +1 -0
  169. package/dist-runtime/workflow/lib/releaseFinalize.d.ts +14 -0
  170. package/dist-runtime/workflow/lib/releaseFinalize.js +571 -0
  171. package/dist-runtime/workflow/lib/releaseFinalize.js.map +1 -0
  172. package/dist-runtime/workflow/lib/releaseParameters.d.ts +43 -0
  173. package/dist-runtime/workflow/lib/releaseParameters.js +184 -0
  174. package/dist-runtime/workflow/lib/releaseParameters.js.map +1 -0
  175. package/dist-runtime/workflow/lib/reporter.d.ts +39 -0
  176. package/dist-runtime/workflow/lib/reporter.js +452 -0
  177. package/dist-runtime/workflow/lib/reporter.js.map +1 -0
  178. package/dist-runtime/workflow/lib/resultPaths.d.ts +17 -0
  179. package/dist-runtime/workflow/lib/resultPaths.js +29 -0
  180. package/dist-runtime/workflow/lib/resultPaths.js.map +1 -0
  181. package/dist-runtime/workflow/lib/runtimeVersion.d.ts +10 -0
  182. package/dist-runtime/workflow/lib/runtimeVersion.js +46 -0
  183. package/dist-runtime/workflow/lib/runtimeVersion.js.map +1 -0
  184. package/dist-runtime/workflow/lib/signer.d.ts +10 -0
  185. package/dist-runtime/workflow/lib/signer.js +105 -0
  186. package/dist-runtime/workflow/lib/signer.js.map +1 -0
  187. package/dist-runtime/workflow/lib/signerIdentity.d.ts +1 -0
  188. package/dist-runtime/workflow/lib/signerIdentity.js +23 -0
  189. package/dist-runtime/workflow/lib/signerIdentity.js.map +1 -0
  190. package/dist-runtime/workflow/lib/simulation.d.ts +35 -0
  191. package/dist-runtime/workflow/lib/simulation.js +282 -0
  192. package/dist-runtime/workflow/lib/simulation.js.map +1 -0
  193. package/dist-runtime/workflow/lib/simulationCallers.d.ts +44 -0
  194. package/dist-runtime/workflow/lib/simulationCallers.js +260 -0
  195. package/dist-runtime/workflow/lib/simulationCallers.js.map +1 -0
  196. package/dist-runtime/workflow/lib/sourceRpcPolicy.d.ts +1 -0
  197. package/dist-runtime/workflow/lib/sourceRpcPolicy.js +43 -0
  198. package/dist-runtime/workflow/lib/sourceRpcPolicy.js.map +1 -0
  199. package/dist-runtime/workflow/lib/state.d.ts +6 -0
  200. package/dist-runtime/workflow/lib/state.js +25 -0
  201. package/dist-runtime/workflow/lib/state.js.map +1 -0
  202. package/dist-runtime/workflow/lib/staticValidation.d.ts +22 -0
  203. package/dist-runtime/workflow/lib/staticValidation.js +124 -0
  204. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -0
  205. package/dist-runtime/workflow/lib/zksyncForkCapability.d.ts +27 -0
  206. package/dist-runtime/workflow/lib/zksyncForkCapability.js +52 -0
  207. package/dist-runtime/workflow/lib/zksyncForkCapability.js.map +1 -0
  208. package/dist-runtime/workflow/lib/zksyncForkRunner.d.ts +57 -0
  209. package/dist-runtime/workflow/lib/zksyncForkRunner.js +344 -0
  210. package/dist-runtime/workflow/lib/zksyncForkRunner.js.map +1 -0
  211. package/dist-runtime/workflow/reconcileExternal.d.ts +1 -0
  212. package/dist-runtime/workflow/reconcileExternal.js +87 -0
  213. package/dist-runtime/workflow/reconcileExternal.js.map +1 -0
  214. package/dist-runtime/workflow/reconcileExternalRun.d.ts +1 -0
  215. package/dist-runtime/workflow/reconcileExternalRun.js +77 -0
  216. package/dist-runtime/workflow/reconcileExternalRun.js.map +1 -0
  217. package/dist-runtime/workflow/releaseFinalize.d.ts +1 -0
  218. package/dist-runtime/workflow/releaseFinalize.js +11 -0
  219. package/dist-runtime/workflow/releaseFinalize.js.map +1 -0
  220. package/dist-runtime/workflow/run.d.ts +40 -0
  221. package/dist-runtime/workflow/run.js +858 -0
  222. package/dist-runtime/workflow/run.js.map +1 -0
  223. package/dist-runtime/workflow/staticValidate.d.ts +1 -0
  224. package/dist-runtime/workflow/staticValidate.js +26 -0
  225. package/dist-runtime/workflow/staticValidate.js.map +1 -0
  226. package/dist-runtime/workflow/steps/call.d.ts +3 -0
  227. package/dist-runtime/workflow/steps/call.js +9 -0
  228. package/dist-runtime/workflow/steps/call.js.map +1 -0
  229. package/dist-runtime/workflow/steps/check.d.ts +3 -0
  230. package/dist-runtime/workflow/steps/check.js +9 -0
  231. package/dist-runtime/workflow/steps/check.js.map +1 -0
  232. package/dist-runtime/workflow/steps/custom.d.ts +3 -0
  233. package/dist-runtime/workflow/steps/custom.js +33 -0
  234. package/dist-runtime/workflow/steps/custom.js.map +1 -0
  235. package/dist-runtime/workflow/steps/deploy.d.ts +3 -0
  236. package/dist-runtime/workflow/steps/deploy.js +595 -0
  237. package/dist-runtime/workflow/steps/deploy.js.map +1 -0
  238. package/dist-runtime/workflow/steps/upgrade.d.ts +3 -0
  239. package/dist-runtime/workflow/steps/upgrade.js +465 -0
  240. package/dist-runtime/workflow/steps/upgrade.js.map +1 -0
  241. package/dist-runtime/workflow/steps/view.d.ts +3 -0
  242. package/dist-runtime/workflow/steps/view.js +9 -0
  243. package/dist-runtime/workflow/steps/view.js.map +1 -0
  244. package/package.json +25 -5
  245. package/runtime/config/hardhatAdapters.ts +50 -0
  246. package/runtime/config/networks.ts +296 -0
  247. package/runtime/config/openzeppelin.ts +173 -0
  248. package/runtime/config/rpc.ts +27 -0
  249. package/runtime/config/zksyncSolcPath.ts +59 -0
  250. package/runtime/hardhat-types.d.ts +2 -0
  251. package/runtime/migrate.ts +154 -0
  252. package/runtime/projectHardhat.ts +10 -0
  253. package/runtime/template-migration.json +293 -0
  254. package/runtime/workflow/checkCode.ts +13 -0
  255. package/runtime/workflow/checkCodeFinalize.ts +8 -0
  256. package/runtime/workflow/checkCodePlan.ts +8 -0
  257. package/runtime/workflow/cli.ts +356 -0
  258. package/runtime/workflow/commitContractInfo.ts +63 -0
  259. package/runtime/workflow/create2Hashes.ts +79 -0
  260. package/runtime/workflow/forkSourceProxy.ts +193 -0
  261. package/runtime/workflow/importState.ts +190 -0
  262. package/runtime/workflow/lib/authority.ts +170 -0
  263. package/runtime/workflow/lib/calldata.ts +9 -0
  264. package/runtime/workflow/lib/calls.ts +407 -0
  265. package/runtime/workflow/lib/checkCode/args.ts +76 -0
  266. package/runtime/workflow/lib/checkCode/command.ts +36 -0
  267. package/runtime/workflow/lib/checkCode/dependencies.ts +112 -0
  268. package/runtime/workflow/lib/checkCode/finalize.ts +198 -0
  269. package/runtime/workflow/lib/checkCode/index.ts +18 -0
  270. package/runtime/workflow/lib/checkCode/plan.ts +163 -0
  271. package/runtime/workflow/lib/checkCodeReport.ts +133 -0
  272. package/runtime/workflow/lib/checkCodeRunner.ts +1225 -0
  273. package/runtime/workflow/lib/cliTool.ts +31 -0
  274. package/runtime/workflow/lib/config.ts +130 -0
  275. package/runtime/workflow/lib/contractInfoCandidates.ts +690 -0
  276. package/runtime/workflow/lib/create2.ts +278 -0
  277. package/runtime/workflow/lib/create2Hashes.ts +83 -0
  278. package/runtime/workflow/lib/deploymentInfo.ts +286 -0
  279. package/runtime/workflow/lib/deploymentRecords.ts +576 -0
  280. package/runtime/workflow/lib/deployments.ts +276 -0
  281. package/runtime/workflow/lib/erc1967.ts +57 -0
  282. package/runtime/workflow/lib/errors.ts +95 -0
  283. package/runtime/workflow/lib/executionId.ts +35 -0
  284. package/runtime/workflow/lib/executionPlan.ts +550 -0
  285. package/runtime/workflow/lib/executionProgress.ts +127 -0
  286. package/runtime/workflow/lib/external.ts +372 -0
  287. package/runtime/workflow/lib/externalExecutionScanner.ts +892 -0
  288. package/runtime/workflow/lib/forkSnapshot.ts +231 -0
  289. package/runtime/workflow/lib/gateTool.ts +261 -0
  290. package/runtime/workflow/lib/gateToolSync.ts +398 -0
  291. package/runtime/workflow/lib/lock.ts +388 -0
  292. package/runtime/workflow/lib/migrationState.ts +1246 -0
  293. package/runtime/workflow/lib/operatorExecution.ts +174 -0
  294. package/runtime/workflow/lib/parameters.ts +437 -0
  295. package/runtime/workflow/lib/pendingDeploymentReuse.ts +428 -0
  296. package/runtime/workflow/lib/proxy.ts +45 -0
  297. package/runtime/workflow/lib/registryCommit.ts +455 -0
  298. package/runtime/workflow/lib/release.ts +329 -0
  299. package/runtime/workflow/lib/releaseFinalize.ts +711 -0
  300. package/runtime/workflow/lib/releaseParameters.ts +248 -0
  301. package/runtime/workflow/lib/reporter.ts +502 -0
  302. package/runtime/workflow/lib/resultPaths.ts +49 -0
  303. package/runtime/workflow/lib/runtimeVersion.ts +28 -0
  304. package/runtime/workflow/lib/signer.ts +124 -0
  305. package/runtime/workflow/lib/signerIdentity.ts +22 -0
  306. package/runtime/workflow/lib/simulation.ts +415 -0
  307. package/runtime/workflow/lib/simulationCallers.ts +335 -0
  308. package/runtime/workflow/lib/sourceRpcPolicy.ts +41 -0
  309. package/runtime/workflow/lib/state.ts +25 -0
  310. package/runtime/workflow/lib/staticValidation.ts +142 -0
  311. package/runtime/workflow/lib/zksyncForkCapability.ts +80 -0
  312. package/runtime/workflow/lib/zksyncForkRunner.ts +505 -0
  313. package/runtime/workflow/reconcileExternal.ts +86 -0
  314. package/runtime/workflow/reconcileExternalRun.ts +88 -0
  315. package/runtime/workflow/releaseFinalize.ts +8 -0
  316. package/runtime/workflow/run.ts +1072 -0
  317. package/runtime/workflow/staticValidate.ts +23 -0
  318. package/runtime/workflow/steps/call.ts +10 -0
  319. package/runtime/workflow/steps/check.ts +10 -0
  320. package/runtime/workflow/steps/custom.ts +43 -0
  321. package/runtime/workflow/steps/deploy.ts +771 -0
  322. package/runtime/workflow/steps/upgrade.ts +598 -0
  323. package/runtime/workflow/steps/view.ts +10 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertCreate2AddressPolicy = exports.hasLeadingZeroBytes = exports.resolveCreate2Options = exports.sendPreparedControlledMulticallTransaction = exports.sendPreparedWorkflowTransaction = exports.prepareControlledMulticallTransaction = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const parameters_1 = require("./parameters");
6
+ const CONTROLLED_MULTICALL_INTERFACE = new ethers_1.Interface([
7
+ "function aggregate3(tuple(address target,bool allowFailure,bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)",
8
+ "function aggregate3Value(tuple(address target,bool allowFailure,uint256 value,bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)",
9
+ ]);
10
+ const bigintValue = (value) => {
11
+ if (!value || value === "0")
12
+ return 0n;
13
+ const parsed = BigInt(value);
14
+ if (parsed < 0n)
15
+ throw new Error("transaction value must be nonnegative");
16
+ return parsed;
17
+ };
18
+ const normalizeFactoryDeps = (input, label) => {
19
+ const seen = new Set();
20
+ const output = [];
21
+ for (const [index, dependency] of input.entries()) {
22
+ if (!/^0x(?:[0-9a-fA-F]{2})+$/.test(dependency)) {
23
+ throw new Error(`${label}[${index}] must be non-empty byte-aligned bytecode`);
24
+ }
25
+ const normalized = dependency.toLowerCase();
26
+ if (seen.has(normalized))
27
+ continue;
28
+ seen.add(normalized);
29
+ output.push(normalized);
30
+ }
31
+ return output;
32
+ };
33
+ const prepareControlledMulticallTransaction = (controlledMulticall, inputCalls, scheme = "evm") => {
34
+ if (!(0, ethers_1.isAddress)(controlledMulticall)) {
35
+ throw new Error("controlledMulticall must be an EVM address");
36
+ }
37
+ if (inputCalls.length === 0) {
38
+ throw new Error("controlled multicall requires at least one inner call");
39
+ }
40
+ if (scheme === "evm" && inputCalls.some((call) => call.factoryDeps !== undefined)) {
41
+ throw new Error("factoryDeps are only supported for zkSync transactions");
42
+ }
43
+ if (scheme === "zksync-eravm" && inputCalls.some((call) => call.factoryDeps === undefined)) {
44
+ throw new Error("every zkSync GateTool call must include factoryDeps");
45
+ }
46
+ const calls = inputCalls.map((call) => ({
47
+ target: (0, ethers_1.getAddress)(call.target),
48
+ allowFailure: false,
49
+ value: bigintValue(call.value).toString(10),
50
+ callData: call.data,
51
+ }));
52
+ const totalValue = calls.reduce((sum, call) => sum + BigInt(call.value), 0n);
53
+ const method = totalValue === 0n ? "aggregate3" : "aggregate3Value";
54
+ const encodedCalls = method === "aggregate3"
55
+ ? calls.map(({ value: _value, ...call }) => call)
56
+ : calls;
57
+ const factoryDeps = scheme === "zksync-eravm"
58
+ ? normalizeFactoryDeps(inputCalls.flatMap((call) => call.factoryDeps), "factoryDeps")
59
+ : undefined;
60
+ return {
61
+ target: (0, ethers_1.getAddress)(controlledMulticall),
62
+ value: totalValue.toString(10),
63
+ data: CONTROLLED_MULTICALL_INTERFACE.encodeFunctionData(method, [encodedCalls]),
64
+ operation: 0,
65
+ method,
66
+ calls,
67
+ ...(scheme === "zksync-eravm"
68
+ ? { scheme: "zksync-eravm", factoryDeps: factoryDeps }
69
+ : {}),
70
+ };
71
+ };
72
+ exports.prepareControlledMulticallTransaction = prepareControlledMulticallTransaction;
73
+ const sendPreparedWorkflowTransaction = async (prepared, signer) => {
74
+ if (prepared.scheme === "zksync-eravm" && prepared.factoryDeps === undefined) {
75
+ throw new Error("zkSync transaction requires an explicit factoryDeps list");
76
+ }
77
+ if (prepared.scheme === undefined && prepared.factoryDeps !== undefined) {
78
+ throw new Error("EVM transaction cannot include factoryDeps");
79
+ }
80
+ const transaction = await signer.sendTransaction({
81
+ to: prepared.target,
82
+ value: prepared.value,
83
+ data: prepared.data,
84
+ ...(prepared.scheme === "zksync-eravm"
85
+ ? { customData: { factoryDeps: prepared.factoryDeps } }
86
+ : {}),
87
+ });
88
+ const receipt = await transaction.wait();
89
+ const receiptHash = receipt && typeof receipt === "object"
90
+ ? "hash" in receipt && typeof receipt.hash === "string"
91
+ ? receipt.hash
92
+ : "transactionHash" in receipt && typeof receipt.transactionHash === "string"
93
+ ? receipt.transactionHash
94
+ : undefined
95
+ : undefined;
96
+ if (receiptHash && receiptHash.toLowerCase() !== transaction.hash.toLowerCase()) {
97
+ throw new Error("transaction receipt hash does not match the submitted locked envelope");
98
+ }
99
+ return transaction;
100
+ };
101
+ exports.sendPreparedWorkflowTransaction = sendPreparedWorkflowTransaction;
102
+ const sendPreparedControlledMulticallTransaction = async (prepared, signer) => (0, exports.sendPreparedWorkflowTransaction)(prepared, signer);
103
+ exports.sendPreparedControlledMulticallTransaction = sendPreparedControlledMulticallTransaction;
104
+ const resolveObject = (context, value) => {
105
+ const resolved = (0, parameters_1.resolveValue)(value || {}, {
106
+ targetId: context.targetId,
107
+ target: context.target,
108
+ params: context.targetParams,
109
+ state: context.state,
110
+ });
111
+ if (!resolved || typeof resolved !== "object" || Array.isArray(resolved))
112
+ return {};
113
+ return resolved;
114
+ };
115
+ const stringField = (value, key) => {
116
+ const field = value[key];
117
+ return typeof field === "string" && field.trim() ? field.trim() : undefined;
118
+ };
119
+ const numberField = (value, key) => {
120
+ const field = value[key];
121
+ return typeof field === "number" ? field : undefined;
122
+ };
123
+ const assertLeadingZeroBytes = (stepId, leadingZeroBytes) => {
124
+ if (leadingZeroBytes === undefined)
125
+ return;
126
+ if (!Number.isInteger(leadingZeroBytes) || leadingZeroBytes < 0 || leadingZeroBytes > 20) {
127
+ throw new Error(`Step ${stepId} create2.leadingZeroBytes must be an integer from 0 to 20`);
128
+ }
129
+ };
130
+ const resolveCreate2Options = (context, step) => {
131
+ const strategy = typeof step.strategy === "string" ? step.strategy : undefined;
132
+ const stepCreate2 = resolveObject(context, step.create2);
133
+ const targetCreate2 = resolveObject(context, context.target.create2);
134
+ const targetUups = resolveObject(context, context.target.uups);
135
+ const targetMulticall = resolveObject(context, context.target.multicall);
136
+ if (strategy !== "create2" && Object.keys(stepCreate2).length === 0)
137
+ return undefined;
138
+ const rawScheme = stringField(targetCreate2, "scheme") || "evm";
139
+ if (rawScheme !== "evm" && rawScheme !== "zksync-eravm") {
140
+ throw new Error(`Step ${step.id} create2.scheme must be evm or zksync-eravm`);
141
+ }
142
+ const factory = stringField(stepCreate2, "factory") || stringField(targetCreate2, "factory");
143
+ const salt = stringField(stepCreate2, "salt");
144
+ const leadingZeroBytes = numberField(stepCreate2, "leadingZeroBytes")
145
+ ?? numberField(targetCreate2, "leadingZeroBytes");
146
+ const uupsPlaceholderImplementation = stringField(targetUups, "placeholderImplementation");
147
+ const controlledMulticall = stringField(targetMulticall, "controlledMulticall");
148
+ if (!factory)
149
+ throw new Error(`Step ${step.id} uses create2 but no factory address was provided`);
150
+ if (!salt)
151
+ throw new Error(`Step ${step.id} uses create2 but no salt was provided`);
152
+ assertLeadingZeroBytes(step.id, leadingZeroBytes);
153
+ if (step.upgradeableStrategy === "uups-placeholder-proxy" && !uupsPlaceholderImplementation) {
154
+ throw new Error(`Step ${step.id} requires target.uups.placeholderImplementation`);
155
+ }
156
+ return {
157
+ scheme: rawScheme,
158
+ factory,
159
+ salt,
160
+ controlledMulticall,
161
+ create2ForwardValue: stringField(stepCreate2, "create2ForwardValue"),
162
+ callForwardValue: stringField(stepCreate2, "callForwardValue"),
163
+ expectedAddress: stringField(stepCreate2, "expectedAddress"),
164
+ leadingZeroBytes,
165
+ uupsPlaceholderImplementation,
166
+ };
167
+ };
168
+ exports.resolveCreate2Options = resolveCreate2Options;
169
+ const hasLeadingZeroBytes = (address, leadingZeroBytes) => {
170
+ if (!(0, ethers_1.isAddress)(address))
171
+ throw new Error(`Invalid CREATE2 address: ${address}`);
172
+ return address.slice(2, 2 + leadingZeroBytes * 2).toLowerCase() === "00".repeat(leadingZeroBytes);
173
+ };
174
+ exports.hasLeadingZeroBytes = hasLeadingZeroBytes;
175
+ const assertCreate2AddressPolicy = (label, predictedAddress, options) => {
176
+ if (!(0, ethers_1.isAddress)(predictedAddress)) {
177
+ throw new Error(`${label} predicted invalid CREATE2 address: ${predictedAddress}`);
178
+ }
179
+ if (options.expectedAddress) {
180
+ if (!(0, ethers_1.isAddress)(options.expectedAddress)) {
181
+ throw new Error(`${label} expectedAddress is invalid: ${options.expectedAddress}`);
182
+ }
183
+ if ((0, ethers_1.getAddress)(predictedAddress) !== (0, ethers_1.getAddress)(options.expectedAddress)) {
184
+ throw new Error(`${label} predicted ${predictedAddress} but parameters expected ${options.expectedAddress}`);
185
+ }
186
+ }
187
+ if (options.leadingZeroBytes !== undefined
188
+ && !(0, exports.hasLeadingZeroBytes)(predictedAddress, options.leadingZeroBytes)) {
189
+ throw new Error(`${label} predicted ${predictedAddress} but create2.leadingZeroBytes requires prefix `
190
+ + `0x${"00".repeat(options.leadingZeroBytes)}`);
191
+ }
192
+ };
193
+ exports.assertCreate2AddressPolicy = assertCreate2AddressPolicy;
194
+ //# sourceMappingURL=create2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create2.js","sourceRoot":"","sources":["../../../runtime/workflow/lib/create2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type InterfaceAbi } from "ethers";
2
+ export type Create2AddressScheme = "evm" | "zksync-eravm";
3
+ export interface Create2HashArtifact {
4
+ _format?: string;
5
+ abi: InterfaceAbi;
6
+ bytecode: string;
7
+ }
8
+ export type CanonicalCreate2Hashes = {
9
+ scheme: "evm";
10
+ initCodeHash: string;
11
+ } | {
12
+ scheme: "zksync-eravm";
13
+ bytecodeHash: string;
14
+ constructorInputHash: string;
15
+ };
16
+ export declare const normalizeCreate2Scheme: (value: unknown) => Create2AddressScheme;
17
+ export declare const hashZkSyncBytecode: (bytecode: string) => string;
18
+ export declare const canonicalCreate2Hashes: (input: {
19
+ scheme?: Create2AddressScheme;
20
+ artifact: Create2HashArtifact;
21
+ args: unknown[];
22
+ }) => CanonicalCreate2Hashes;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicalCreate2Hashes = exports.hashZkSyncBytecode = exports.normalizeCreate2Scheme = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const ethers_1 = require("ethers");
6
+ const normalizeCreate2Scheme = (value) => {
7
+ if (value === undefined || value === null || value === "" || value === "evm") {
8
+ return "evm";
9
+ }
10
+ if (value === "zksync-eravm")
11
+ return value;
12
+ throw new Error("CREATE2 scheme must be evm or zksync-eravm");
13
+ };
14
+ exports.normalizeCreate2Scheme = normalizeCreate2Scheme;
15
+ const hashZkSyncBytecode = (bytecode) => {
16
+ const bytes = (0, ethers_1.getBytes)(bytecode);
17
+ if (bytes.length === 0 || bytes.length % 32 !== 0) {
18
+ throw new Error("zkSync EraVM bytecode length must be a non-zero multiple of 32 bytes");
19
+ }
20
+ const lengthInWords = bytes.length / 32;
21
+ if (lengthInWords % 2 === 0) {
22
+ throw new Error("zkSync EraVM bytecode must contain an odd number of 32-byte words");
23
+ }
24
+ if (lengthInWords > 0xffff) {
25
+ throw new Error("zkSync EraVM bytecode must contain fewer than 65536 words");
26
+ }
27
+ const digest = Uint8Array.from((0, node_crypto_1.createHash)("sha256").update(bytes).digest());
28
+ digest[0] = 1;
29
+ digest[1] = 0;
30
+ digest[2] = lengthInWords >> 8;
31
+ digest[3] = lengthInWords & 0xff;
32
+ return (0, ethers_1.hexlify)(digest).toLowerCase();
33
+ };
34
+ exports.hashZkSyncBytecode = hashZkSyncBytecode;
35
+ const canonicalCreate2Hashes = (input) => {
36
+ const scheme = (0, exports.normalizeCreate2Scheme)(input.scheme);
37
+ if (scheme === "zksync-eravm" && input.artifact._format !== "hh-zksolc-artifact-1") {
38
+ throw new Error("zkSync CREATE2 requires a zksolc artifact (hh-zksolc-artifact-1)");
39
+ }
40
+ if (scheme === "evm" && input.artifact._format !== "hh-sol-artifact-1") {
41
+ throw new Error("EVM CREATE2 requires a solc artifact (hh-sol-artifact-1)");
42
+ }
43
+ const constructorInput = new ethers_1.Interface(input.artifact.abi).encodeDeploy(input.args);
44
+ if (scheme === "zksync-eravm") {
45
+ return {
46
+ scheme,
47
+ bytecodeHash: (0, exports.hashZkSyncBytecode)(input.artifact.bytecode),
48
+ constructorInputHash: (0, ethers_1.keccak256)(constructorInput).toLowerCase(),
49
+ };
50
+ }
51
+ return {
52
+ scheme,
53
+ initCodeHash: (0, ethers_1.keccak256)((0, ethers_1.concat)([input.artifact.bytecode, constructorInput])).toLowerCase(),
54
+ };
55
+ };
56
+ exports.canonicalCreate2Hashes = canonicalCreate2Hashes;
57
+ //# sourceMappingURL=create2Hashes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create2Hashes.js","sourceRoot":"","sources":["../../../runtime/workflow/lib/create2Hashes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ContractInfo } from "./deployments";
2
+ export interface DeploymentInfoEntry {
3
+ contractInfoKey: string;
4
+ address: string;
5
+ actualContract: string;
6
+ proxyKind?: "uups" | "transparent";
7
+ implementationAddress?: string;
8
+ source: DeploymentInfoSource;
9
+ updatedAt: string;
10
+ }
11
+ export type DeploymentInfoSource = {
12
+ kind: "deployment";
13
+ deploymentId: string;
14
+ executionId: string;
15
+ recordPath: string;
16
+ } | {
17
+ kind: "migration";
18
+ migrationId: string;
19
+ evidencePath: string;
20
+ };
21
+ export interface DeploymentInfo {
22
+ version: 1;
23
+ networks: Record<string, Record<string, DeploymentInfoEntry>>;
24
+ }
25
+ export interface DeploymentRecordPromotionInput {
26
+ recordPath: string;
27
+ }
28
+ export declare const validateDeploymentInfo: (value: unknown) => DeploymentInfo;
29
+ export declare function loadDeploymentInfo(root: string): DeploymentInfo;
30
+ export declare function saveDeploymentInfo(root: string, value: DeploymentInfo): void;
31
+ export declare function prepareDeploymentInfoFromRecords(input: {
32
+ root: string;
33
+ records: DeploymentRecordPromotionInput[];
34
+ expectedContractInfo: ContractInfo;
35
+ }): DeploymentInfo;
36
+ export declare function updateDeploymentInfoFromRecords(input: {
37
+ root: string;
38
+ records: DeploymentRecordPromotionInput[];
39
+ expectedContractInfo: ContractInfo;
40
+ }): DeploymentInfo;
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateDeploymentInfo = void 0;
7
+ exports.loadDeploymentInfo = loadDeploymentInfo;
8
+ exports.saveDeploymentInfo = saveDeploymentInfo;
9
+ exports.prepareDeploymentInfoFromRecords = prepareDeploymentInfoFromRecords;
10
+ exports.updateDeploymentInfoFromRecords = updateDeploymentInfoFromRecords;
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const ethers_1 = require("ethers");
14
+ const config_1 = require("./config");
15
+ const deployments_1 = require("./deployments");
16
+ const isRecord = (value) => (Boolean(value) && typeof value === "object" && !Array.isArray(value));
17
+ const safeId = (value, label) => {
18
+ if (typeof value !== "string" || !/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(value)) {
19
+ throw new Error(`${label} must be a safe identifier`);
20
+ }
21
+ return value;
22
+ };
23
+ const address = (value, label) => {
24
+ if (typeof value !== "string" || !(0, ethers_1.isAddress)(value)) {
25
+ throw new Error(`${label} must be a valid EVM address`);
26
+ }
27
+ return (0, ethers_1.getAddress)(value);
28
+ };
29
+ const optionalAddress = (value, label) => (value === undefined ? undefined : address(value, label));
30
+ const deploymentInfoPath = (root) => path_1.default.join(root, "deploymentInfo.json");
31
+ const validateSource = (value, label) => {
32
+ if (!isRecord(value))
33
+ throw new Error(`${label} is required`);
34
+ const sourceKeys = Object.keys(value).sort();
35
+ if (value.kind === "migration") {
36
+ if (sourceKeys.join(",") !== "evidencePath,kind,migrationId") {
37
+ throw new Error(`${label} migration source must use the canonical fields`);
38
+ }
39
+ const migrationId = safeId(value.migrationId, `${label}.migrationId`);
40
+ const evidencePath = String(value.evidencePath).split(path_1.default.sep).join("/");
41
+ const expectedPath = `scripts/migrations/${migrationId}/state-import.json`;
42
+ if (evidencePath !== expectedPath) {
43
+ throw new Error(`${label}.evidencePath must be ${expectedPath}`);
44
+ }
45
+ return { kind: "migration", migrationId, evidencePath };
46
+ }
47
+ const legacyDeployment = value.kind === undefined
48
+ && sourceKeys.join(",") === "deploymentId,executionId,recordPath";
49
+ const canonicalDeployment = value.kind === "deployment"
50
+ && sourceKeys.join(",") === "deploymentId,executionId,kind,recordPath";
51
+ if (!legacyDeployment && !canonicalDeployment) {
52
+ throw new Error(`${label} deployment source must use the canonical fields`);
53
+ }
54
+ return {
55
+ kind: "deployment",
56
+ deploymentId: safeId(value.deploymentId, `${label}.deploymentId`),
57
+ executionId: safeId(value.executionId, `${label}.executionId`),
58
+ recordPath: String(value.recordPath),
59
+ };
60
+ };
61
+ const confinedRecordPath = (root, recordPath) => {
62
+ if (!recordPath || path_1.default.isAbsolute(recordPath)) {
63
+ throw new Error(`Deployment record path must be project-relative: ${recordPath}`);
64
+ }
65
+ const absolute = path_1.default.resolve(root, recordPath);
66
+ const relative = path_1.default.relative(path_1.default.resolve(root), absolute);
67
+ if (!relative || relative === ".." || relative.startsWith(`..${path_1.default.sep}`) || path_1.default.isAbsolute(relative)) {
68
+ throw new Error(`Deployment record path escapes the project: ${recordPath}`);
69
+ }
70
+ const stat = fs_1.default.lstatSync(absolute);
71
+ if (!stat.isFile() || stat.isSymbolicLink()) {
72
+ throw new Error(`Deployment record must be a regular file: ${recordPath}`);
73
+ }
74
+ return absolute;
75
+ };
76
+ const validateEntry = (value, label) => {
77
+ if (!isRecord(value))
78
+ throw new Error(`${label} must be an object`);
79
+ const allowed = new Set([
80
+ "contractInfoKey",
81
+ "address",
82
+ "actualContract",
83
+ "proxyKind",
84
+ "implementationAddress",
85
+ "source",
86
+ "updatedAt",
87
+ ]);
88
+ if (Object.keys(value).some((key) => !allowed.has(key))) {
89
+ throw new Error(`${label} contains unsupported fields`);
90
+ }
91
+ if (typeof value.contractInfoKey !== "string" || !value.contractInfoKey.trim()) {
92
+ throw new Error(`${label}.contractInfoKey is required`);
93
+ }
94
+ if (typeof value.actualContract !== "string" || !value.actualContract.trim()) {
95
+ throw new Error(`${label}.actualContract is required`);
96
+ }
97
+ if (value.proxyKind !== undefined && value.proxyKind !== "uups" && value.proxyKind !== "transparent") {
98
+ throw new Error(`${label}.proxyKind is invalid`);
99
+ }
100
+ if (typeof value.updatedAt !== "string" || !Number.isFinite(Date.parse(value.updatedAt))) {
101
+ throw new Error(`${label}.updatedAt must be an ISO timestamp`);
102
+ }
103
+ return {
104
+ contractInfoKey: value.contractInfoKey,
105
+ address: address(value.address, `${label}.address`),
106
+ actualContract: value.actualContract,
107
+ ...(value.proxyKind ? { proxyKind: value.proxyKind } : {}),
108
+ ...(value.implementationAddress
109
+ ? { implementationAddress: address(value.implementationAddress, `${label}.implementationAddress`) }
110
+ : {}),
111
+ source: validateSource(value.source, `${label}.source`),
112
+ updatedAt: value.updatedAt,
113
+ };
114
+ };
115
+ const validateDeploymentInfo = (value) => {
116
+ if (!isRecord(value) || value.version !== 1 || !isRecord(value.networks)) {
117
+ throw new Error("deploymentInfo.json must contain version 1 network metadata");
118
+ }
119
+ if (Object.keys(value).some((key) => key !== "version" && key !== "networks")) {
120
+ throw new Error("deploymentInfo.json contains unsupported fields");
121
+ }
122
+ const networks = {};
123
+ for (const [network, entries] of Object.entries(value.networks)) {
124
+ safeId(network, "deploymentInfo network");
125
+ if (!isRecord(entries))
126
+ throw new Error(`deploymentInfo network ${network} must be an object`);
127
+ networks[network] = Object.fromEntries(Object.entries(entries).map(([instanceId, entry]) => [
128
+ safeId(instanceId, `deploymentInfo ${network} instanceId`),
129
+ validateEntry(entry, `deploymentInfo ${network}.${instanceId}`),
130
+ ]));
131
+ }
132
+ return { version: 1, networks };
133
+ };
134
+ exports.validateDeploymentInfo = validateDeploymentInfo;
135
+ function loadDeploymentInfo(root) {
136
+ const filePath = deploymentInfoPath(root);
137
+ if (!fs_1.default.existsSync(filePath))
138
+ return { version: 1, networks: {} };
139
+ return (0, exports.validateDeploymentInfo)((0, config_1.readJsonFile)(filePath));
140
+ }
141
+ function saveDeploymentInfo(root, value) {
142
+ (0, config_1.writeJsonFile)(deploymentInfoPath(root), (0, exports.validateDeploymentInfo)(value));
143
+ }
144
+ function prepareDeploymentInfoFromRecords(input) {
145
+ const expectedContractInfo = (0, deployments_1.validateContractInfo)(input.expectedContractInfo);
146
+ const current = loadDeploymentInfo(input.root);
147
+ const networks = Object.fromEntries(Object.entries(current.networks).map(([network, entries]) => [
148
+ network,
149
+ { ...entries },
150
+ ]));
151
+ const seenPaths = new Set();
152
+ for (const inputRecord of input.records) {
153
+ if (seenPaths.has(inputRecord.recordPath))
154
+ throw new Error(`Duplicate deployment record path: ${inputRecord.recordPath}`);
155
+ seenPaths.add(inputRecord.recordPath);
156
+ const absolutePath = confinedRecordPath(input.root, inputRecord.recordPath);
157
+ const record = (0, config_1.readJsonFile)(absolutePath);
158
+ if (!isRecord(record) || !Array.isArray(record.changes)) {
159
+ throw new Error(`Deployment record is malformed: ${inputRecord.recordPath}`);
160
+ }
161
+ const network = safeId(record.network, "deployment record network");
162
+ const deploymentId = safeId(record.taskId, "deployment record taskId");
163
+ const executionId = safeId(record.executionId, "deployment record executionId");
164
+ const targetEntries = { ...(networks[network] ?? {}) };
165
+ for (const [index, rawChange] of record.changes.entries()) {
166
+ if (!isRecord(rawChange))
167
+ throw new Error(`Deployment record change ${index} must be an object`);
168
+ const instanceId = safeId(rawChange.instanceId, `deployment record change ${index} instanceId`);
169
+ const actualContract = safeId(rawChange.actualContract, `deployment record change ${index} actualContract`);
170
+ if (typeof rawChange.contractInfoKey !== "string" || !rawChange.contractInfoKey.trim()) {
171
+ throw new Error(`Deployment record change ${index} contractInfoKey is required`);
172
+ }
173
+ const resolved = (0, deployments_1.resolveDeployment)(expectedContractInfo, network, instanceId);
174
+ if (!resolved || resolved.key !== rawChange.contractInfoKey) {
175
+ throw new Error(`Deployment metadata conflicts with contractInfo for ${network}.${instanceId}`);
176
+ }
177
+ const deployedAddress = address(rawChange.proxyAddress ?? rawChange.candidateAddress ?? rawChange.address, `deployment record change ${index} address`);
178
+ if (resolved.address.toLowerCase() !== deployedAddress.toLowerCase()) {
179
+ throw new Error(`Deployment metadata address conflicts with contractInfo for ${network}.${instanceId}`);
180
+ }
181
+ const existing = targetEntries[instanceId];
182
+ if (existing
183
+ && existing.address.toLowerCase() !== deployedAddress.toLowerCase()
184
+ && optionalAddress(rawChange.previousAddress, `deployment record change ${index} previousAddress`)?.toLowerCase()
185
+ !== existing.address.toLowerCase()) {
186
+ throw new Error(`Deployment metadata address conflict for ${network}.${instanceId}`);
187
+ }
188
+ const rawProxyKind = rawChange.proxyKind === undefined
189
+ ? existing?.proxyKind
190
+ : rawChange.proxyKind;
191
+ if (rawProxyKind !== undefined && rawProxyKind !== "uups" && rawProxyKind !== "transparent") {
192
+ throw new Error(`Deployment record change ${index} proxyKind is invalid`);
193
+ }
194
+ const proxyKind = rawProxyKind;
195
+ const implementationAddress = rawChange.implementationAddress === undefined
196
+ ? existing?.implementationAddress
197
+ : optionalAddress(rawChange.implementationAddress, `deployment record change ${index} implementationAddress`);
198
+ const nextEntry = {
199
+ contractInfoKey: rawChange.contractInfoKey,
200
+ address: deployedAddress,
201
+ actualContract,
202
+ ...(proxyKind ? { proxyKind } : {}),
203
+ ...(implementationAddress ? { implementationAddress } : {}),
204
+ source: {
205
+ kind: "deployment",
206
+ deploymentId,
207
+ executionId,
208
+ recordPath: inputRecord.recordPath,
209
+ },
210
+ };
211
+ const existingComparable = existing
212
+ ? {
213
+ contractInfoKey: existing.contractInfoKey,
214
+ address: existing.address,
215
+ actualContract: existing.actualContract,
216
+ ...(existing.proxyKind ? { proxyKind: existing.proxyKind } : {}),
217
+ ...(existing.implementationAddress
218
+ ? { implementationAddress: existing.implementationAddress }
219
+ : {}),
220
+ source: existing.source,
221
+ }
222
+ : undefined;
223
+ targetEntries[instanceId] = {
224
+ ...nextEntry,
225
+ updatedAt: existingComparable
226
+ && JSON.stringify(existingComparable) === JSON.stringify(nextEntry)
227
+ ? existing.updatedAt
228
+ : new Date().toISOString(),
229
+ };
230
+ }
231
+ networks[network] = targetEntries;
232
+ }
233
+ return (0, exports.validateDeploymentInfo)({ version: 1, networks });
234
+ }
235
+ function updateDeploymentInfoFromRecords(input) {
236
+ const next = prepareDeploymentInfoFromRecords(input);
237
+ saveDeploymentInfo(input.root, next);
238
+ return next;
239
+ }
240
+ //# sourceMappingURL=deploymentInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploymentInfo.js","sourceRoot":"","sources":["../../../runtime/workflow/lib/deploymentInfo.ts"],"names":[],"mappings":"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"}