@0xsequence/catapult 1.3.16 → 1.3.17
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 +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +7 -4
- package/dist/commands/run.js.map +1 -1
- package/dist/lib/__tests__/network-utils.spec.js +53 -8
- package/dist/lib/__tests__/network-utils.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/run.ts +11 -6
- package/src/lib/__tests__/network-utils.spec.ts +63 -14
package/README.md
CHANGED
|
@@ -388,7 +388,7 @@ Common options (run):
|
|
|
388
388
|
- `-p, --project <path>`: Project root directory (defaults to current directory)
|
|
389
389
|
- `--dotenv <path>`: Load environment variables from a custom .env file (run command only)
|
|
390
390
|
- `-n, --network <selectors>`: Comma-separated selectors by chain ID or network name
|
|
391
|
-
- `--rpc-url <url>`: Run against a single custom RPC; chain ID is auto-detected
|
|
391
|
+
- `--rpc-url <url>`: Run against a single custom RPC; chain ID is auto-detected. If `networks.yaml` defines that chain, Catapult merges yaml settings (name, `supports`, `gasLimit`, `testnet`, `evmVersion`, `params`) while using your RPC URL.
|
|
392
392
|
- `-k, --private-key <key>`: EOA private key (or set `PRIVATE_KEY`)
|
|
393
393
|
- `--etherscan-api-key <key>`: Etherscan API key (or set `ETHERSCAN_API_KEY`)
|
|
394
394
|
- `--fail-early`: Stop as soon as any job fails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BnC,wBAAgB,cAAc,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BnC,wBAAgB,cAAc,IAAI,OAAO,CAuHxC"}
|
package/dist/commands/run.js
CHANGED
|
@@ -44,13 +44,16 @@ function makeRunCommand() {
|
|
|
44
44
|
}
|
|
45
45
|
try {
|
|
46
46
|
const detectedNetwork = await (0, network_utils_1.detectNetworkFromRpc)(options.rpcUrl);
|
|
47
|
+
const knownNetwork = networks.find(n => n.chainId === detectedNetwork.chainId);
|
|
47
48
|
const customNetwork = {
|
|
48
|
-
name: detectedNetwork.name || `custom-${detectedNetwork.chainId}`,
|
|
49
|
+
name: detectedNetwork.name || knownNetwork?.name || `custom-${detectedNetwork.chainId}`,
|
|
49
50
|
chainId: detectedNetwork.chainId,
|
|
50
51
|
rpcUrl: options.rpcUrl,
|
|
51
|
-
supports: detectedNetwork.supports || [],
|
|
52
|
-
gasLimit: detectedNetwork.gasLimit,
|
|
53
|
-
testnet: detectedNetwork.testnet
|
|
52
|
+
supports: detectedNetwork.supports || knownNetwork?.supports || [],
|
|
53
|
+
gasLimit: detectedNetwork.gasLimit || knownNetwork?.gasLimit,
|
|
54
|
+
testnet: detectedNetwork.testnet !== undefined ? detectedNetwork.testnet : knownNetwork?.testnet,
|
|
55
|
+
evmVersion: detectedNetwork.evmVersion || knownNetwork?.evmVersion,
|
|
56
|
+
params: detectedNetwork.params || knownNetwork?.params,
|
|
54
57
|
};
|
|
55
58
|
networks = [customNetwork];
|
|
56
59
|
}
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;AA0BA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,11 +83,11 @@ describe('Network Utils', () => {
|
|
|
83
83
|
const { ethers } = require('ethers');
|
|
84
84
|
const mockNetwork = {
|
|
85
85
|
name: 'sepolia',
|
|
86
|
-
chainId: 11155111
|
|
86
|
+
chainId: 11155111,
|
|
87
87
|
};
|
|
88
88
|
const getNetworkMock = jest.fn().mockResolvedValue(mockNetwork);
|
|
89
89
|
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
90
|
-
getNetwork: getNetworkMock
|
|
90
|
+
getNetwork: getNetworkMock,
|
|
91
91
|
}));
|
|
92
92
|
const detectedInfo = await (0, network_utils_1.detectNetworkFromRpc)('https://sepolia.infura.io/v3/abc123');
|
|
93
93
|
const customNetwork = {
|
|
@@ -96,7 +96,9 @@ describe('Network Utils', () => {
|
|
|
96
96
|
rpcUrl: 'https://sepolia.infura.io/v3/abc123',
|
|
97
97
|
supports: detectedInfo.supports || [],
|
|
98
98
|
gasLimit: detectedInfo.gasLimit,
|
|
99
|
-
testnet: detectedInfo.testnet
|
|
99
|
+
testnet: detectedInfo.testnet,
|
|
100
|
+
evmVersion: detectedInfo.evmVersion,
|
|
101
|
+
params: detectedInfo.params,
|
|
100
102
|
};
|
|
101
103
|
expect(customNetwork).toEqual({
|
|
102
104
|
name: 'sepolia',
|
|
@@ -104,18 +106,57 @@ describe('Network Utils', () => {
|
|
|
104
106
|
rpcUrl: 'https://sepolia.infura.io/v3/abc123',
|
|
105
107
|
supports: [],
|
|
106
108
|
gasLimit: undefined,
|
|
107
|
-
testnet: undefined
|
|
109
|
+
testnet: undefined,
|
|
110
|
+
evmVersion: undefined,
|
|
111
|
+
params: undefined,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it('should merge params and other yaml fields when chainId matches networks.yaml', async () => {
|
|
115
|
+
const { ethers } = require('ethers');
|
|
116
|
+
const getNetworkMock = jest.fn().mockResolvedValue({ name: 'unknown', chainId: 137 });
|
|
117
|
+
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
118
|
+
getNetwork: getNetworkMock,
|
|
119
|
+
}));
|
|
120
|
+
const detectedInfo = await (0, network_utils_1.detectNetworkFromRpc)('http://127.0.0.1:8545');
|
|
121
|
+
const knownNetwork = {
|
|
122
|
+
name: 'Polygon',
|
|
123
|
+
chainId: 137,
|
|
124
|
+
rpcUrl: 'https://nodes.sequence.app/polygon/token',
|
|
125
|
+
supports: ['etherscan_v2', 'sourcify'],
|
|
126
|
+
testnet: false,
|
|
127
|
+
evmVersion: 'paris',
|
|
128
|
+
params: { trailsOnly: false },
|
|
129
|
+
};
|
|
130
|
+
const customNetwork = {
|
|
131
|
+
name: detectedInfo.name || knownNetwork.name || `custom-${detectedInfo.chainId}`,
|
|
132
|
+
chainId: detectedInfo.chainId,
|
|
133
|
+
rpcUrl: 'http://127.0.0.1:8545',
|
|
134
|
+
supports: detectedInfo.supports || knownNetwork.supports || [],
|
|
135
|
+
gasLimit: detectedInfo.gasLimit || knownNetwork.gasLimit,
|
|
136
|
+
testnet: detectedInfo.testnet !== undefined ? detectedInfo.testnet : knownNetwork.testnet,
|
|
137
|
+
evmVersion: detectedInfo.evmVersion || knownNetwork.evmVersion,
|
|
138
|
+
params: detectedInfo.params || knownNetwork.params,
|
|
139
|
+
};
|
|
140
|
+
expect(customNetwork).toEqual({
|
|
141
|
+
name: 'unknown',
|
|
142
|
+
chainId: 137,
|
|
143
|
+
rpcUrl: 'http://127.0.0.1:8545',
|
|
144
|
+
supports: ['etherscan_v2', 'sourcify'],
|
|
145
|
+
gasLimit: undefined,
|
|
146
|
+
testnet: false,
|
|
147
|
+
evmVersion: 'paris',
|
|
148
|
+
params: { trailsOnly: false },
|
|
108
149
|
});
|
|
109
150
|
});
|
|
110
151
|
it('should handle partial network information gracefully', async () => {
|
|
111
152
|
const { ethers } = require('ethers');
|
|
112
153
|
const mockNetwork = {
|
|
113
154
|
name: 'unknown',
|
|
114
|
-
chainId: 42
|
|
155
|
+
chainId: 42,
|
|
115
156
|
};
|
|
116
157
|
const getNetworkMock = jest.fn().mockResolvedValue(mockNetwork);
|
|
117
158
|
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
118
|
-
getNetwork: getNetworkMock
|
|
159
|
+
getNetwork: getNetworkMock,
|
|
119
160
|
}));
|
|
120
161
|
const detectedInfo = await (0, network_utils_1.detectNetworkFromRpc)('http://custom-network:8545');
|
|
121
162
|
const customNetwork = {
|
|
@@ -124,7 +165,9 @@ describe('Network Utils', () => {
|
|
|
124
165
|
rpcUrl: 'http://custom-network:8545',
|
|
125
166
|
supports: detectedInfo.supports || [],
|
|
126
167
|
gasLimit: detectedInfo.gasLimit,
|
|
127
|
-
testnet: detectedInfo.testnet
|
|
168
|
+
testnet: detectedInfo.testnet,
|
|
169
|
+
evmVersion: detectedInfo.evmVersion,
|
|
170
|
+
params: detectedInfo.params,
|
|
128
171
|
};
|
|
129
172
|
expect(customNetwork).toEqual({
|
|
130
173
|
name: 'unknown',
|
|
@@ -132,7 +175,9 @@ describe('Network Utils', () => {
|
|
|
132
175
|
rpcUrl: 'http://custom-network:8545',
|
|
133
176
|
supports: [],
|
|
134
177
|
gasLimit: undefined,
|
|
135
|
-
testnet: undefined
|
|
178
|
+
testnet: undefined,
|
|
179
|
+
evmVersion: undefined,
|
|
180
|
+
params: undefined,
|
|
136
181
|
});
|
|
137
182
|
});
|
|
138
183
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-utils.spec.js","sourceRoot":"","sources":["../../../src/lib/__tests__/network-utils.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"network-utils.spec.js","sourceRoot":"","sources":["../../../src/lib/__tests__/network-utils.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/run.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { Command } from 'commander'
|
|
|
2
2
|
import { Deployer, DeployerOptions } from '../lib/deployer'
|
|
3
3
|
import { loadNetworks } from '../lib/network-loader'
|
|
4
4
|
import { detectNetworkFromRpc, isValidRpcUrl } from '../lib/network-utils'
|
|
5
|
-
import { deploymentEvents } from '../lib/events'
|
|
6
5
|
import { Network } from '../lib/types'
|
|
6
|
+
import { deploymentEvents } from '../lib/events'
|
|
7
7
|
import { projectOption, dotenvOption, noStdOption, verbosityOption, loadDotenv } from './common'
|
|
8
8
|
import { resolveSelectedChainIds } from '../lib/network-selection'
|
|
9
9
|
import { setVerbosity } from '../index'
|
|
@@ -76,15 +76,20 @@ export function makeRunCommand(): Command {
|
|
|
76
76
|
// Detect network information from RPC URL
|
|
77
77
|
const detectedNetwork = await detectNetworkFromRpc(options.rpcUrl)
|
|
78
78
|
|
|
79
|
-
//
|
|
79
|
+
// Try to find a matching network in networks.yaml by chainId to merge verification platform support
|
|
80
|
+
const knownNetwork = networks.find(n => n.chainId === detectedNetwork.chainId)
|
|
81
|
+
|
|
82
|
+
// Create a complete network object, merging with known network config if found
|
|
80
83
|
const customNetwork: Network = {
|
|
81
|
-
name: detectedNetwork.name || `custom-${detectedNetwork.chainId}`,
|
|
84
|
+
name: detectedNetwork.name || knownNetwork?.name || `custom-${detectedNetwork.chainId}`,
|
|
82
85
|
chainId: detectedNetwork.chainId!,
|
|
83
86
|
rpcUrl: options.rpcUrl,
|
|
84
87
|
// Optional fields with defaults
|
|
85
|
-
supports: detectedNetwork.supports || [],
|
|
86
|
-
gasLimit: detectedNetwork.gasLimit,
|
|
87
|
-
testnet: detectedNetwork.testnet
|
|
88
|
+
supports: detectedNetwork.supports || knownNetwork?.supports || [],
|
|
89
|
+
gasLimit: detectedNetwork.gasLimit || knownNetwork?.gasLimit,
|
|
90
|
+
testnet: detectedNetwork.testnet !== undefined ? detectedNetwork.testnet : knownNetwork?.testnet,
|
|
91
|
+
evmVersion: detectedNetwork.evmVersion || knownNetwork?.evmVersion,
|
|
92
|
+
params: detectedNetwork.params || knownNetwork?.params,
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
// Custom network created from RPC detection
|
|
@@ -108,16 +108,15 @@ describe('Network Utils', () => {
|
|
|
108
108
|
describe('Integration with Run Command', () => {
|
|
109
109
|
it('should create a complete Network object from detected information', async () => {
|
|
110
110
|
const { ethers } = require('ethers')
|
|
111
|
-
|
|
112
|
-
// Mock successful network detection
|
|
111
|
+
|
|
113
112
|
const mockNetwork = {
|
|
114
113
|
name: 'sepolia',
|
|
115
|
-
chainId: 11155111
|
|
114
|
+
chainId: 11155111,
|
|
116
115
|
}
|
|
117
|
-
|
|
116
|
+
|
|
118
117
|
const getNetworkMock = jest.fn().mockResolvedValue(mockNetwork)
|
|
119
118
|
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
120
|
-
getNetwork: getNetworkMock
|
|
119
|
+
getNetwork: getNetworkMock,
|
|
121
120
|
}))
|
|
122
121
|
|
|
123
122
|
const detectedInfo = await detectNetworkFromRpc('https://sepolia.infura.io/v3/abc123')
|
|
@@ -129,7 +128,9 @@ describe('Network Utils', () => {
|
|
|
129
128
|
rpcUrl: 'https://sepolia.infura.io/v3/abc123',
|
|
130
129
|
supports: detectedInfo.supports || [],
|
|
131
130
|
gasLimit: detectedInfo.gasLimit,
|
|
132
|
-
testnet: detectedInfo.testnet
|
|
131
|
+
testnet: detectedInfo.testnet,
|
|
132
|
+
evmVersion: detectedInfo.evmVersion,
|
|
133
|
+
params: detectedInfo.params,
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
expect(customNetwork).toEqual({
|
|
@@ -138,22 +139,66 @@ describe('Network Utils', () => {
|
|
|
138
139
|
rpcUrl: 'https://sepolia.infura.io/v3/abc123',
|
|
139
140
|
supports: [],
|
|
140
141
|
gasLimit: undefined,
|
|
141
|
-
testnet: undefined
|
|
142
|
+
testnet: undefined,
|
|
143
|
+
evmVersion: undefined,
|
|
144
|
+
params: undefined,
|
|
145
|
+
})
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
it('should merge params and other yaml fields when chainId matches networks.yaml', async () => {
|
|
149
|
+
const { ethers } = require('ethers')
|
|
150
|
+
|
|
151
|
+
const getNetworkMock = jest.fn().mockResolvedValue({ name: 'unknown', chainId: 137 })
|
|
152
|
+
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
153
|
+
getNetwork: getNetworkMock,
|
|
154
|
+
}))
|
|
155
|
+
|
|
156
|
+
const detectedInfo = await detectNetworkFromRpc('http://127.0.0.1:8545')
|
|
157
|
+
const knownNetwork: Network = {
|
|
158
|
+
name: 'Polygon',
|
|
159
|
+
chainId: 137,
|
|
160
|
+
rpcUrl: 'https://nodes.sequence.app/polygon/token',
|
|
161
|
+
supports: ['etherscan_v2', 'sourcify'],
|
|
162
|
+
testnet: false,
|
|
163
|
+
evmVersion: 'paris',
|
|
164
|
+
params: { trailsOnly: false },
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Simulate what the run command does
|
|
168
|
+
const customNetwork: Network = {
|
|
169
|
+
name: detectedInfo.name || knownNetwork.name || `custom-${detectedInfo.chainId}`,
|
|
170
|
+
chainId: detectedInfo.chainId!,
|
|
171
|
+
rpcUrl: 'http://127.0.0.1:8545',
|
|
172
|
+
supports: detectedInfo.supports || knownNetwork.supports || [],
|
|
173
|
+
gasLimit: detectedInfo.gasLimit || knownNetwork.gasLimit,
|
|
174
|
+
testnet: detectedInfo.testnet !== undefined ? detectedInfo.testnet : knownNetwork.testnet,
|
|
175
|
+
evmVersion: detectedInfo.evmVersion || knownNetwork.evmVersion,
|
|
176
|
+
params: detectedInfo.params || knownNetwork.params,
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
expect(customNetwork).toEqual({
|
|
180
|
+
name: 'unknown',
|
|
181
|
+
chainId: 137,
|
|
182
|
+
rpcUrl: 'http://127.0.0.1:8545',
|
|
183
|
+
supports: ['etherscan_v2', 'sourcify'],
|
|
184
|
+
gasLimit: undefined,
|
|
185
|
+
testnet: false,
|
|
186
|
+
evmVersion: 'paris',
|
|
187
|
+
params: { trailsOnly: false },
|
|
142
188
|
})
|
|
143
189
|
})
|
|
144
190
|
|
|
145
191
|
it('should handle partial network information gracefully', async () => {
|
|
146
192
|
const { ethers } = require('ethers')
|
|
147
|
-
|
|
148
|
-
// Mock network with minimal information
|
|
193
|
+
|
|
149
194
|
const mockNetwork = {
|
|
150
195
|
name: 'unknown',
|
|
151
|
-
chainId: 42
|
|
196
|
+
chainId: 42,
|
|
152
197
|
}
|
|
153
|
-
|
|
198
|
+
|
|
154
199
|
const getNetworkMock = jest.fn().mockResolvedValue(mockNetwork)
|
|
155
200
|
ethers.JsonRpcProvider.mockImplementation(() => ({
|
|
156
|
-
getNetwork: getNetworkMock
|
|
201
|
+
getNetwork: getNetworkMock,
|
|
157
202
|
}))
|
|
158
203
|
|
|
159
204
|
const detectedInfo = await detectNetworkFromRpc('http://custom-network:8545')
|
|
@@ -165,7 +210,9 @@ describe('Network Utils', () => {
|
|
|
165
210
|
rpcUrl: 'http://custom-network:8545',
|
|
166
211
|
supports: detectedInfo.supports || [],
|
|
167
212
|
gasLimit: detectedInfo.gasLimit,
|
|
168
|
-
testnet: detectedInfo.testnet
|
|
213
|
+
testnet: detectedInfo.testnet,
|
|
214
|
+
evmVersion: detectedInfo.evmVersion,
|
|
215
|
+
params: detectedInfo.params,
|
|
169
216
|
}
|
|
170
217
|
|
|
171
218
|
expect(customNetwork).toEqual({
|
|
@@ -174,7 +221,9 @@ describe('Network Utils', () => {
|
|
|
174
221
|
rpcUrl: 'http://custom-network:8545',
|
|
175
222
|
supports: [],
|
|
176
223
|
gasLimit: undefined,
|
|
177
|
-
testnet: undefined
|
|
224
|
+
testnet: undefined,
|
|
225
|
+
evmVersion: undefined,
|
|
226
|
+
params: undefined,
|
|
178
227
|
})
|
|
179
228
|
})
|
|
180
229
|
})
|