@0xsequence/catapult 1.2.0 → 1.3.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 (46) hide show
  1. package/README.md +10 -3
  2. package/dist/commands/dry.d.ts.map +1 -1
  3. package/dist/commands/dry.js +3 -2
  4. package/dist/commands/dry.js.map +1 -1
  5. package/dist/commands/etherscan.d.ts.map +1 -1
  6. package/dist/commands/etherscan.js +24 -36
  7. package/dist/commands/etherscan.js.map +1 -1
  8. package/dist/commands/run.d.ts.map +1 -1
  9. package/dist/commands/run.js +4 -2
  10. package/dist/commands/run.js.map +1 -1
  11. package/dist/commands/utils.d.ts.map +1 -1
  12. package/dist/commands/utils.js +191 -0
  13. package/dist/commands/utils.js.map +1 -1
  14. package/dist/lib/__tests__/network-loader.spec.js +3 -2
  15. package/dist/lib/__tests__/network-loader.spec.js.map +1 -1
  16. package/dist/lib/__tests__/network-selection.spec.d.ts +2 -0
  17. package/dist/lib/__tests__/network-selection.spec.d.ts.map +1 -0
  18. package/dist/lib/__tests__/network-selection.spec.js +34 -0
  19. package/dist/lib/__tests__/network-selection.spec.js.map +1 -0
  20. package/dist/lib/deployer.d.ts.map +1 -1
  21. package/dist/lib/deployer.js +62 -5
  22. package/dist/lib/deployer.js.map +1 -1
  23. package/dist/lib/events/cli-adapter.d.ts.map +1 -1
  24. package/dist/lib/events/cli-adapter.js +16 -3
  25. package/dist/lib/events/cli-adapter.js.map +1 -1
  26. package/dist/lib/events/types.d.ts +18 -1
  27. package/dist/lib/events/types.d.ts.map +1 -1
  28. package/dist/lib/network-loader.d.ts.map +1 -1
  29. package/dist/lib/network-loader.js +1 -1
  30. package/dist/lib/network-loader.js.map +1 -1
  31. package/dist/lib/network-selection.d.ts +4 -0
  32. package/dist/lib/network-selection.d.ts.map +1 -0
  33. package/dist/lib/network-selection.js +49 -0
  34. package/dist/lib/network-selection.js.map +1 -0
  35. package/package.json +1 -1
  36. package/src/commands/dry.ts +4 -3
  37. package/src/commands/etherscan.ts +42 -42
  38. package/src/commands/run.ts +5 -3
  39. package/src/commands/utils.ts +163 -0
  40. package/src/lib/__tests__/network-loader.spec.ts +3 -2
  41. package/src/lib/__tests__/network-selection.spec.ts +41 -0
  42. package/src/lib/deployer.ts +77 -9
  43. package/src/lib/events/cli-adapter.ts +21 -5
  44. package/src/lib/events/types.ts +23 -0
  45. package/src/lib/network-loader.ts +2 -1
  46. package/src/lib/network-selection.ts +73 -0
@@ -0,0 +1,73 @@
1
+ import { Network } from './types'
2
+
3
+ /**
4
+ * Parses a comma-separated selector string into chain IDs, supporting numeric IDs and network names.
5
+ * - Numeric tokens (e.g., "1") are treated as chain IDs
6
+ * - String tokens (e.g., "mainnet") are matched against Network.name case-insensitively
7
+ * - When a name matches multiple networks, all of them are included
8
+ * - Order is preserved by token then by appearance order in `networks`
9
+ * - Duplicates are removed
10
+ *
11
+ * Throws if any token cannot be resolved to at least one chain ID.
12
+ */
13
+ export function resolveSelectedChainIds(
14
+ selectors: string | undefined,
15
+ networks: Network[]
16
+ ): number[] | undefined {
17
+ if (selectors == null) return undefined
18
+ const normalized = String(selectors).trim()
19
+ if (normalized.length === 0) return undefined
20
+
21
+ const tokens = normalized
22
+ .split(',')
23
+ .map(t => t.trim())
24
+ .filter(t => t.length > 0)
25
+
26
+ if (tokens.length === 0) return undefined
27
+
28
+ const result: number[] = []
29
+ const seen = new Set<number>()
30
+
31
+ for (const token of tokens) {
32
+ if (/^\d+$/.test(token)) {
33
+ const id = Number(token)
34
+ if (!seen.has(id)) {
35
+ seen.add(id)
36
+ result.push(id)
37
+ }
38
+ continue
39
+ }
40
+
41
+ const tokenLc = token.toLowerCase()
42
+ const matches = networks.filter(n => n.name.toLowerCase() === tokenLc)
43
+ if (matches.length === 0) {
44
+ const available = Array.from(new Set(networks.map(n => n.name))).sort()
45
+ throw new Error(
46
+ `Unknown network selector "${token}". Use a chain ID (e.g., 1) or a network name. Available names: ${available.join(', ')}`
47
+ )
48
+ }
49
+ for (const net of matches) {
50
+ if (!seen.has(net.chainId)) {
51
+ seen.add(net.chainId)
52
+ result.push(net.chainId)
53
+ }
54
+ }
55
+ }
56
+
57
+ return result
58
+ }
59
+
60
+ /**
61
+ * Resolves a single selector into one chain ID. If a name maps to multiple networks,
62
+ * returns the first matching network in the order provided.
63
+ */
64
+ export function resolveSingleChainId(
65
+ selector: string | undefined,
66
+ networks: Network[]
67
+ ): number | undefined {
68
+ const ids = resolveSelectedChainIds(selector, networks)
69
+ if (!ids || ids.length === 0) return undefined
70
+ return ids[0]
71
+ }
72
+
73
+