@openzeppelin/upgrades-core 1.24.1 → 1.26.0
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/artifacts/build-info.json +21465 -0
- package/dist/deployment.d.ts +28 -4
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +106 -25
- package/dist/deployment.js.map +1 -1
- package/dist/deployment.test.js +116 -0
- package/dist/deployment.test.js.map +1 -1
- package/dist/impl-store.d.ts +27 -2
- package/dist/impl-store.d.ts.map +1 -1
- package/dist/impl-store.js +39 -8
- package/dist/impl-store.js.map +1 -1
- package/dist/impl-store.test.js +30 -0
- package/dist/impl-store.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +3 -3
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.test.js +1 -0
- package/dist/manifest.test.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +4 -0
- package/dist/provider.js.map +1 -1
- package/dist/usage-error.d.ts +6 -0
- package/dist/usage-error.d.ts.map +1 -1
- package/dist/usage-error.js +10 -1
- package/dist/usage-error.js.map +1 -1
- package/dist/validate/error.d.ts +3 -0
- package/dist/validate/error.d.ts.map +1 -1
- package/dist/validate/error.js +7 -1
- package/dist/validate/error.js.map +1 -1
- package/dist/validate/index.d.ts +1 -1
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +2 -1
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/query.js +1 -1
- package/dist/validate/query.js.map +1 -1
- package/package.json +3 -2
- package/src/deployment.test.ts +182 -1
- package/src/deployment.ts +134 -26
- package/src/impl-store.test.ts +52 -1
- package/src/impl-store.ts +69 -11
- package/src/index.ts +1 -0
- package/src/manifest.test.ts +1 -0
- package/src/manifest.ts +11 -8
- package/src/provider.ts +4 -0
- package/src/usage-error.ts +13 -0
- package/src/validate/error.ts +6 -0
- package/src/validate/index.ts +1 -1
- package/src/validate/query.ts +2 -2
package/dist/deployment.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export interface Deployment {
|
|
|
5
5
|
address: string;
|
|
6
6
|
txHash?: string;
|
|
7
7
|
}
|
|
8
|
+
export interface RemoteDeploymentId {
|
|
9
|
+
remoteDeploymentId?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Options for deploying an implementation contract, proxy admin contract, or remote deployment.
|
|
13
|
+
*/
|
|
8
14
|
export interface DeployOpts {
|
|
9
15
|
/**
|
|
10
16
|
* Timeout in milliseconds to wait for the transaction confirmation when deploying an implementation contract or proxy admin contract. Use `0` to wait indefinitely.
|
|
@@ -31,14 +37,22 @@ export interface DeployOpts {
|
|
|
31
37
|
* If not provided, invalid deployments will not be deleted in a dev network (which is not a problem if merge is false,
|
|
32
38
|
* since it will be overwritten with the new deployment).
|
|
33
39
|
* @param merge whether the cached deployment is intended to be merged with the new deployment. Defaults to false.
|
|
40
|
+
* @param getRemoteDeployment a function to get the remote deployment status by id. If the deployment id is not found, returns undefined.
|
|
34
41
|
* @returns the cached deployment if it should be used, otherwise the new deployment from the deploy function
|
|
35
42
|
* @throws {InvalidDeployment} if the cached deployment is invalid and we are not on a dev network
|
|
36
43
|
*/
|
|
37
|
-
export declare function resumeOrDeploy<T extends Deployment, U extends T = T>(provider: EthereumProvider, cached: T | undefined, deploy: () => Promise<U>, type?: string, opts?: DeployOpts, deployment?: ManifestField<T>, merge?: boolean): Promise<T | U>;
|
|
38
|
-
|
|
44
|
+
export declare function resumeOrDeploy<T extends Deployment, U extends T = T>(provider: EthereumProvider, cached: T | undefined, deploy: () => Promise<U>, type?: string, opts?: DeployOpts, deployment?: ManifestField<T>, merge?: boolean, getRemoteDeployment?: (remoteDeploymentId: string) => Promise<RemoteDeployment | undefined>): Promise<T | U>;
|
|
45
|
+
/**
|
|
46
|
+
* A deployment that is performed remotely, which has a status and transaction hash.
|
|
47
|
+
*/
|
|
48
|
+
export interface RemoteDeployment {
|
|
49
|
+
status: 'completed' | 'failed' | 'submitted';
|
|
50
|
+
txHash: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function waitAndValidateDeployment(provider: EthereumProvider, deployment: Deployment & RemoteDeploymentId, type?: string, opts?: DeployOpts, getRemoteDeployment?: (remoteDeploymentId: string) => Promise<RemoteDeployment | undefined>): Promise<void>;
|
|
39
53
|
export declare class TransactionMinedTimeout extends UpgradesError {
|
|
40
|
-
readonly deployment: Deployment;
|
|
41
|
-
constructor(deployment: Deployment, type?: string, configurableTimeout?: boolean);
|
|
54
|
+
readonly deployment: Deployment & RemoteDeploymentId;
|
|
55
|
+
constructor(deployment: Deployment & RemoteDeploymentId, type?: string, configurableTimeout?: boolean);
|
|
42
56
|
}
|
|
43
57
|
export declare class InvalidDeployment extends Error {
|
|
44
58
|
readonly deployment: Deployment;
|
|
@@ -46,4 +60,14 @@ export declare class InvalidDeployment extends Error {
|
|
|
46
60
|
constructor(deployment: Deployment);
|
|
47
61
|
get message(): string;
|
|
48
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Checks if the deployment id is completed.
|
|
65
|
+
*
|
|
66
|
+
* @param address The expected address of the deployment.
|
|
67
|
+
* @param remoteDeploymentId The deployment id.
|
|
68
|
+
* @param remoteDeploymentResponse The remote deployment response corresponding to the given id.
|
|
69
|
+
* @returns true if the deployment id is completed, false otherwise.
|
|
70
|
+
* @throws {InvalidDeployment} if the deployment id failed.
|
|
71
|
+
*/
|
|
72
|
+
export declare function isDeploymentCompleted(address: string, remoteDeploymentId: string, remoteDeploymentResponse: RemoteDeployment | undefined): Promise<boolean>;
|
|
49
73
|
//# sourceMappingURL=deployment.d.ts.map
|
package/dist/deployment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAQjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC;AAI/D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAQjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC;AAI/D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EACxE,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,CAAC,GAAG,SAAS,EACrB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,UAAU,EACjB,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAC7B,KAAK,CAAC,EAAE,OAAO,EACf,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAC1F,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAShB;AAkFD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,UAAU,GAAG,kBAAkB,EAC3C,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,UAAU,EACjB,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAC1F,OAAO,CAAC,IAAI,CAAC,CA+Ef;AAED,qBAAa,uBAAwB,SAAQ,aAAa;IAC5C,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,kBAAkB;gBAA3C,UAAU,EAAE,UAAU,GAAG,kBAAkB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,OAAO;CAc/G;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAG9B,QAAQ,CAAC,UAAU,EAAE,UAAU;IAF3C,OAAO,UAAS;gBAEK,UAAU,EAAE,UAAU;IAO3C,IAAI,OAAO,IAAI,MAAM,CAMpB;CACF;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAC1B,wBAAwB,EAAE,gBAAgB,GAAG,SAAS,GACrD,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
package/dist/deployment.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.InvalidDeployment = exports.TransactionMinedTimeout = exports.waitAndValidateDeployment = exports.resumeOrDeploy = void 0;
|
|
6
|
+
exports.isDeploymentCompleted = exports.InvalidDeployment = exports.TransactionMinedTimeout = exports.waitAndValidateDeployment = exports.resumeOrDeploy = void 0;
|
|
7
7
|
const util_1 = require("util");
|
|
8
8
|
const debug_1 = __importDefault(require("./utils/debug"));
|
|
9
9
|
const make_non_enumerable_1 = require("./utils/make-non-enumerable");
|
|
@@ -27,11 +27,12 @@ const sleep = (0, util_1.promisify)(setTimeout);
|
|
|
27
27
|
* If not provided, invalid deployments will not be deleted in a dev network (which is not a problem if merge is false,
|
|
28
28
|
* since it will be overwritten with the new deployment).
|
|
29
29
|
* @param merge whether the cached deployment is intended to be merged with the new deployment. Defaults to false.
|
|
30
|
+
* @param getRemoteDeployment a function to get the remote deployment status by id. If the deployment id is not found, returns undefined.
|
|
30
31
|
* @returns the cached deployment if it should be used, otherwise the new deployment from the deploy function
|
|
31
32
|
* @throws {InvalidDeployment} if the cached deployment is invalid and we are not on a dev network
|
|
32
33
|
*/
|
|
33
|
-
async function resumeOrDeploy(provider, cached, deploy, type, opts, deployment, merge) {
|
|
34
|
-
const validated = await validateCached(cached, provider, type, opts, deployment, merge);
|
|
34
|
+
async function resumeOrDeploy(provider, cached, deploy, type, opts, deployment, merge, getRemoteDeployment) {
|
|
35
|
+
const validated = await validateCached(cached, provider, type, opts, deployment, merge, getRemoteDeployment);
|
|
35
36
|
if (validated === undefined || merge) {
|
|
36
37
|
const deployment = await deploy();
|
|
37
38
|
(0, debug_1.default)('initiated deployment', 'transaction hash:', deployment.txHash, 'merge:', merge);
|
|
@@ -42,10 +43,10 @@ async function resumeOrDeploy(provider, cached, deploy, type, opts, deployment,
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
exports.resumeOrDeploy = resumeOrDeploy;
|
|
45
|
-
async function validateCached(cached, provider, type, opts, deployment, merge) {
|
|
46
|
+
async function validateCached(cached, provider, type, opts, deployment, merge, getRemoteDeployment) {
|
|
46
47
|
if (cached !== undefined) {
|
|
47
48
|
try {
|
|
48
|
-
await validateStoredDeployment(cached, provider, type, opts, merge);
|
|
49
|
+
return await validateStoredDeployment(cached, provider, type, opts, merge, getRemoteDeployment);
|
|
49
50
|
}
|
|
50
51
|
catch (e) {
|
|
51
52
|
if (e instanceof InvalidDeployment && (await (0, provider_1.isDevelopmentNetwork)(provider))) {
|
|
@@ -60,43 +61,87 @@ async function validateCached(cached, provider, type, opts, deployment, merge) {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
else {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
64
67
|
}
|
|
65
|
-
async function validateStoredDeployment(stored, provider, type, opts, merge) {
|
|
66
|
-
const { txHash } = stored;
|
|
68
|
+
async function validateStoredDeployment(stored, provider, type, opts, merge, getRemoteDeployment) {
|
|
69
|
+
const { txHash, remoteDeploymentId } = stored;
|
|
70
|
+
let deployment = stored;
|
|
67
71
|
if (txHash !== undefined) {
|
|
68
72
|
// If there is a deployment with txHash stored, we look its transaction up. If the
|
|
69
73
|
// transaction is found, the deployment is reused.
|
|
70
74
|
(0, debug_1.default)('found previous deployment', txHash);
|
|
71
75
|
const tx = await (0, provider_1.getTransactionByHash)(provider, txHash);
|
|
76
|
+
let foundDeployment = undefined;
|
|
72
77
|
if (tx !== null) {
|
|
73
|
-
|
|
78
|
+
foundDeployment = txHash;
|
|
79
|
+
}
|
|
80
|
+
else if (remoteDeploymentId !== undefined && getRemoteDeployment !== undefined) {
|
|
81
|
+
// If the transaction is not found, try checking the deployment id since the transaction may have been replaced
|
|
82
|
+
const response = await getRemoteDeployment(remoteDeploymentId);
|
|
83
|
+
if (response !== undefined) {
|
|
84
|
+
foundDeployment = remoteDeploymentId;
|
|
85
|
+
// update the stored tx hash
|
|
86
|
+
deployment = { ...stored, txHash: response.txHash };
|
|
87
|
+
(0, debug_1.default)('updating previous deployment to tx hash ', response.txHash);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (foundDeployment) {
|
|
91
|
+
(0, debug_1.default)('resuming previous deployment', foundDeployment);
|
|
74
92
|
if (merge) {
|
|
75
93
|
// If merging, wait for the existing deployment to be mined
|
|
76
|
-
waitAndValidateDeployment(provider,
|
|
94
|
+
waitAndValidateDeployment(provider, deployment, type, opts, getRemoteDeployment);
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
97
|
else {
|
|
80
98
|
// If the transaction is not found we throw an error, except if we're in
|
|
81
99
|
// a development network then we simply silently redeploy.
|
|
82
100
|
// This error should be caught by the caller to determine if we're in a dev network.
|
|
83
|
-
throw new InvalidDeployment(
|
|
101
|
+
throw new InvalidDeployment(deployment);
|
|
84
102
|
}
|
|
85
103
|
}
|
|
86
104
|
else {
|
|
87
|
-
const existingBytecode = await (0, provider_1.getCode)(provider,
|
|
105
|
+
const existingBytecode = await (0, provider_1.getCode)(provider, deployment.address);
|
|
88
106
|
if ((0, provider_1.isEmpty)(existingBytecode)) {
|
|
89
|
-
throw new InvalidDeployment(
|
|
107
|
+
throw new InvalidDeployment(deployment);
|
|
90
108
|
}
|
|
91
109
|
}
|
|
110
|
+
return deployment;
|
|
92
111
|
}
|
|
93
|
-
async function waitAndValidateDeployment(provider, deployment, type, opts) {
|
|
94
|
-
const { txHash, address } = deployment;
|
|
112
|
+
async function waitAndValidateDeployment(provider, deployment, type, opts, getRemoteDeployment) {
|
|
113
|
+
const { txHash, address, remoteDeploymentId } = deployment;
|
|
95
114
|
// Poll for 60 seconds with a 5 second poll interval by default.
|
|
96
115
|
const pollTimeout = opts?.timeout ?? 60e3;
|
|
97
116
|
const pollInterval = opts?.pollingInterval ?? 5e3;
|
|
98
117
|
(0, debug_1.default)('polling timeout', pollTimeout, 'polling interval', pollInterval);
|
|
99
|
-
|
|
118
|
+
let foundCode = false;
|
|
119
|
+
if (remoteDeploymentId !== undefined && getRemoteDeployment !== undefined) {
|
|
120
|
+
const startTime = Date.now();
|
|
121
|
+
// eslint-disable-next-line no-constant-condition
|
|
122
|
+
while (true) {
|
|
123
|
+
if (await (0, provider_1.hasCode)(provider, address)) {
|
|
124
|
+
(0, debug_1.default)('code in target address found', address);
|
|
125
|
+
foundCode = true;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
const completed = await isDeploymentCompleted(address, remoteDeploymentId, await getRemoteDeployment(remoteDeploymentId));
|
|
129
|
+
if (completed) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
await sleep(pollInterval);
|
|
134
|
+
}
|
|
135
|
+
if (pollTimeout != 0) {
|
|
136
|
+
const elapsedTime = Date.now() - startTime;
|
|
137
|
+
if (elapsedTime >= pollTimeout) {
|
|
138
|
+
// A timeout is NOT an InvalidDeployment
|
|
139
|
+
throw new TransactionMinedTimeout(deployment, type, !!opts);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (txHash !== undefined) {
|
|
100
145
|
const startTime = Date.now();
|
|
101
146
|
// eslint-disable-next-line no-constant-condition
|
|
102
147
|
while (true) {
|
|
@@ -123,21 +168,25 @@ async function waitAndValidateDeployment(provider, deployment, type, opts) {
|
|
|
123
168
|
}
|
|
124
169
|
}
|
|
125
170
|
}
|
|
126
|
-
(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
171
|
+
if (!foundCode) {
|
|
172
|
+
(0, debug_1.default)('verifying code in target address', address);
|
|
173
|
+
const startTime = Date.now();
|
|
174
|
+
while (!(await (0, provider_1.hasCode)(provider, address))) {
|
|
175
|
+
const elapsedTime = Date.now() - startTime;
|
|
176
|
+
if (elapsedTime >= pollTimeout || txHash === undefined) {
|
|
177
|
+
throw new InvalidDeployment(deployment);
|
|
178
|
+
}
|
|
179
|
+
await sleep(pollInterval);
|
|
132
180
|
}
|
|
133
|
-
|
|
181
|
+
(0, debug_1.default)('code in target address found', address);
|
|
134
182
|
}
|
|
135
|
-
(0, debug_1.default)('code in target address found', address);
|
|
136
183
|
}
|
|
137
184
|
exports.waitAndValidateDeployment = waitAndValidateDeployment;
|
|
138
185
|
class TransactionMinedTimeout extends error_1.UpgradesError {
|
|
139
186
|
constructor(deployment, type, configurableTimeout) {
|
|
140
|
-
super(`Timed out waiting for ${type ? type + ' ' : ''}contract deployment to address ${deployment.address} with
|
|
187
|
+
super(`Timed out waiting for ${type ? type + ' ' : ''}contract deployment to address ${deployment.address} with ${deployment.remoteDeploymentId
|
|
188
|
+
? `deployment id ${deployment.remoteDeploymentId}`
|
|
189
|
+
: `transaction ${deployment.txHash}`}`, () => 'Run the function again to continue waiting for the transaction confirmation.' +
|
|
141
190
|
(configurableTimeout
|
|
142
191
|
? ' If the problem persists, adjust the polling parameters with the timeout and pollingInterval options.'
|
|
143
192
|
: ''));
|
|
@@ -163,4 +212,36 @@ class InvalidDeployment extends Error {
|
|
|
163
212
|
}
|
|
164
213
|
}
|
|
165
214
|
exports.InvalidDeployment = InvalidDeployment;
|
|
215
|
+
/**
|
|
216
|
+
* Checks if the deployment id is completed.
|
|
217
|
+
*
|
|
218
|
+
* @param address The expected address of the deployment.
|
|
219
|
+
* @param remoteDeploymentId The deployment id.
|
|
220
|
+
* @param remoteDeploymentResponse The remote deployment response corresponding to the given id.
|
|
221
|
+
* @returns true if the deployment id is completed, false otherwise.
|
|
222
|
+
* @throws {InvalidDeployment} if the deployment id failed.
|
|
223
|
+
*/
|
|
224
|
+
async function isDeploymentCompleted(address, remoteDeploymentId, remoteDeploymentResponse) {
|
|
225
|
+
(0, debug_1.default)('verifying deployment id', remoteDeploymentId);
|
|
226
|
+
if (remoteDeploymentResponse === undefined) {
|
|
227
|
+
throw new Error(`Could not find remote deployment with id ${remoteDeploymentId}`);
|
|
228
|
+
}
|
|
229
|
+
const status = remoteDeploymentResponse.status;
|
|
230
|
+
if (status === 'completed') {
|
|
231
|
+
(0, debug_1.default)('succeeded verifying deployment id completed', remoteDeploymentId);
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
else if (status === 'failed') {
|
|
235
|
+
(0, debug_1.default)(`deployment id ${remoteDeploymentId} failed with tx hash ${remoteDeploymentResponse.txHash}`);
|
|
236
|
+
throw new InvalidDeployment({ address, txHash: remoteDeploymentResponse.txHash });
|
|
237
|
+
}
|
|
238
|
+
else if (status === 'submitted') {
|
|
239
|
+
(0, debug_1.default)('waiting for deployment id to be completed', remoteDeploymentId);
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
throw new Error(`Broken invariant: Unrecognized status ${status} for deployment id ${remoteDeploymentId}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.isDeploymentCompleted = isDeploymentCompleted;
|
|
166
247
|
//# sourceMappingURL=deployment.js.map
|
package/dist/deployment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAiC;AAEjC,0DAAkC;AAClC,qEAAgE;AAChE,yCASoB;AACpB,mCAAwC;AACxC,6CAA+D;AAE/D,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
|
package/dist/deployment.test.js
CHANGED
|
@@ -6,9 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const ava_1 = __importDefault(require("ava"));
|
|
7
7
|
const util_1 = require("util");
|
|
8
8
|
const _1 = require(".");
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
9
10
|
const deployment_1 = require("./deployment");
|
|
10
11
|
const stub_provider_1 = require("./stub-provider");
|
|
11
12
|
const sleep = (0, util_1.promisify)(setTimeout);
|
|
13
|
+
ava_1.default.afterEach.always(() => {
|
|
14
|
+
sinon_1.default.restore();
|
|
15
|
+
});
|
|
12
16
|
(0, ava_1.default)('deploys new contract', async (t) => {
|
|
13
17
|
const provider = (0, stub_provider_1.stubProvider)();
|
|
14
18
|
const deployment = await (0, deployment_1.resumeOrDeploy)(provider, undefined, provider.deploy);
|
|
@@ -112,4 +116,116 @@ const sleep = (0, util_1.promisify)(setTimeout);
|
|
|
112
116
|
t.true(EXPECTED.test(e.message), e.message);
|
|
113
117
|
}
|
|
114
118
|
});
|
|
119
|
+
(0, ava_1.default)('platform - resumes existing deployment id and replaces tx hash', async (t) => {
|
|
120
|
+
const provider = (0, stub_provider_1.stubProvider)();
|
|
121
|
+
const getDeploymentResponse = sinon_1.default.stub().returns({
|
|
122
|
+
status: 'submitted',
|
|
123
|
+
txHash: '0x2',
|
|
124
|
+
});
|
|
125
|
+
const first = await (0, deployment_1.resumeOrDeploy)(provider, undefined, provider.deployPending);
|
|
126
|
+
first.txHash = '0x1';
|
|
127
|
+
first.remoteDeploymentId = 'abc';
|
|
128
|
+
const second = await (0, deployment_1.resumeOrDeploy)(provider, first, provider.deployPending, undefined, undefined, undefined, undefined, getDeploymentResponse);
|
|
129
|
+
t.is(second.address, first.address);
|
|
130
|
+
t.is(second.remoteDeploymentId, first.remoteDeploymentId);
|
|
131
|
+
t.is(second.txHash, '0x2');
|
|
132
|
+
t.is(provider.deployCount, 1);
|
|
133
|
+
});
|
|
134
|
+
(0, ava_1.default)('platform - resumes existing deployment id and uses tx hash', async (t) => {
|
|
135
|
+
const provider = (0, stub_provider_1.stubProvider)();
|
|
136
|
+
const getDeploymentResponse = sinon_1.default.stub().throws();
|
|
137
|
+
const first = await (0, deployment_1.resumeOrDeploy)(provider, undefined, provider.deploy);
|
|
138
|
+
// tx hash was mined
|
|
139
|
+
first.remoteDeploymentId = 'abc';
|
|
140
|
+
const second = await (0, deployment_1.resumeOrDeploy)(provider, first, provider.deployPending, undefined, undefined, undefined, undefined, getDeploymentResponse);
|
|
141
|
+
t.is(second.address, first.address);
|
|
142
|
+
t.is(second.txHash, first.txHash);
|
|
143
|
+
t.is(second.remoteDeploymentId, first.remoteDeploymentId);
|
|
144
|
+
t.is(provider.deployCount, 1);
|
|
145
|
+
await (0, deployment_1.waitAndValidateDeployment)(provider, second);
|
|
146
|
+
t.is(provider.getMethodCount('eth_getTransactionReceipt'), 1);
|
|
147
|
+
});
|
|
148
|
+
(0, ava_1.default)('platform - errors if tx and deployment id are not found', async (t) => {
|
|
149
|
+
const provider = (0, stub_provider_1.stubProvider)();
|
|
150
|
+
const getDeploymentResponse = sinon_1.default.stub().returns(undefined);
|
|
151
|
+
const fakeDeployment = {
|
|
152
|
+
address: '0x1aec6468218510f19bb19f52c4767996895ce711',
|
|
153
|
+
txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
|
|
154
|
+
remoteDeploymentId: 'abc',
|
|
155
|
+
};
|
|
156
|
+
await t.throwsAsync((0, deployment_1.resumeOrDeploy)(provider, fakeDeployment, provider.deploy, undefined, undefined, undefined, undefined, getDeploymentResponse));
|
|
157
|
+
t.true(getDeploymentResponse.calledOnceWithExactly('abc'));
|
|
158
|
+
});
|
|
159
|
+
(0, ava_1.default)('platform - waits for a deployment to be completed', async (t) => {
|
|
160
|
+
const timeout = Symbol('timeout');
|
|
161
|
+
const provider = (0, stub_provider_1.stubProvider)();
|
|
162
|
+
const deployment = await provider.deployPending();
|
|
163
|
+
deployment.remoteDeploymentId = 'abc';
|
|
164
|
+
provider.removeContract(deployment.address);
|
|
165
|
+
const getDeploymentResponse = sinon_1.default.stub();
|
|
166
|
+
getDeploymentResponse.onCall(0).returns({
|
|
167
|
+
status: 'submitted',
|
|
168
|
+
txHash: deployment.txHash,
|
|
169
|
+
});
|
|
170
|
+
getDeploymentResponse.onCall(1).returns({
|
|
171
|
+
status: 'completed',
|
|
172
|
+
txHash: deployment.txHash,
|
|
173
|
+
});
|
|
174
|
+
// checks that status is completed but code not at address yet
|
|
175
|
+
const result = await Promise.race([
|
|
176
|
+
(0, deployment_1.waitAndValidateDeployment)(provider, deployment, undefined, { pollingInterval: 0 }, getDeploymentResponse),
|
|
177
|
+
sleep(100).then(() => timeout),
|
|
178
|
+
]);
|
|
179
|
+
t.is(result, timeout);
|
|
180
|
+
t.is(getDeploymentResponse.callCount, 2);
|
|
181
|
+
// code mined to address
|
|
182
|
+
provider.addContract(deployment.address);
|
|
183
|
+
provider.mine();
|
|
184
|
+
// checks that the code is at address
|
|
185
|
+
await (0, deployment_1.waitAndValidateDeployment)(provider, deployment, undefined, { pollingInterval: 0 }, getDeploymentResponse);
|
|
186
|
+
t.is(getDeploymentResponse.callCount, 2);
|
|
187
|
+
});
|
|
188
|
+
(0, ava_1.default)('platform - fails deployment fast if deployment id failed', async (t) => {
|
|
189
|
+
const provider = (0, stub_provider_1.stubProvider)();
|
|
190
|
+
const getDeploymentResponse = sinon_1.default.stub().returns({
|
|
191
|
+
status: 'failed',
|
|
192
|
+
txHash: '0x2',
|
|
193
|
+
});
|
|
194
|
+
const fakeDeployment = {
|
|
195
|
+
address: '0x1aec6468218510f19bb19f52c4767996895ce711',
|
|
196
|
+
txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
|
|
197
|
+
remoteDeploymentId: 'abc',
|
|
198
|
+
};
|
|
199
|
+
const deployment = await (0, deployment_1.resumeOrDeploy)(provider, fakeDeployment, provider.deployPending, undefined, undefined, undefined, undefined, getDeploymentResponse);
|
|
200
|
+
t.true(getDeploymentResponse.calledOnceWithExactly('abc'));
|
|
201
|
+
await t.throwsAsync((0, deployment_1.waitAndValidateDeployment)(provider, deployment, undefined, undefined, getDeploymentResponse));
|
|
202
|
+
});
|
|
203
|
+
(0, ava_1.default)('platform - deployment id timeout - no params', async (t) => {
|
|
204
|
+
const fakeDeployment = {
|
|
205
|
+
address: '0x1aec6468218510f19bb19f52c4767996895ce711',
|
|
206
|
+
txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
|
|
207
|
+
remoteDeploymentId: 'abc',
|
|
208
|
+
};
|
|
209
|
+
try {
|
|
210
|
+
throw new _1.TransactionMinedTimeout(fakeDeployment);
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
const EXPECTED = /Timed out waiting for contract deployment to address \S+ with deployment id abc\n\nRun the function again to continue waiting for the transaction confirmation./;
|
|
214
|
+
t.true(EXPECTED.test(e.message), e.message);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
(0, ava_1.default)('platform - deployment id timeout - params', async (t) => {
|
|
218
|
+
const fakeDeployment = {
|
|
219
|
+
address: '0x1aec6468218510f19bb19f52c4767996895ce711',
|
|
220
|
+
txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
|
|
221
|
+
remoteDeploymentId: 'abc',
|
|
222
|
+
};
|
|
223
|
+
try {
|
|
224
|
+
throw new _1.TransactionMinedTimeout(fakeDeployment, 'implementation', true);
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
const EXPECTED = /Timed out waiting for implementation contract deployment to address \S+ with deployment id abc+\n\nRun the function again to continue waiting for the transaction confirmation. If the problem persists, adjust the polling parameters with the timeout and pollingInterval options./;
|
|
228
|
+
t.true(EXPECTED.test(e.message), e.message);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
115
231
|
//# sourceMappingURL=deployment.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.test.js","sourceRoot":"","sources":["../src/deployment.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deployment.test.js","sourceRoot":"","sources":["../src/deployment.test.ts"],"names":[],"mappings":"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"}
|
package/dist/impl-store.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ImplDeployment } from './manifest';
|
|
2
2
|
import { EthereumProvider } from './provider';
|
|
3
|
-
import { Deployment } from './deployment';
|
|
3
|
+
import { Deployment, RemoteDeployment } from './deployment';
|
|
4
4
|
import { Version } from './version';
|
|
5
5
|
import { DeployOpts } from '.';
|
|
6
6
|
export interface ManifestField<T> {
|
|
@@ -13,8 +13,33 @@ export interface ManifestField<T> {
|
|
|
13
13
|
* Should only be used during a manifest run.
|
|
14
14
|
*/
|
|
15
15
|
export declare function deleteDeployment(deployment: ManifestField<Deployment>): void;
|
|
16
|
+
/**
|
|
17
|
+
* Fetches the deployment address from the manifest, or deploys it if not found and returns the address.
|
|
18
|
+
*
|
|
19
|
+
* @param version the contract version
|
|
20
|
+
* @param provider the Ethereum provider
|
|
21
|
+
* @param deploy the deploy function
|
|
22
|
+
* @param opts options containing the timeout and pollingInterval parameters. If undefined, assumes the timeout is not configurable and will not mention those parameters in the error message for TransactionMinedTimeout.
|
|
23
|
+
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
24
|
+
* @returns the deployment address
|
|
25
|
+
* @throws {InvalidDeployment} if the deployment is invalid
|
|
26
|
+
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
27
|
+
*/
|
|
16
28
|
export declare function fetchOrDeploy(version: Version, provider: EthereumProvider, deploy: () => Promise<ImplDeployment>, opts?: DeployOpts, merge?: boolean): Promise<string>;
|
|
17
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Fetches the deployment from the manifest, or deploys it if not found and returns the deployment.
|
|
31
|
+
*
|
|
32
|
+
* @param version the contract version
|
|
33
|
+
* @param provider the Ethereum provider
|
|
34
|
+
* @param deploy the deploy function
|
|
35
|
+
* @param opts options containing the timeout and pollingInterval parameters. If undefined, assumes the timeout is not configurable and will not mention those parameters in the error message for TransactionMinedTimeout.
|
|
36
|
+
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
37
|
+
* @param getRemoteDeployment a function to get the remote deployment status by id. If the deployment id is not found, returns undefined.
|
|
38
|
+
* @returns the deployment
|
|
39
|
+
* @throws {InvalidDeployment} if the deployment is invalid
|
|
40
|
+
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
41
|
+
*/
|
|
42
|
+
export declare function fetchOrDeployGetDeployment<T extends ImplDeployment>(version: Version, provider: EthereumProvider, deploy: () => Promise<T>, opts?: DeployOpts, merge?: boolean, getRemoteDeployment?: (remoteDeploymentId: string) => Promise<RemoteDeployment | undefined>): Promise<T | Deployment>;
|
|
18
43
|
/**
|
|
19
44
|
* Merge the addresses in the deployments and returns them.
|
|
20
45
|
*
|
package/dist/impl-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-store.d.ts","sourceRoot":"","sources":["../src/impl-store.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,cAAc,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"impl-store.d.ts","sourceRoot":"","sources":["../src/impl-store.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,cAAc,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,UAAU,EAEV,gBAAgB,EAIjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAQ/B,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CACpC;AAqFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,QAErE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EACrC,IAAI,CAAC,EAAE,UAAU,EACjB,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,SAAS,cAAc,EACvE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,UAAU,EACjB,KAAK,CAAC,EAAE,OAAO,EACf,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAC1F,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CASzB;AAiBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc;;;EAU7E;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACjC,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
package/dist/impl-store.js
CHANGED
|
@@ -17,11 +17,12 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
17
17
|
* @param deploy the deploy function
|
|
18
18
|
* @param opts options containing the timeout and pollingInterval parameters. If undefined, assumes the timeout is not configurable and will not mention those parameters in the error message for TransactionMinedTimeout.
|
|
19
19
|
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
20
|
+
* @param getRemoteDeployment a function to get the remote deployment status by id. If the deployment id is not found, returns undefined.
|
|
20
21
|
* @returns the deployment
|
|
21
22
|
* @throws {InvalidDeployment} if the deployment is invalid
|
|
22
23
|
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
23
24
|
*/
|
|
24
|
-
async function fetchOrDeployGeneric(lens, provider, deploy, opts, merge) {
|
|
25
|
+
async function fetchOrDeployGeneric(lens, provider, deploy, opts, merge, getRemoteDeployment) {
|
|
25
26
|
const manifest = await manifest_1.Manifest.forNetwork(provider);
|
|
26
27
|
try {
|
|
27
28
|
const deployment = await manifest.lockedRun(async () => {
|
|
@@ -32,7 +33,7 @@ async function fetchOrDeployGeneric(lens, provider, deploy, opts, merge) {
|
|
|
32
33
|
throw new Error('fetchOrDeployGeneric was called with merge set to true but the deployment lens does not have a merge function');
|
|
33
34
|
}
|
|
34
35
|
const stored = deployment.get();
|
|
35
|
-
const updated = await (0, deployment_1.resumeOrDeploy)(provider, stored, deploy, lens.type, opts, deployment, merge);
|
|
36
|
+
const updated = await (0, deployment_1.resumeOrDeploy)(provider, stored, deploy, lens.type, opts, deployment, merge, getRemoteDeployment);
|
|
36
37
|
if (updated !== stored) {
|
|
37
38
|
if (merge && deployment.merge) {
|
|
38
39
|
// only check primary addresses for clashes, since the address could already exist in an allAddresses field
|
|
@@ -48,7 +49,7 @@ async function fetchOrDeployGeneric(lens, provider, deploy, opts, merge) {
|
|
|
48
49
|
}
|
|
49
50
|
return updated;
|
|
50
51
|
});
|
|
51
|
-
await (0, deployment_1.waitAndValidateDeployment)(provider, deployment, lens.type, opts);
|
|
52
|
+
await (0, deployment_1.waitAndValidateDeployment)(provider, deployment, lens.type, opts, getRemoteDeployment);
|
|
52
53
|
return deployment;
|
|
53
54
|
}
|
|
54
55
|
catch (e) {
|
|
@@ -77,12 +78,37 @@ function deleteDeployment(deployment) {
|
|
|
77
78
|
deployment.set(undefined);
|
|
78
79
|
}
|
|
79
80
|
exports.deleteDeployment = deleteDeployment;
|
|
81
|
+
/**
|
|
82
|
+
* Fetches the deployment address from the manifest, or deploys it if not found and returns the address.
|
|
83
|
+
*
|
|
84
|
+
* @param version the contract version
|
|
85
|
+
* @param provider the Ethereum provider
|
|
86
|
+
* @param deploy the deploy function
|
|
87
|
+
* @param opts options containing the timeout and pollingInterval parameters. If undefined, assumes the timeout is not configurable and will not mention those parameters in the error message for TransactionMinedTimeout.
|
|
88
|
+
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
89
|
+
* @returns the deployment address
|
|
90
|
+
* @throws {InvalidDeployment} if the deployment is invalid
|
|
91
|
+
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
92
|
+
*/
|
|
80
93
|
async function fetchOrDeploy(version, provider, deploy, opts, merge) {
|
|
81
94
|
return (await fetchOrDeployGeneric(implLens(version.linkedWithoutMetadata), provider, deploy, opts, merge)).address;
|
|
82
95
|
}
|
|
83
96
|
exports.fetchOrDeploy = fetchOrDeploy;
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Fetches the deployment from the manifest, or deploys it if not found and returns the deployment.
|
|
99
|
+
*
|
|
100
|
+
* @param version the contract version
|
|
101
|
+
* @param provider the Ethereum provider
|
|
102
|
+
* @param deploy the deploy function
|
|
103
|
+
* @param opts options containing the timeout and pollingInterval parameters. If undefined, assumes the timeout is not configurable and will not mention those parameters in the error message for TransactionMinedTimeout.
|
|
104
|
+
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
105
|
+
* @param getRemoteDeployment a function to get the remote deployment status by id. If the deployment id is not found, returns undefined.
|
|
106
|
+
* @returns the deployment
|
|
107
|
+
* @throws {InvalidDeployment} if the deployment is invalid
|
|
108
|
+
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
109
|
+
*/
|
|
110
|
+
async function fetchOrDeployGetDeployment(version, provider, deploy, opts, merge, getRemoteDeployment) {
|
|
111
|
+
return fetchOrDeployGeneric(implLens(version.linkedWithoutMetadata), provider, deploy, opts, merge, getRemoteDeployment);
|
|
86
112
|
}
|
|
87
113
|
exports.fetchOrDeployGetDeployment = fetchOrDeployGetDeployment;
|
|
88
114
|
const implLens = (versionWithoutMetadata) => lens(`implementation ${versionWithoutMetadata}`, 'implementation', data => ({
|
|
@@ -133,9 +159,14 @@ async function checkForAddressClash(provider, data, updated, checkAllAddresses)
|
|
|
133
159
|
clash.set(undefined);
|
|
134
160
|
}
|
|
135
161
|
else {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
162
|
+
const existing = clash.get();
|
|
163
|
+
// it's a clash if there is no deployment id or if deployment ids don't match
|
|
164
|
+
if (existing !== undefined &&
|
|
165
|
+
(existing.remoteDeploymentId === undefined || existing.remoteDeploymentId !== updated.remoteDeploymentId)) {
|
|
166
|
+
throw new Error(`The following deployment clashes with an existing one at ${updated.address}\n\n` +
|
|
167
|
+
JSON.stringify(updated, null, 2) +
|
|
168
|
+
`\n\n`);
|
|
169
|
+
}
|
|
139
170
|
}
|
|
140
171
|
}
|
|
141
172
|
}
|