@safe-global/safe-deployments 1.37.0 → 1.37.2
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 +150 -31
- package/dist/accessors.d.ts +14 -1
- package/dist/accessors.js +19 -11
- package/dist/assets/v1.0.0/gnosis_safe.json +479 -103
- package/dist/assets/v1.0.0/proxy_factory.json +11 -6
- package/dist/assets/v1.1.1/default_callback_handler.json +14 -9
- package/dist/assets/v1.1.1/gnosis_safe.json +14 -9
- package/dist/assets/v1.1.1/multi_send.json +14 -9
- package/dist/assets/v1.1.1/proxy_factory.json +14 -9
- package/dist/assets/v1.2.0/gnosis_safe.json +14 -9
- package/dist/assets/v1.3.0/compatibility_fallback_handler.json +259 -235
- package/dist/assets/v1.3.0/create_call.json +259 -235
- package/dist/assets/v1.3.0/gnosis_safe.json +259 -235
- package/dist/assets/v1.3.0/gnosis_safe_l2.json +259 -235
- package/dist/assets/v1.3.0/multi_send.json +259 -235
- package/dist/assets/v1.3.0/multi_send_call_only.json +259 -235
- package/dist/assets/v1.3.0/proxy_factory.json +259 -235
- package/dist/assets/v1.3.0/sign_message_lib.json +260 -236
- package/dist/assets/v1.3.0/simulate_tx_accessor.json +259 -235
- package/dist/assets/v1.4.1/compatibility_fallback_handler.json +119 -108
- package/dist/assets/v1.4.1/create_call.json +119 -108
- package/dist/assets/v1.4.1/multi_send.json +119 -108
- package/dist/assets/v1.4.1/multi_send_call_only.json +119 -108
- package/dist/assets/v1.4.1/safe.json +119 -108
- package/dist/assets/v1.4.1/safe_l2.json +119 -108
- package/dist/assets/v1.4.1/safe_proxy_factory.json +120 -109
- package/dist/assets/v1.4.1/sign_message_lib.json +120 -109
- package/dist/assets/v1.4.1/simulate_tx_accessor.json +119 -108
- package/dist/deployments.d.ts +12 -0
- package/dist/deployments.js +71 -0
- package/dist/factories.d.ts +12 -1
- package/dist/factories.js +17 -13
- package/dist/handler.d.ts +29 -1
- package/dist/handler.js +55 -24
- package/dist/libs.d.ts +45 -1
- package/dist/libs.js +62 -32
- package/dist/safes.d.ts +23 -3
- package/dist/safes.js +32 -21
- package/dist/types.d.ts +37 -2
- package/dist/utils.d.ts +12 -2
- package/dist/utils.js +61 -9
- package/package.json +18 -19
- package/src/__tests__/assets/v1/v1.0.0/gnosis_safe.json +796 -0
- package/src/__tests__/assets/v1/v1.0.0/proxy_factory.json +111 -0
- package/src/__tests__/assets/v1/v1.1.1/create_and_add_modules.json +59 -0
- package/src/__tests__/assets/v1/v1.1.1/create_call.json +90 -0
- package/src/__tests__/assets/v1/v1.1.1/default_callback_handler.json +212 -0
- package/src/__tests__/assets/v1/v1.1.1/gnosis_safe.json +1001 -0
- package/src/__tests__/assets/v1/v1.1.1/multi_send.json +45 -0
- package/src/__tests__/assets/v1/v1.1.1/proxy_factory.json +191 -0
- package/src/__tests__/assets/v1/v1.2.0/gnosis_safe.json +1022 -0
- package/src/__tests__/assets/v1/v1.3.0/compatibility_fallback_handler.json +588 -0
- package/src/__tests__/assets/v1/v1.3.0/create_call.json +331 -0
- package/src/__tests__/assets/v1/v1.3.0/gnosis_safe.json +1296 -0
- package/src/__tests__/assets/v1/v1.3.0/gnosis_safe_l2.json +1401 -0
- package/src/__tests__/assets/v1/v1.3.0/multi_send.json +283 -0
- package/src/__tests__/assets/v1/v1.3.0/multi_send_call_only.json +278 -0
- package/src/__tests__/assets/v1/v1.3.0/proxy_factory.json +426 -0
- package/src/__tests__/assets/v1/v1.3.0/sign_message_lib.json +310 -0
- package/src/__tests__/assets/v1/v1.3.0/simulate_tx_accessor.json +314 -0
- package/src/__tests__/assets/v1/v1.4.1/compatibility_fallback_handler.json +447 -0
- package/src/__tests__/assets/v1/v1.4.1/create_call.json +192 -0
- package/src/__tests__/assets/v1/v1.4.1/multi_send.json +144 -0
- package/src/__tests__/assets/v1/v1.4.1/multi_send_call_only.json +139 -0
- package/src/__tests__/assets/v1/v1.4.1/safe.json +1123 -0
- package/src/__tests__/assets/v1/v1.4.1/safe_l2.json +1228 -0
- package/src/__tests__/assets/v1/v1.4.1/safe_proxy_factory.json +263 -0
- package/src/__tests__/assets/v1/v1.4.1/sign_message_lib.json +171 -0
- package/src/__tests__/assets/v1/v1.4.1/simulate_tx_accessor.json +175 -0
- package/src/__tests__/assets.test.ts +101 -38
- package/src/__tests__/factories.test.ts +3 -3
- package/src/__tests__/handler.test.ts +5 -5
- package/src/__tests__/libs.test.ts +9 -9
- package/src/__tests__/safes.test.ts +9 -12
- package/src/__tests__/utils.test.ts +421 -0
- package/src/accessors.ts +21 -12
- package/src/assets/v1.0.0/gnosis_safe.json +479 -103
- package/src/assets/v1.0.0/proxy_factory.json +11 -6
- package/src/assets/v1.1.1/create_and_add_modules.json +19 -10
- package/src/assets/v1.1.1/create_call.json +14 -9
- package/src/assets/v1.1.1/default_callback_handler.json +14 -9
- package/src/assets/v1.1.1/gnosis_safe.json +14 -9
- package/src/assets/v1.1.1/multi_send.json +14 -9
- package/src/assets/v1.1.1/proxy_factory.json +14 -9
- package/src/assets/v1.2.0/gnosis_safe.json +14 -9
- package/src/assets/v1.3.0/compatibility_fallback_handler.json +259 -235
- package/src/assets/v1.3.0/create_call.json +259 -235
- package/src/assets/v1.3.0/gnosis_safe.json +259 -235
- package/src/assets/v1.3.0/gnosis_safe_l2.json +259 -235
- package/src/assets/v1.3.0/multi_send.json +259 -235
- package/src/assets/v1.3.0/multi_send_call_only.json +259 -235
- package/src/assets/v1.3.0/proxy_factory.json +259 -235
- package/src/assets/v1.3.0/sign_message_lib.json +260 -236
- package/src/assets/v1.3.0/simulate_tx_accessor.json +259 -235
- package/src/assets/v1.4.1/compatibility_fallback_handler.json +119 -108
- package/src/assets/v1.4.1/create_call.json +119 -108
- package/src/assets/v1.4.1/multi_send.json +119 -108
- package/src/assets/v1.4.1/multi_send_call_only.json +119 -108
- package/src/assets/v1.4.1/safe.json +119 -108
- package/src/assets/v1.4.1/safe_l2.json +119 -108
- package/src/assets/v1.4.1/safe_proxy_factory.json +120 -109
- package/src/assets/v1.4.1/sign_message_lib.json +120 -109
- package/src/assets/v1.4.1/simulate_tx_accessor.json +119 -108
- package/src/deployments.ts +90 -0
- package/src/factories.ts +19 -14
- package/src/handler.ts +62 -26
- package/src/index.ts +6 -6
- package/src/libs.ts +69 -35
- package/src/safes.ts +34 -22
- package/src/types.ts +86 -10
- package/src/utils.ts +105 -12
- package/src/__tests__/utilts.test.ts +0 -385
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import SafeL2141 from './assets/v1/v1.4.1/safe_l2.json';
|
|
2
|
+
import Safe141 from './assets/v1/v1.4.1/safe.json';
|
|
3
|
+
|
|
4
|
+
import GnosisSafeL2130 from './assets/v1/v1.3.0/gnosis_safe_l2.json';
|
|
5
|
+
import GnosisSafe130 from './assets/v1/v1.3.0/gnosis_safe.json';
|
|
6
|
+
import GnosisSafe120 from './assets/v1/v1.2.0/gnosis_safe.json';
|
|
7
|
+
import GnosisSafe111 from './assets/v1/v1.1.1/gnosis_safe.json';
|
|
8
|
+
import GnosisSafe100 from './assets/v1/v1.0.0/gnosis_safe.json';
|
|
9
|
+
import { findDeployment } from '../utils';
|
|
10
|
+
import { _SAFE_DEPLOYMENTS, _SAFE_L2_DEPLOYMENTS } from '../deployments';
|
|
11
|
+
import { SingletonDeployment, SingletonDeploymentJSON, DeploymentFormats, SingletonDeploymentV2 } from '../types';
|
|
12
|
+
|
|
13
|
+
const _safeDeploymentsReverse = [..._SAFE_DEPLOYMENTS].reverse();
|
|
14
|
+
|
|
15
|
+
describe('utils.ts', () => {
|
|
16
|
+
describe('findDeployment', () => {
|
|
17
|
+
describe('singleton format', () => {
|
|
18
|
+
it('should filter by released by default', () => {
|
|
19
|
+
const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
20
|
+
version: '',
|
|
21
|
+
abi: [],
|
|
22
|
+
deployments: {
|
|
23
|
+
canonical: {
|
|
24
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
25
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
networkAddresses: { '1': 'canonical' },
|
|
29
|
+
contractName: '',
|
|
30
|
+
released: false,
|
|
31
|
+
};
|
|
32
|
+
const testReleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
33
|
+
version: '',
|
|
34
|
+
abi: [],
|
|
35
|
+
deployments: {
|
|
36
|
+
canonical: {
|
|
37
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
38
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
networkAddresses: { '1': 'canonical' },
|
|
42
|
+
contractName: '',
|
|
43
|
+
released: true, // Default filter value
|
|
44
|
+
};
|
|
45
|
+
const testReleasedDeployment: SingletonDeployment = {
|
|
46
|
+
defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
47
|
+
deployments: {
|
|
48
|
+
canonical: {
|
|
49
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
50
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
|
|
54
|
+
released: true,
|
|
55
|
+
abi: [],
|
|
56
|
+
version: '',
|
|
57
|
+
contractName: '',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const testDeployments = [
|
|
61
|
+
testUnreleasedDeploymentJson,
|
|
62
|
+
testUnreleasedDeploymentJson,
|
|
63
|
+
testReleasedDeploymentJson,
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
expect(findDeployment(undefined, testDeployments)).toMatchObject(testReleasedDeployment);
|
|
67
|
+
|
|
68
|
+
// should preserve the released flag even if its not explicitly passed
|
|
69
|
+
expect(findDeployment({ network: '1' }, testDeployments)).toMatchObject(testReleasedDeployment);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should return the correct deployment (filtered by version)', () => {
|
|
73
|
+
// Chronological deployments
|
|
74
|
+
expect(findDeployment({ version: '1.3.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe130);
|
|
75
|
+
expect(findDeployment({ version: '1.2.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe120);
|
|
76
|
+
expect(findDeployment({ version: '1.1.1' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe111);
|
|
77
|
+
expect(findDeployment({ version: '1.0.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe100);
|
|
78
|
+
// Incorrect filter:
|
|
79
|
+
expect(findDeployment({ version: '2.0.0' }, _SAFE_DEPLOYMENTS)).toBeUndefined();
|
|
80
|
+
|
|
81
|
+
// L2 deployments
|
|
82
|
+
expect(findDeployment({ version: '1.3.0+L2' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(GnosisSafeL2130);
|
|
83
|
+
// Incorrect filter:
|
|
84
|
+
expect(findDeployment({ version: '2.0.0+L2' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('should return the correct deployment (filtered by released flag)', () => {
|
|
88
|
+
const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
89
|
+
version: '',
|
|
90
|
+
abi: [],
|
|
91
|
+
deployments: {
|
|
92
|
+
canonical: {
|
|
93
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
94
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
networkAddresses: { '1': 'canonical' },
|
|
98
|
+
contractName: '',
|
|
99
|
+
released: false,
|
|
100
|
+
};
|
|
101
|
+
const testReleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
102
|
+
version: '',
|
|
103
|
+
abi: [],
|
|
104
|
+
deployments: {
|
|
105
|
+
canonical: {
|
|
106
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
107
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
networkAddresses: { '1': 'canonical' },
|
|
111
|
+
contractName: '',
|
|
112
|
+
released: true, // Default filter value
|
|
113
|
+
};
|
|
114
|
+
const testUnreleasedDeployment: SingletonDeployment = {
|
|
115
|
+
defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
116
|
+
deployments: {
|
|
117
|
+
canonical: {
|
|
118
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
119
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
|
|
123
|
+
released: false,
|
|
124
|
+
abi: [],
|
|
125
|
+
version: '',
|
|
126
|
+
contractName: '',
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const testDeployments = [testUnreleasedDeploymentJson, testReleasedDeploymentJson];
|
|
130
|
+
|
|
131
|
+
// Chronological deployments
|
|
132
|
+
expect(findDeployment({ released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(Safe141);
|
|
133
|
+
|
|
134
|
+
// Reverse chronological deployments
|
|
135
|
+
expect(findDeployment({ released: true }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
|
|
136
|
+
// Released flag set to false:
|
|
137
|
+
expect(findDeployment({ released: false }, testDeployments)).toMatchObject(testUnreleasedDeployment);
|
|
138
|
+
|
|
139
|
+
// L2 deployments
|
|
140
|
+
expect(findDeployment({ released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('should return the correct deployment (filtered by network)', () => {
|
|
144
|
+
// Reverse chronological deployments
|
|
145
|
+
expect(findDeployment({ network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
|
|
146
|
+
expect(findDeployment({ network: '73799' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe111);
|
|
147
|
+
expect(findDeployment({ network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe130);
|
|
148
|
+
// Incorrect filter:
|
|
149
|
+
expect(findDeployment({ network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
|
|
150
|
+
|
|
151
|
+
// L2 deployments
|
|
152
|
+
expect(findDeployment({ network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
|
|
153
|
+
// Incorrect filter:
|
|
154
|
+
expect(findDeployment({ network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
|
|
155
|
+
});
|
|
156
|
+
it('should return the correct deployment (filtered by version and released)', () => {
|
|
157
|
+
// Chronological deployments
|
|
158
|
+
expect(findDeployment({ version: '1.3.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe130);
|
|
159
|
+
expect(findDeployment({ version: '1.2.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe120);
|
|
160
|
+
expect(findDeployment({ version: '1.1.1', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe111);
|
|
161
|
+
expect(findDeployment({ version: '1.0.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe100);
|
|
162
|
+
// Incorrect filter:
|
|
163
|
+
expect(findDeployment({ version: '1.0.0', released: false }, _SAFE_DEPLOYMENTS)).toBeUndefined();
|
|
164
|
+
|
|
165
|
+
// L2 deployments
|
|
166
|
+
expect(
|
|
167
|
+
findDeployment(
|
|
168
|
+
{
|
|
169
|
+
version: '1.3.0',
|
|
170
|
+
released: true,
|
|
171
|
+
},
|
|
172
|
+
_SAFE_L2_DEPLOYMENTS,
|
|
173
|
+
),
|
|
174
|
+
).toMatchObject(GnosisSafeL2130);
|
|
175
|
+
expect(findDeployment({ version: '1.3.0+L2', released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(
|
|
176
|
+
GnosisSafeL2130,
|
|
177
|
+
);
|
|
178
|
+
// Incorrect filter:
|
|
179
|
+
expect(findDeployment({ version: '1.3.0+L2', released: false }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
|
|
180
|
+
});
|
|
181
|
+
it('should return the correct deployment (filtered by version and network)', () => {
|
|
182
|
+
// Reverse chronological deployments
|
|
183
|
+
expect(
|
|
184
|
+
findDeployment(
|
|
185
|
+
{
|
|
186
|
+
version: '1.0.0',
|
|
187
|
+
network: '1',
|
|
188
|
+
},
|
|
189
|
+
_safeDeploymentsReverse,
|
|
190
|
+
),
|
|
191
|
+
).toMatchObject(GnosisSafe100);
|
|
192
|
+
expect(
|
|
193
|
+
findDeployment(
|
|
194
|
+
{
|
|
195
|
+
version: '1.1.1',
|
|
196
|
+
network: '1',
|
|
197
|
+
},
|
|
198
|
+
_safeDeploymentsReverse,
|
|
199
|
+
),
|
|
200
|
+
).toMatchObject(GnosisSafe111);
|
|
201
|
+
expect(
|
|
202
|
+
findDeployment(
|
|
203
|
+
{
|
|
204
|
+
version: '1.2.0',
|
|
205
|
+
network: '1',
|
|
206
|
+
},
|
|
207
|
+
_safeDeploymentsReverse,
|
|
208
|
+
),
|
|
209
|
+
).toMatchObject(GnosisSafe120);
|
|
210
|
+
expect(
|
|
211
|
+
findDeployment(
|
|
212
|
+
{
|
|
213
|
+
version: '1.3.0',
|
|
214
|
+
network: '1',
|
|
215
|
+
},
|
|
216
|
+
_safeDeploymentsReverse,
|
|
217
|
+
),
|
|
218
|
+
).toMatchObject(GnosisSafe130);
|
|
219
|
+
// Incorrect filter:
|
|
220
|
+
expect(findDeployment({ version: '1.3.0', network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
|
|
221
|
+
|
|
222
|
+
// L2 deployments
|
|
223
|
+
expect(
|
|
224
|
+
findDeployment(
|
|
225
|
+
{
|
|
226
|
+
version: '1.3.0',
|
|
227
|
+
network: '100',
|
|
228
|
+
},
|
|
229
|
+
_SAFE_L2_DEPLOYMENTS,
|
|
230
|
+
),
|
|
231
|
+
).toMatchObject(GnosisSafeL2130);
|
|
232
|
+
expect(findDeployment({ version: '1.3.0+L2', network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(
|
|
233
|
+
GnosisSafeL2130,
|
|
234
|
+
);
|
|
235
|
+
// Incorrect filter:
|
|
236
|
+
expect(findDeployment({ version: '1.3.0+L2', network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
|
|
237
|
+
});
|
|
238
|
+
it('should return the correct deployment (filtered by released and network)', () => {
|
|
239
|
+
const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
240
|
+
version: '',
|
|
241
|
+
abi: [],
|
|
242
|
+
deployments: {
|
|
243
|
+
canonical: {
|
|
244
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
245
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
networkAddresses: { '1': 'canonical' },
|
|
249
|
+
contractName: '',
|
|
250
|
+
released: false,
|
|
251
|
+
};
|
|
252
|
+
const testReleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
253
|
+
version: '',
|
|
254
|
+
abi: [],
|
|
255
|
+
deployments: {
|
|
256
|
+
canonical: {
|
|
257
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
258
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
networkAddresses: { '1': 'canonical' },
|
|
262
|
+
contractName: '',
|
|
263
|
+
released: true, // Default filter value
|
|
264
|
+
};
|
|
265
|
+
const testUnreleasedDeployment: SingletonDeployment = {
|
|
266
|
+
defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
267
|
+
deployments: {
|
|
268
|
+
canonical: {
|
|
269
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
270
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
|
|
274
|
+
released: false,
|
|
275
|
+
abi: [],
|
|
276
|
+
version: '',
|
|
277
|
+
contractName: '',
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
const testDeployments = [
|
|
281
|
+
testUnreleasedDeploymentJson,
|
|
282
|
+
testUnreleasedDeploymentJson,
|
|
283
|
+
testReleasedDeploymentJson,
|
|
284
|
+
];
|
|
285
|
+
|
|
286
|
+
// Reverse chronological deployments
|
|
287
|
+
expect(
|
|
288
|
+
findDeployment(
|
|
289
|
+
{
|
|
290
|
+
released: true,
|
|
291
|
+
network: '1',
|
|
292
|
+
},
|
|
293
|
+
_safeDeploymentsReverse,
|
|
294
|
+
),
|
|
295
|
+
).toMatchObject(GnosisSafe100);
|
|
296
|
+
expect(findDeployment({ released: true, network: '246' }, _safeDeploymentsReverse)).toMatchObject(
|
|
297
|
+
GnosisSafe111,
|
|
298
|
+
);
|
|
299
|
+
expect(findDeployment({ released: true, network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(
|
|
300
|
+
GnosisSafe130,
|
|
301
|
+
);
|
|
302
|
+
// Incorrect filter:
|
|
303
|
+
expect(findDeployment({ released: true, network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
|
|
304
|
+
expect(findDeployment({ released: false, network: '1' }, testDeployments)).toMatchObject(
|
|
305
|
+
testUnreleasedDeployment,
|
|
306
|
+
);
|
|
307
|
+
|
|
308
|
+
// L2 deployments
|
|
309
|
+
expect(findDeployment({ released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
|
|
310
|
+
// Incorrect filter:
|
|
311
|
+
expect(findDeployment({ released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
|
|
312
|
+
expect(findDeployment({ released: false, network: '100' }, testDeployments)).toBeUndefined();
|
|
313
|
+
});
|
|
314
|
+
it('should return the correct deployment (filtered by version, released and network)', () => {
|
|
315
|
+
// Reverse chronological deployments
|
|
316
|
+
expect(
|
|
317
|
+
findDeployment({ version: '1.0.0', released: true, network: '1' }, _safeDeploymentsReverse),
|
|
318
|
+
).toMatchObject(GnosisSafe100);
|
|
319
|
+
expect(
|
|
320
|
+
findDeployment({ version: '1.1.1', released: true, network: '246' }, _safeDeploymentsReverse),
|
|
321
|
+
).toMatchObject(GnosisSafe111);
|
|
322
|
+
expect(
|
|
323
|
+
findDeployment({ version: '1.2.0', released: true, network: '73799' }, _safeDeploymentsReverse),
|
|
324
|
+
).toMatchObject(GnosisSafe120);
|
|
325
|
+
expect(
|
|
326
|
+
findDeployment({ version: '1.3.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
|
|
327
|
+
).toMatchObject(GnosisSafe130);
|
|
328
|
+
// Incorrect filter:
|
|
329
|
+
expect(
|
|
330
|
+
findDeployment({ version: '1.3.0', released: false, network: '11297108109' }, _safeDeploymentsReverse),
|
|
331
|
+
).toBeUndefined();
|
|
332
|
+
expect(
|
|
333
|
+
findDeployment({ version: '1.3.0', released: true, network: '0' }, _safeDeploymentsReverse),
|
|
334
|
+
).toBeUndefined();
|
|
335
|
+
expect(
|
|
336
|
+
findDeployment({ version: '2.0.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
|
|
337
|
+
).toBeUndefined();
|
|
338
|
+
|
|
339
|
+
// L2 deployments
|
|
340
|
+
expect(
|
|
341
|
+
findDeployment(
|
|
342
|
+
{
|
|
343
|
+
version: '1.3.0',
|
|
344
|
+
released: true,
|
|
345
|
+
network: '100',
|
|
346
|
+
},
|
|
347
|
+
_SAFE_L2_DEPLOYMENTS,
|
|
348
|
+
),
|
|
349
|
+
).toMatchObject(GnosisSafeL2130);
|
|
350
|
+
expect(
|
|
351
|
+
findDeployment({ version: '1.3.0+L2', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
|
|
352
|
+
).toMatchObject(GnosisSafeL2130);
|
|
353
|
+
// Incorrect filter:
|
|
354
|
+
expect(
|
|
355
|
+
findDeployment({ version: '1.3.0+L2', released: false, network: '100' }, _SAFE_L2_DEPLOYMENTS),
|
|
356
|
+
).toBeUndefined();
|
|
357
|
+
expect(
|
|
358
|
+
findDeployment({ version: '1.3.0+L2', released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS),
|
|
359
|
+
).toBeUndefined();
|
|
360
|
+
expect(
|
|
361
|
+
findDeployment({ version: '2.0.0+L2', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
|
|
362
|
+
).toBeUndefined();
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
describe('multiple format', () => {
|
|
367
|
+
it('should populate the networkAddresses field', () => {
|
|
368
|
+
const testReleasedDeploymentJson: SingletonDeploymentJSON = {
|
|
369
|
+
version: '',
|
|
370
|
+
abi: [],
|
|
371
|
+
deployments: {
|
|
372
|
+
canonical: {
|
|
373
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
374
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
375
|
+
},
|
|
376
|
+
eip155: {
|
|
377
|
+
address: '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe',
|
|
378
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
379
|
+
},
|
|
380
|
+
zksync: {
|
|
381
|
+
address: '0xbabebabebabebabebabebabebabebabebabebabe',
|
|
382
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
networkAddresses: { '1': 'canonical', '100': 'zksync', '101': ['canonical', 'eip155'] },
|
|
386
|
+
contractName: '',
|
|
387
|
+
released: true, // Default filter value
|
|
388
|
+
};
|
|
389
|
+
const expectedDeployment: SingletonDeploymentV2 = {
|
|
390
|
+
deployments: {
|
|
391
|
+
canonical: {
|
|
392
|
+
address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
393
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
394
|
+
},
|
|
395
|
+
eip155: {
|
|
396
|
+
address: '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe',
|
|
397
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
398
|
+
},
|
|
399
|
+
zksync: {
|
|
400
|
+
address: '0xbabebabebabebabebabebabebabebabebabebabe',
|
|
401
|
+
codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
networkAddresses: {
|
|
405
|
+
'1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
|
|
406
|
+
'100': '0xbabebabebabebabebabebabebabebabebabebabe',
|
|
407
|
+
'101': ['0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef', '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe'],
|
|
408
|
+
},
|
|
409
|
+
released: true,
|
|
410
|
+
abi: [],
|
|
411
|
+
version: '',
|
|
412
|
+
contractName: '',
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
const testDeployments = [testReleasedDeploymentJson];
|
|
416
|
+
|
|
417
|
+
expect(findDeployment({}, testDeployments, DeploymentFormats.MULTIPLE)).toMatchObject(expectedDeployment);
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
});
|
package/src/accessors.ts
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { DeploymentFilter, SingletonDeployment } from './types'
|
|
5
|
-
import { findDeployment } from './utils'
|
|
6
|
-
|
|
7
|
-
// This is a sorted array (newest to oldest)
|
|
8
|
-
const accessorDeployments: SingletonDeployment[] = [
|
|
9
|
-
SimulateTxAccessor141, SimulateTxAccessor130
|
|
10
|
-
]
|
|
1
|
+
import { DeploymentFilter, SingletonDeployment, DeploymentFormats, SingletonDeploymentV2 } from './types';
|
|
2
|
+
import { findDeployment } from './utils';
|
|
3
|
+
import { _ACCESSOR_DEPLOYMENTS } from './deployments';
|
|
11
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves a single simulate transaction accessor deployment based on the provided filter.
|
|
7
|
+
*
|
|
8
|
+
* @param {DeploymentFilter} [filter] - Optional filter to apply when searching for the deployment.
|
|
9
|
+
* @returns {SingletonDeployment | undefined} - The found deployment or undefined if no deployment matches the filter.
|
|
10
|
+
*/
|
|
12
11
|
export const getSimulateTxAccessorDeployment = (filter?: DeploymentFilter): SingletonDeployment | undefined => {
|
|
13
|
-
|
|
14
|
-
}
|
|
12
|
+
return findDeployment(filter, _ACCESSOR_DEPLOYMENTS);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Retrieves multiple simulate transaction accessor deployments based on the provided filter.
|
|
17
|
+
*
|
|
18
|
+
* @param {DeploymentFilter} [filter] - Optional filter to apply when searching for the deployments.
|
|
19
|
+
* @returns {SingletonDeploymentV2 | undefined} - The found deployments in the specified format or undefined if no deployments match the filter.
|
|
20
|
+
*/
|
|
21
|
+
export const getSimulateTxAccessorDeployments = (filter?: DeploymentFilter): SingletonDeploymentV2 | undefined => {
|
|
22
|
+
return findDeployment(filter, _ACCESSOR_DEPLOYMENTS, DeploymentFormats.MULTIPLE);
|
|
23
|
+
};
|