@hyperlane-xyz/cli 3.1.9 → 3.2.0-alpha

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 (228) hide show
  1. package/README.md +6 -1
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +27 -3
  5. package/dist/cli.js.map +1 -1
  6. package/dist/env.d.ts +2 -0
  7. package/dist/env.d.ts.map +1 -0
  8. package/dist/env.js +14 -0
  9. package/dist/env.js.map +1 -0
  10. package/dist/src/avs/config.d.ts +11 -0
  11. package/dist/src/avs/config.d.ts.map +1 -0
  12. package/dist/src/avs/config.js +10 -0
  13. package/dist/src/avs/config.js.map +1 -0
  14. package/dist/src/avs/stakeRegistry.d.ts +19 -0
  15. package/dist/src/avs/stakeRegistry.d.ts.map +1 -0
  16. package/dist/src/avs/stakeRegistry.js +94 -0
  17. package/dist/src/avs/stakeRegistry.js.map +1 -0
  18. package/dist/src/commands/avs.d.ts +12 -0
  19. package/dist/src/commands/avs.d.ts.map +1 -0
  20. package/dist/src/commands/avs.js +58 -0
  21. package/dist/src/commands/avs.js.map +1 -0
  22. package/dist/src/commands/chains.d.ts.map +1 -1
  23. package/dist/src/commands/chains.js +46 -27
  24. package/dist/src/commands/chains.js.map +1 -1
  25. package/dist/src/commands/config.js +74 -85
  26. package/dist/src/commands/config.js.map +1 -1
  27. package/dist/src/commands/deploy.d.ts.map +1 -1
  28. package/dist/src/commands/deploy.js +58 -91
  29. package/dist/src/commands/deploy.js.map +1 -1
  30. package/dist/src/commands/hook.d.ts +12 -0
  31. package/dist/src/commands/hook.d.ts.map +1 -0
  32. package/dist/src/commands/hook.js +34 -0
  33. package/dist/src/commands/hook.js.map +1 -0
  34. package/dist/src/commands/ism.d.ts +12 -0
  35. package/dist/src/commands/ism.d.ts.map +1 -0
  36. package/dist/src/commands/ism.js +36 -0
  37. package/dist/src/commands/ism.js.map +1 -0
  38. package/dist/src/commands/options.d.ts +19 -7
  39. package/dist/src/commands/options.d.ts.map +1 -1
  40. package/dist/src/commands/options.js +90 -27
  41. package/dist/src/commands/options.js.map +1 -1
  42. package/dist/src/commands/send.d.ts +14 -1
  43. package/dist/src/commands/send.d.ts.map +1 -1
  44. package/dist/src/commands/send.js +32 -55
  45. package/dist/src/commands/send.js.map +1 -1
  46. package/dist/src/commands/signCommands.d.ts +3 -0
  47. package/dist/src/commands/signCommands.d.ts.map +1 -0
  48. package/dist/src/commands/signCommands.js +11 -0
  49. package/dist/src/commands/signCommands.js.map +1 -0
  50. package/dist/src/commands/status.d.ts +5 -2
  51. package/dist/src/commands/status.d.ts.map +1 -1
  52. package/dist/src/commands/status.js +9 -19
  53. package/dist/src/commands/status.js.map +1 -1
  54. package/dist/src/config/chain.d.ts +5 -7
  55. package/dist/src/config/chain.d.ts.map +1 -1
  56. package/dist/src/config/chain.js +94 -64
  57. package/dist/src/config/chain.js.map +1 -1
  58. package/dist/src/config/chain.test.d.ts +2 -0
  59. package/dist/src/config/chain.test.d.ts.map +1 -0
  60. package/dist/src/config/chain.test.js +9 -0
  61. package/dist/src/config/chain.test.js.map +1 -0
  62. package/dist/src/config/hooks.d.ts +91 -214
  63. package/dist/src/config/hooks.d.ts.map +1 -1
  64. package/dist/src/config/hooks.js +218 -122
  65. package/dist/src/config/hooks.js.map +1 -1
  66. package/dist/src/config/ism.d.ts +74 -0
  67. package/dist/src/config/ism.d.ts.map +1 -0
  68. package/dist/src/config/ism.js +223 -0
  69. package/dist/src/config/ism.js.map +1 -0
  70. package/dist/src/config/multisig.d.ts +4 -14
  71. package/dist/src/config/multisig.d.ts.map +1 -1
  72. package/dist/src/config/multisig.js +35 -29
  73. package/dist/src/config/multisig.js.map +1 -1
  74. package/dist/src/config/warp.d.ts +7 -180
  75. package/dist/src/config/warp.d.ts.map +1 -1
  76. package/dist/src/config/warp.js +55 -62
  77. package/dist/src/config/warp.js.map +1 -1
  78. package/dist/src/consts.d.ts +1 -0
  79. package/dist/src/consts.d.ts.map +1 -1
  80. package/dist/src/consts.js +1 -0
  81. package/dist/src/consts.js.map +1 -1
  82. package/dist/src/context/context.d.ts +14 -0
  83. package/dist/src/context/context.d.ts.map +1 -0
  84. package/dist/src/context/context.js +108 -0
  85. package/dist/src/context/context.js.map +1 -0
  86. package/dist/src/context/types.d.ts +33 -0
  87. package/dist/src/context/types.d.ts.map +1 -0
  88. package/dist/src/context/types.js.map +1 -0
  89. package/dist/src/deploy/agent.d.ts +6 -4
  90. package/dist/src/deploy/agent.d.ts.map +1 -1
  91. package/dist/src/deploy/agent.js +10 -24
  92. package/dist/src/deploy/agent.js.map +1 -1
  93. package/dist/src/deploy/core.d.ts +10 -7
  94. package/dist/src/deploy/core.d.ts.map +1 -1
  95. package/dist/src/deploy/core.js +156 -160
  96. package/dist/src/deploy/core.js.map +1 -1
  97. package/dist/src/deploy/dry-run.d.ts +19 -0
  98. package/dist/src/deploy/dry-run.d.ts.map +1 -0
  99. package/dist/src/deploy/dry-run.js +45 -0
  100. package/dist/src/deploy/dry-run.js.map +1 -0
  101. package/dist/src/deploy/utils.d.ts +15 -8
  102. package/dist/src/deploy/utils.d.ts.map +1 -1
  103. package/dist/src/deploy/utils.js +60 -11
  104. package/dist/src/deploy/utils.js.map +1 -1
  105. package/dist/src/deploy/warp.d.ts +4 -7
  106. package/dist/src/deploy/warp.d.ts.map +1 -1
  107. package/dist/src/deploy/warp.js +131 -169
  108. package/dist/src/deploy/warp.js.map +1 -1
  109. package/dist/src/hook/read.d.ts +13 -0
  110. package/dist/src/hook/read.d.ts.map +1 -0
  111. package/dist/src/hook/read.js +25 -0
  112. package/dist/src/hook/read.js.map +1 -0
  113. package/dist/src/ism/read.d.ts +13 -0
  114. package/dist/src/ism/read.d.ts.map +1 -0
  115. package/dist/src/ism/read.js +25 -0
  116. package/dist/src/ism/read.js.map +1 -0
  117. package/dist/src/logger.d.ts +17 -0
  118. package/dist/src/logger.d.ts.map +1 -0
  119. package/dist/src/logger.js +32 -0
  120. package/dist/src/logger.js.map +1 -0
  121. package/dist/src/registry/MergedRegistry.d.ts +35 -0
  122. package/dist/src/registry/MergedRegistry.d.ts.map +1 -0
  123. package/dist/src/registry/MergedRegistry.js +83 -0
  124. package/dist/src/registry/MergedRegistry.js.map +1 -0
  125. package/dist/src/send/message.d.ts +7 -6
  126. package/dist/src/send/message.d.ts.map +1 -1
  127. package/dist/src/send/message.js +40 -22
  128. package/dist/src/send/message.js.map +1 -1
  129. package/dist/src/send/transfer.d.ts +8 -10
  130. package/dist/src/send/transfer.d.ts.map +1 -1
  131. package/dist/src/send/transfer.js +68 -70
  132. package/dist/src/send/transfer.js.map +1 -1
  133. package/dist/src/status/message.d.ts +7 -5
  134. package/dist/src/status/message.d.ts.map +1 -1
  135. package/dist/src/status/message.js +25 -12
  136. package/dist/src/status/message.js.map +1 -1
  137. package/dist/src/submit/submit.d.ts +5 -0
  138. package/dist/src/submit/submit.d.ts.map +1 -0
  139. package/dist/src/submit/submit.js +30 -0
  140. package/dist/src/submit/submit.js.map +1 -0
  141. package/dist/src/submit/types.d.ts +18 -0
  142. package/dist/src/submit/types.d.ts.map +1 -0
  143. package/dist/src/submit/types.js +2 -0
  144. package/dist/src/{deploy → submit}/types.js.map +1 -1
  145. package/dist/src/tests/deployTestErc20.d.ts +2 -0
  146. package/dist/src/tests/deployTestErc20.d.ts.map +1 -0
  147. package/dist/src/tests/deployTestErc20.js +26 -0
  148. package/dist/src/tests/deployTestErc20.js.map +1 -0
  149. package/dist/src/tests/hooks.test.d.ts +2 -0
  150. package/dist/src/tests/hooks.test.d.ts.map +1 -0
  151. package/dist/src/tests/hooks.test.js +83 -0
  152. package/dist/src/tests/hooks.test.js.map +1 -0
  153. package/dist/src/tests/ism.test.d.ts +2 -0
  154. package/dist/src/tests/ism.test.d.ts.map +1 -0
  155. package/dist/src/tests/ism.test.js +76 -0
  156. package/dist/src/tests/ism.test.js.map +1 -0
  157. package/dist/src/tests/multisig.test.d.ts +2 -0
  158. package/dist/src/tests/multisig.test.d.ts.map +1 -0
  159. package/dist/src/tests/multisig.test.js +34 -0
  160. package/dist/src/tests/multisig.test.js.map +1 -0
  161. package/dist/src/utils/balances.d.ts +2 -4
  162. package/dist/src/utils/balances.d.ts.map +1 -1
  163. package/dist/src/utils/balances.js +8 -12
  164. package/dist/src/utils/balances.js.map +1 -1
  165. package/dist/src/utils/chains.d.ts +3 -2
  166. package/dist/src/utils/chains.d.ts.map +1 -1
  167. package/dist/src/utils/chains.js +42 -23
  168. package/dist/src/utils/chains.js.map +1 -1
  169. package/dist/src/utils/env.d.ts +6 -0
  170. package/dist/src/utils/env.d.ts.map +1 -0
  171. package/dist/src/utils/env.js +9 -0
  172. package/dist/src/utils/env.js.map +1 -0
  173. package/dist/src/utils/files.d.ts +7 -4
  174. package/dist/src/utils/files.d.ts.map +1 -1
  175. package/dist/src/utils/files.js +52 -29
  176. package/dist/src/utils/files.js.map +1 -1
  177. package/dist/src/utils/keys.d.ts +28 -1
  178. package/dist/src/utils/keys.d.ts.map +1 -1
  179. package/dist/src/utils/keys.js +65 -6
  180. package/dist/src/utils/keys.js.map +1 -1
  181. package/dist/src/utils/time.d.ts.map +1 -1
  182. package/dist/src/utils/time.js +8 -1
  183. package/dist/src/utils/time.js.map +1 -1
  184. package/dist/src/utils/time.test.d.ts +2 -0
  185. package/dist/src/utils/time.test.d.ts.map +1 -0
  186. package/dist/src/utils/time.test.js +9 -0
  187. package/dist/src/utils/time.test.js.map +1 -0
  188. package/dist/src/utils/tokens.d.ts +3 -0
  189. package/dist/src/utils/tokens.d.ts.map +1 -0
  190. package/dist/src/utils/tokens.js +14 -0
  191. package/dist/src/utils/tokens.js.map +1 -0
  192. package/dist/src/utils/version-check.d.ts +2 -0
  193. package/dist/src/utils/version-check.d.ts.map +1 -0
  194. package/dist/src/utils/version-check.js +15 -0
  195. package/dist/src/utils/version-check.js.map +1 -0
  196. package/dist/src/version.d.ts +2 -0
  197. package/dist/src/version.d.ts.map +1 -0
  198. package/dist/src/version.js +2 -0
  199. package/dist/src/version.js.map +1 -0
  200. package/examples/chain-config.yaml +38 -40
  201. package/examples/contract-artifacts.yaml +4 -4
  202. package/examples/hooks.yaml +66 -0
  203. package/examples/ism-advanced.yaml +33 -0
  204. package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
  205. package/examples/warp-route-deployment.yaml +32 -0
  206. package/package.json +27 -14
  207. package/dist/logger.d.ts +0 -13
  208. package/dist/logger.d.ts.map +0 -1
  209. package/dist/logger.js +0 -44
  210. package/dist/logger.js.map +0 -1
  211. package/dist/src/config/artifacts.d.ts +0 -3
  212. package/dist/src/config/artifacts.d.ts.map +0 -1
  213. package/dist/src/config/artifacts.js +0 -18
  214. package/dist/src/config/artifacts.js.map +0 -1
  215. package/dist/src/context.d.ts +0 -388
  216. package/dist/src/context.d.ts.map +0 -1
  217. package/dist/src/context.js +0 -30
  218. package/dist/src/context.js.map +0 -1
  219. package/dist/src/deploy/TestRecipientDeployer.d.ts +0 -20
  220. package/dist/src/deploy/TestRecipientDeployer.d.ts.map +0 -1
  221. package/dist/src/deploy/TestRecipientDeployer.js +0 -36
  222. package/dist/src/deploy/TestRecipientDeployer.js.map +0 -1
  223. package/dist/src/deploy/types.d.ts +0 -21
  224. package/dist/src/deploy/types.d.ts.map +0 -1
  225. package/examples/anvil-chains.yaml +0 -22
  226. package/examples/hook-config.yaml +0 -18
  227. package/examples/warp-tokens.yaml +0 -26
  228. /package/dist/src/{deploy → context}/types.js +0 -0
