@0xsequence/catapult 1.2.1 → 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.
- package/README.md +10 -3
- package/dist/commands/dry.d.ts.map +1 -1
- package/dist/commands/dry.js +3 -2
- package/dist/commands/dry.js.map +1 -1
- package/dist/commands/etherscan.d.ts.map +1 -1
- package/dist/commands/etherscan.js +24 -36
- package/dist/commands/etherscan.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +4 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/utils.d.ts.map +1 -1
- package/dist/commands/utils.js +191 -0
- package/dist/commands/utils.js.map +1 -1
- package/dist/lib/__tests__/network-loader.spec.js +3 -2
- package/dist/lib/__tests__/network-loader.spec.js.map +1 -1
- package/dist/lib/__tests__/network-selection.spec.d.ts +2 -0
- package/dist/lib/__tests__/network-selection.spec.d.ts.map +1 -0
- package/dist/lib/__tests__/network-selection.spec.js +34 -0
- package/dist/lib/__tests__/network-selection.spec.js.map +1 -0
- package/dist/lib/deployer.d.ts.map +1 -1
- package/dist/lib/deployer.js +51 -1
- package/dist/lib/deployer.js.map +1 -1
- package/dist/lib/events/cli-adapter.d.ts.map +1 -1
- package/dist/lib/events/cli-adapter.js +16 -3
- package/dist/lib/events/cli-adapter.js.map +1 -1
- package/dist/lib/events/types.d.ts +18 -1
- package/dist/lib/events/types.d.ts.map +1 -1
- package/dist/lib/network-loader.d.ts.map +1 -1
- package/dist/lib/network-loader.js +1 -1
- package/dist/lib/network-loader.js.map +1 -1
- package/dist/lib/network-selection.d.ts +4 -0
- package/dist/lib/network-selection.d.ts.map +1 -0
- package/dist/lib/network-selection.js +49 -0
- package/dist/lib/network-selection.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/dry.ts +4 -3
- package/src/commands/etherscan.ts +42 -42
- package/src/commands/run.ts +5 -3
- package/src/commands/utils.ts +163 -0
- package/src/lib/__tests__/network-loader.spec.ts +3 -2
- package/src/lib/__tests__/network-selection.spec.ts +41 -0
- package/src/lib/deployer.ts +63 -2
- package/src/lib/events/cli-adapter.ts +21 -5
- package/src/lib/events/types.ts +23 -0
- package/src/lib/network-loader.ts +2 -1
- 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
|
+
|