@@ -1,51 +1,70 @@
1
- import { Separator, checkbox } from '@inquirer/prompts';
1
+ import { Separator, checkbox, confirm, input } from '@inquirer/prompts';
2
2
  import select from '@inquirer/select';
3
3
  import chalk from 'chalk';
4
- import { mainnetChainsMetadata, testnetChainsMetadata, } from '@hyperlane-xyz/sdk';
5
- import { log, logBlue } from '../../logger.js';
4
+ import { log, logRed, logTip } from '../logger.js';
6
5
  // A special value marker to indicate user selected
7
6
  // a new chain in the list
8
7
  const NEW_CHAIN_MARKER = '__new__';
9
- export async function runSingleChainSelectionStep(customChains, message = 'Select chain') {
10
- const choices = getChainChoices(customChains);
8
+ export async function runSingleChainSelectionStep(chainMetadata, message = 'Select chain') {
9
+ const choices = getChainChoices(chainMetadata);
11
10
  const chain = (await select({
12
11
  message,
13
12
  choices,
14
- pageSize: 20,
13
+ pageSize: 30,
15
14
  }));
16
15
  handleNewChain([chain]);
17
16
  return chain;
18
17
  }
19
- export async function runMultiChainSelectionStep(customChains, message = 'Select chains') {
20
- const choices = getChainChoices(customChains);
21
- const chains = (await checkbox({
22
- message,
23
- choices,
24
- pageSize: 20,
25
- }));
26
- handleNewChain(chains);
27
- if (!chains?.length)
28
- throw new Error('No chains selected');
29
- return chains;
18
+ export async function runMultiChainSelectionStep(chainMetadata, message = 'Select chains', requireMultiple = false) {
19
+ const choices = getChainChoices(chainMetadata);
20
+ while (true) {
21
+ logTip('Use SPACE key to select chains, then press ENTER');
22
+ const chains = (await checkbox({
23
+ message,
24
+ choices,
25
+ pageSize: 30,
26
+ }));
27
+ handleNewChain(chains);
28
+ if (requireMultiple && chains?.length < 2) {
29
+ logRed('Please select at least 2 chains');
30
+ continue;
31
+ }
32
+ return chains;
33
+ }
30
34
  }
31
- function getChainChoices(customChains) {
35
+ function getChainChoices(chainMetadata) {
32
36
  const chainsToChoices = (chains) => chains.map((c) => ({ name: c.name, value: c.name }));
37
+ const chains = Object.values(chainMetadata);
38
+ const testnetChains = chains.filter((c) => !!c.isTestnet);
39
+ const mainnetChains = chains.filter((c) => !c.isTestnet);
33
40
  const choices = [
34
- new Separator('--Custom Chains--'),
35
- ...chainsToChoices(Object.values(customChains)),
36
41
  { name: '(New custom chain)', value: NEW_CHAIN_MARKER },
37
42
  new Separator('--Mainnet Chains--'),
38
- ...chainsToChoices(mainnetChainsMetadata),
43
+ ...chainsToChoices(mainnetChains),
39
44
  new Separator('--Testnet Chains--'),
40
- ...chainsToChoices(testnetChainsMetadata),
45
+ ...chainsToChoices(testnetChains),
41
46
  ];
42
47
  return choices;
43
48
  }
44
49
  function handleNewChain(chainNames) {
45
50
  if (chainNames.includes(NEW_CHAIN_MARKER)) {
46
- logBlue('To use a new chain, use the --config argument add them to that file');
47
51
  log(chalk.blue('Use the'), chalk.magentaBright('hyperlane config create'), chalk.blue('command to create new configs'));
48
52
  process.exit(0);
49
53
  }
50
54
  }
55
+ export async function detectAndConfirmOrPrompt(detect, label, prompt) {
56
+ let detectedValue;
57
+ try {
58
+ detectedValue = await detect();
59
+ const confirmed = await confirm({
60
+ message: `Detected ${label} as ${detectedValue}, is this correct?`,
61
+ });
62
+ if (confirmed) {
63
+ return detectedValue;
64
+ }
65
+ // eslint-disable-next-line no-empty
66
+ }
67
+ catch (e) { }
68
+ return input({ message: `${prompt} ${label}`, default: detectedValue });
69
+ }
51
70
  //# sourceMappingURL=chains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAGL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,mDAAmD;AACnD,0BAA0B;AAC1B,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAqC,EACrC,OAAO,GAAG,cAAc;IAExB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC;QAC1B,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,EAAE;KACb,CAAC,CAAW,CAAC;IACd,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,YAAqC,EACrC,OAAO,GAAG,eAAe;IAEzB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC;QAC7B,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,EAAE;KACb,CAAC,CAAa,CAAC;IAChB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,YAAqC;IAC5D,MAAM,eAAe,GAAG,CAAC,MAAuB,EAAE,EAAE,CAClD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAA8C;QACzD,IAAI,SAAS,CAAC,mBAAmB,CAAC;QAClC,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE;QACvD,IAAI,SAAS,CAAC,oBAAoB,CAAC;QACnC,GAAG,eAAe,CAAC,qBAAqB,CAAC;QACzC,IAAI,SAAS,CAAC,oBAAoB,CAAC;QACnC,GAAG,eAAe,CAAC,qBAAqB,CAAC;KAC1C,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,UAAoB;IAC1C,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QACzC,OAAO,CACL,qEAAqE,CACtE,CAAC;QACF,GAAG,CACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EACrB,KAAK,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAC9C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAC5C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC"}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const ENV: {
2
+ HYP_KEY?: string | undefined;
3
+ ANVIL_IP_ADDR?: string | undefined;
4
+ ANVIL_PORT?: number | undefined;
5
+ };
6
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,GAAG;;;;CAA0C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import z from 'zod';
2
+ const envScheme = z.object({
3
+ HYP_KEY: z.string().optional(),
4
+ ANVIL_IP_ADDR: z.string().optional(),
5
+ ANVIL_PORT: z.number().optional(),
6
+ });
7
+ const parsedEnv = envScheme.safeParse(process.env);
8
+ export const ENV = parsedEnv.success ? parsedEnv.data : {};
9
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC"}
@@ -1,4 +1,10 @@
1
1
  export type FileFormat = 'yaml' | 'json';
2
+ export type ArtifactsFile = {
3
+ filename: string;
4
+ description: string;
5
+ };
6
+ export declare function resolvePath(filePath: string): string;
7
+ export declare function isFile(filepath: string): boolean;
2
8
  export declare function readFileAtPath(filepath: string): string;
3
9
  export declare function writeFileAtPath(filepath: string, value: string): void;
4
10
  export declare function readJson<T>(filepath: string): T;
@@ -12,9 +18,6 @@ export declare function mergeYaml<T extends Record<string, any>>(filepath: strin
12
18
  export declare function readYamlOrJson<T>(filepath: string, format?: FileFormat): T;
13
19
  export declare function writeYamlOrJson(filepath: string, obj: Record<string, any>, format?: FileFormat): any;
14
20
  export declare function mergeYamlOrJson(filepath: string, obj: Record<string, any>, format?: FileFormat): any;
15
- export declare function prepNewArtifactsFiles(outPath: string, files: Array<{
16
- filename: string;
17
- description: string;
18
- }>): string[];
21
+ export declare function resolveFileFormat(filepath?: string, format?: FileFormat): FileFormat | undefined;
19
22
  export declare function runFileSelectionStep(folderPath: string, description: string, pattern?: string): Promise<string>;
20
23
  //# sourceMappingURL=files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/utils/files.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAK9C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAM9D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAMzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAM/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAE1E;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,CAAC,EAAE,UAAU,OAQpB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,CAAC,EAAE,UAAU,OAQpB;AAqBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,YAYxD;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,mBAwBjB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/utils/files.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,WAQtC;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAK9C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAM9D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAMzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAM/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAE1E;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,CAAC,EAAE,UAAU,OAQpB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,GAAE,UAAmB,OAQ5B;AAoBD,wBAAgB,iBAAiB,CAC/B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,UAAU,GAClB,UAAU,GAAG,SAAS,CAmBxB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,mBA6BjB"}
@@ -1,20 +1,38 @@
1
1
  import { input } from '@inquirer/prompts';
2
2
  import select from '@inquirer/select';
3
3
  import fs from 'fs';
4
+ import os from 'os';
4
5
  import path from 'path';
5
6
  import { parse as yamlParse, stringify as yamlStringify } from 'yaml';
6
7
  import { objMerge } from '@hyperlane-xyz/utils';
7
- import { logBlue } from '../../logger.js';
8
- import { getTimestampForFilename } from './time.js';
8
+ import { log } from '../logger.js';
9
+ export function resolvePath(filePath) {
10
+ if (filePath.startsWith('~')) {
11
+ const homedir = os.homedir();
12
+ return path.join(homedir, filePath.slice(1));
13
+ }
14
+ return filePath;
15
+ }
16
+ export function isFile(filepath) {
17
+ if (!filepath)
18
+ return false;
19
+ try {
20
+ return fs.existsSync(filepath) && fs.lstatSync(filepath).isFile();
21
+ }
22
+ catch (error) {
23
+ log(`Error checking for file: ${filepath}`);
24
+ return false;
25
+ }
26
+ }
9
27
  export function readFileAtPath(filepath) {
10
- if (!fs.existsSync(filepath)) {
28
+ if (!isFile(filepath)) {
11
29
  throw Error(`File doesn't exist at ${filepath}`);
12
30
  }
13
31
  return fs.readFileSync(filepath, 'utf8');
14
32
  }
15
33
  export function writeFileAtPath(filepath, value) {
16
34
  const dirname = path.dirname(filepath);
17
- if (!fs.existsSync(dirname)) {
35
+ if (!isFile(dirname)) {
18
36
  fs.mkdirSync(dirname, { recursive: true });
19
37
  }
20
38
  fs.writeFileSync(filepath, value);
@@ -34,7 +52,7 @@ export function writeJson(filepath, obj) {
34
52
  writeFileAtPath(filepath, JSON.stringify(obj, null, 2) + '\n');
35
53
  }
36
54
  export function mergeJson(filepath, obj) {
37
- if (fs.existsSync(filepath)) {
55
+ if (isFile(filepath)) {
38
56
  const previous = readJson(filepath);
39
57
  writeJson(filepath, objMerge(previous, obj));
40
58
  }
@@ -57,7 +75,7 @@ export function writeYaml(filepath, obj) {
57
75
  writeFileAtPath(filepath, yamlStringify(obj, null, 2) + '\n');
58
76
  }
59
77
  export function mergeYaml(filepath, obj) {
60
- if (fs.existsSync(filepath)) {
78
+ if (isFile(filepath)) {
61
79
  const previous = readYaml(filepath);
62
80
  writeYaml(filepath, objMerge(previous, obj));
63
81
  }
@@ -66,44 +84,49 @@ export function mergeYaml(filepath, obj) {
66
84
  }
67
85
  }
68
86
  export function readYamlOrJson(filepath, format) {
69
- return resolveYamlOrJson(filepath, readJson, readYaml, format);
87
+ return resolveYamlOrJsonFn(filepath, readJson, readYaml, format);
70
88
  }
71
89
  export function writeYamlOrJson(filepath, obj, format) {
72
- return resolveYamlOrJson(filepath, (f) => writeJson(f, obj), (f) => writeYaml(f, obj), format);
90
+ return resolveYamlOrJsonFn(filepath, (f) => writeJson(f, obj), (f) => writeYaml(f, obj), format);
73
91
  }
74
- export function mergeYamlOrJson(filepath, obj, format) {
75
- return resolveYamlOrJson(filepath, (f) => mergeJson(f, obj), (f) => mergeYaml(f, obj), format);
92
+ export function mergeYamlOrJson(filepath, obj, format = 'yaml') {
93
+ return resolveYamlOrJsonFn(filepath, (f) => mergeJson(f, obj), (f) => mergeYaml(f, obj), format);
76
94
  }
77
- function resolveYamlOrJson(filepath, jsonFn, yamlFn, format) {
78
- if (format === 'json' || filepath.endsWith('.json')) {
95
+ function resolveYamlOrJsonFn(filepath, jsonFn, yamlFn, format) {
96
+ const fileFormat = resolveFileFormat(filepath, format);
97
+ if (!fileFormat) {
98
+ throw new Error(`Invalid file format for ${filepath}`);
99
+ }
100
+ if (fileFormat === 'json') {
79
101
  return jsonFn(filepath);
80
102
  }
81
- else if (format === 'yaml' ||
82
- filepath.endsWith('.yaml') ||
83
- filepath.endsWith('.yml')) {
84
- return yamlFn(filepath);
103
+ return yamlFn(filepath);
104
+ }
105
+ export function resolveFileFormat(filepath, format) {
106
+ // early out if filepath is undefined
107
+ if (!filepath) {
108
+ return format;
85
109
  }
86
- else {
87
- throw new Error(`Invalid file format for ${filepath}`);
110
+ if (format === 'json' || filepath?.endsWith('.json')) {
111
+ return 'json';
88
112
  }
89
- }
90
- export function prepNewArtifactsFiles(outPath, files) {
91
- const timestamp = getTimestampForFilename();
92
- const newPaths = [];
93
- for (const file of files) {
94
- const filePath = path.join(outPath, `${file.filename}-${timestamp}.json`);
95
- // Write empty object to ensure permissions are okay
96
- writeJson(filePath, {});
97
- newPaths.push(filePath);
98
- logBlue(`${file.description} will be written to ${filePath}`);
113
+ if (format === 'yaml' ||
114
+ filepath?.endsWith('.yaml') ||
115
+ filepath?.endsWith('.yml')) {
116
+ return 'yaml';
99
117
  }
100
- return newPaths;
118
+ return undefined;
101
119
  }
102
120
  export async function runFileSelectionStep(folderPath, description, pattern) {
121
+ const noFilesErrorMessage = `No "${description}" found in ${folderPath}. Please confirm the path for "${description}". By default, the CLI writes to folders relative to where its run.`;
122
+ if (!fs.existsSync(folderPath))
123
+ throw new Error(noFilesErrorMessage);
103
124
  let filenames = fs.readdirSync(folderPath);
104
125
  if (pattern) {
105
126
  filenames = filenames.filter((f) => f.includes(pattern));
106
127
  }
128
+ if (filenames.length === 0)
129
+ throw new Error(noFilesErrorMessage);
107
130
  let filename = (await select({
108
131
  message: `Select ${description} file`,
109
132
  choices: [
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/utils/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/utils/files.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,31 @@
1
1
  import { ethers } from 'ethers';
2
- export declare function keyToSigner(key: string): ethers.Wallet;
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ /**
4
+ * Retrieves a signer for the current command-context.
5
+ * @returns the signer
6
+ */
7
+ export declare function getSigner({ key, skipConfirmation, }: {
8
+ key?: string;
9
+ skipConfirmation?: boolean;
10
+ }): Promise<{
11
+ key: string;
12
+ signer: ethers.Wallet;
13
+ }>;
14
+ /**
15
+ * Retrieves an impersonated signer for the current command-context.
16
+ * @returns the impersonated signer
17
+ */
18
+ export declare function getImpersonatedSigner({ fromAddress, key, skipConfirmation, }: {
19
+ fromAddress?: Address;
20
+ key?: string;
21
+ skipConfirmation?: boolean;
22
+ }): Promise<{
23
+ impersonatedKey: string;
24
+ impersonatedSigner: ethers.providers.JsonRpcSigner;
25
+ }>;
26
+ /**
27
+ * Verifies the specified signer is valid.
28
+ * @param signer the signer to verify
29
+ */
3
30
  export declare function assertSigner(signer: ethers.Signer): void;
4
31
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/utils/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,iBAQtC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,QAGjD"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/utils/keys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAIzD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,gBAAgB,GACjB,EAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;;GAIA;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,WAAW,EACX,GAAG,EACH,gBAAgB,GACjB,EAAE;IACD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;;GASA;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,QAGjD"}
@@ -1,18 +1,77 @@
1
+ import { input } from '@inquirer/prompts';
1
2
  import { ethers } from 'ethers';
3
+ import { impersonateAccount } from '@hyperlane-xyz/sdk';
2
4
  import { ensure0x } from '@hyperlane-xyz/utils';
3
- export function keyToSigner(key) {
5
+ const ETHEREUM_ADDRESS_LENGTH = 42;
6
+ /**
7
+ * Retrieves a signer for the current command-context.
8
+ * @returns the signer
9
+ */
10
+ export async function getSigner({ key, skipConfirmation, }) {
11
+ key ||= await retrieveKey(skipConfirmation);
12
+ const signer = privateKeyToSigner(key);
13
+ return { key, signer };
14
+ }
15
+ /**
16
+ * Retrieves an impersonated signer for the current command-context.
17
+ * @returns the impersonated signer
18
+ */
19
+ export async function getImpersonatedSigner({ fromAddress, key, skipConfirmation, }) {
20
+ if (!fromAddress) {
21
+ const { signer } = await getSigner({ key, skipConfirmation });
22
+ fromAddress = signer.address;
23
+ }
24
+ return {
25
+ impersonatedKey: fromAddress,
26
+ impersonatedSigner: await addressToImpersonatedSigner(fromAddress),
27
+ };
28
+ }
29
+ /**
30
+ * Verifies the specified signer is valid.
31
+ * @param signer the signer to verify
32
+ */
33
+ export function assertSigner(signer) {
34
+ if (!signer || !ethers.Signer.isSigner(signer))
35
+ throw new Error('Signer is invalid');
36
+ }
37
+ /**
38
+ * Generates a signer from an address.
39
+ * @param address an EOA address
40
+ * @returns a signer for the address
41
+ */
42
+ async function addressToImpersonatedSigner(address) {
43
+ if (!address)
44
+ throw new Error('No address provided');
45
+ const formattedKey = address.trim().toLowerCase();
46
+ if (address.length != ETHEREUM_ADDRESS_LENGTH)
47
+ throw new Error('Invalid address length.');
48
+ else if (ethers.utils.isHexString(ensure0x(formattedKey)))
49
+ return await impersonateAccount(address);
50
+ else
51
+ throw new Error('Invalid address format');
52
+ }
53
+ /**
54
+ * Generates a signer from a private key.
55
+ * @param key a private key
56
+ * @returns a signer for the private key
57
+ */
58
+ function privateKeyToSigner(key) {
4
59
  if (!key)
5
- throw new Error('No key provided');
60
+ throw new Error('No private key provided');
6
61
  const formattedKey = key.trim().toLowerCase();
7
62
  if (ethers.utils.isHexString(ensure0x(formattedKey)))
8
63
  return new ethers.Wallet(ensure0x(formattedKey));
9
64
  else if (formattedKey.split(' ').length >= 6)
10
65
  return ethers.Wallet.fromMnemonic(formattedKey);
11
66
  else
12
- throw new Error('Invalid key format');
67
+ throw new Error('Invalid private key format');
13
68
  }
14
- export function assertSigner(signer) {
15
- if (!signer || !ethers.Signer.isSigner(signer))
16
- throw new Error('Signer is invalid');
69
+ async function retrieveKey(skipConfirmation) {
70
+ if (skipConfirmation)
71
+ throw new Error(`No private key provided`);
72
+ else
73
+ return await input({
74
+ message: `Please enter private key or use the HYP_KEY environment variable.`,
75
+ });
17
76
  }
18
77
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/utils/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;SAC9C,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;;QAC7C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/utils/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAW,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC9B,GAAG,EACH,gBAAgB,GAIjB;IACC,GAAG,KAAK,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAC1C,WAAW,EACX,GAAG,EACH,gBAAgB,GAKjB;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9D,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,OAAO;QACL,eAAe,EAAE,WAAW;QAC5B,kBAAkB,EAAE,MAAM,2BAA2B,CAAC,WAAW,CAAC;KACnE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,2BAA2B,CACxC,OAAgB;IAEhB,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,IAAI,uBAAuB;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SACxC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;;QACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;SAC9C,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;;QAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,gBAAqC;IAErC,IAAI,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;;QAE/D,OAAO,MAAM,KAAK,CAAC;YACjB,OAAO,EAAE,mEAAmE;SAC7E,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,WAKtC"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,WAWtC"}
@@ -1,5 +1,12 @@
1
1
  export function getTimestampForFilename() {
2
+ const pad = (n) => n.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
2
3
  const now = new Date();
3
- return `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}-${now.getHours()}-${now.getMinutes()}-${now.getSeconds()}`;
4
+ const year = now.getFullYear();
5
+ const month = pad(now.getMonth() + 1);
6
+ const date = pad(now.getDate());
7
+ const hours = pad(now.getHours());
8
+ const minutes = pad(now.getMinutes());
9
+ const seconds = pad(now.getSeconds());
10
+ return `${year}-${month}-${date}-${hours}-${minutes}-${seconds}`;
4
11
  }
5
12
  //# sourceMappingURL=time.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,IACzB,GAAG,CAAC,QAAQ,EAAE,GAAG,CACnB,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=time.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.test.d.ts","sourceRoot":"","sources":["../../../src/utils/time.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { expect } from 'chai';
2
+ import { getTimestampForFilename } from './time.js';
3
+ describe('getTimestampForFilename', () => {
4
+ it('structures timestamp correctly', () => {
5
+ const filename = getTimestampForFilename();
6
+ expect(filename).to.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}/);
7
+ });
8
+ });
9
+ //# sourceMappingURL=time.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.test.js","sourceRoot":"","sources":["../../../src/utils/time.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Token } from '@hyperlane-xyz/sdk';
2
+ export declare function runTokenSelectionStep(tokens: Token[], message?: string): Promise<string>;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/utils/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,SAAiB,mBAYzB"}
@@ -0,0 +1,14 @@
1
+ import select from '@inquirer/select';
2
+ export async function runTokenSelectionStep(tokens, message = 'Select token') {
3
+ const choices = tokens.map((t) => ({
4
+ name: `${t.symbol} - ${t.addressOrDenom}`,
5
+ value: t.addressOrDenom,
6
+ }));
7
+ const routerAddress = (await select({
8
+ message,
9
+ choices,
10
+ pageSize: 20,
11
+ }));
12
+ return routerAddress;
13
+ }
14
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAItC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAe,EACf,OAAO,GAAG,cAAc;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,cAAc,EAAE;QACzC,KAAK,EAAE,CAAC,CAAC,cAAc;KACxB,CAAC,CAAC,CAAC;IACJ,MAAM,aAAa,GAAG,CAAC,MAAM,MAAM,CAAC;QAClC,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,EAAE;KACb,CAAC,CAAW,CAAC;IACd,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function checkVersion(): Promise<void>;
2
+ //# sourceMappingURL=version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/utils/version-check.ts"],"names":[],"mappings":"AAKA,wBAAsB,YAAY,kBAUjC"}
@@ -0,0 +1,15 @@
1
+ import latestVersion from 'latest-version';
2
+ import { log } from '../logger.js';
3
+ import { VERSION } from '../version.js';
4
+ export async function checkVersion() {
5
+ const argv = process.argv;
6
+ // The latestVersion lib (or one of its deps) is confused by the --registry value
7
+ // in the CLI's args, so we need to clear the args before calling it
8
+ process.argv = [];
9
+ const currentVersion = await latestVersion('@hyperlane-xyz/cli');
10
+ process.argv = argv;
11
+ if (VERSION < currentVersion) {
12
+ log(`Your CLI version: ${VERSION}, latest version: ${currentVersion}`);
13
+ }
14
+ }
15
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../src/utils/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,iFAAiF;IACjF,oEAAoE;IACpE,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,GAAG,CAAC,qBAAqB,OAAO,qBAAqB,cAAc,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "3.2.0-alpha";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = '3.2.0-alpha';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC"}