@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.
Files changed (53) hide show
  1. package/artifacts/build-info.json +21465 -0
  2. package/dist/deployment.d.ts +28 -4
  3. package/dist/deployment.d.ts.map +1 -1
  4. package/dist/deployment.js +106 -25
  5. package/dist/deployment.js.map +1 -1
  6. package/dist/deployment.test.js +116 -0
  7. package/dist/deployment.test.js.map +1 -1
  8. package/dist/impl-store.d.ts +27 -2
  9. package/dist/impl-store.d.ts.map +1 -1
  10. package/dist/impl-store.js +39 -8
  11. package/dist/impl-store.js.map +1 -1
  12. package/dist/impl-store.test.js +30 -0
  13. package/dist/impl-store.test.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/manifest.d.ts +3 -3
  19. package/dist/manifest.d.ts.map +1 -1
  20. package/dist/manifest.js +1 -1
  21. package/dist/manifest.js.map +1 -1
  22. package/dist/manifest.test.js +1 -0
  23. package/dist/manifest.test.js.map +1 -1
  24. package/dist/provider.d.ts.map +1 -1
  25. package/dist/provider.js +4 -0
  26. package/dist/provider.js.map +1 -1
  27. package/dist/usage-error.d.ts +6 -0
  28. package/dist/usage-error.d.ts.map +1 -1
  29. package/dist/usage-error.js +10 -1
  30. package/dist/usage-error.js.map +1 -1
  31. package/dist/validate/error.d.ts +3 -0
  32. package/dist/validate/error.d.ts.map +1 -1
  33. package/dist/validate/error.js +7 -1
  34. package/dist/validate/error.js.map +1 -1
  35. package/dist/validate/index.d.ts +1 -1
  36. package/dist/validate/index.d.ts.map +1 -1
  37. package/dist/validate/index.js +2 -1
  38. package/dist/validate/index.js.map +1 -1
  39. package/dist/validate/query.js +1 -1
  40. package/dist/validate/query.js.map +1 -1
  41. package/package.json +3 -2
  42. package/src/deployment.test.ts +182 -1
  43. package/src/deployment.ts +134 -26
  44. package/src/impl-store.test.ts +52 -1
  45. package/src/impl-store.ts +69 -11
  46. package/src/index.ts +1 -0
  47. package/src/manifest.test.ts +1 -0
  48. package/src/manifest.ts +11 -8
  49. package/src/provider.ts +4 -0
  50. package/src/usage-error.ts +13 -0
  51. package/src/validate/error.ts +6 -0
  52. package/src/validate/index.ts +1 -1
  53. package/src/validate/query.ts +2 -2
@@ -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
- export declare function waitAndValidateDeployment(provider: EthereumProvider, deployment: Deployment, type?: string, opts?: DeployOpts): Promise<void>;
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
@@ -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;;;;;;;;;;;;;;;;;;GAkBG;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,GACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAShB;AA6DD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED,qBAAa,uBAAwB,SAAQ,aAAa;IAC5C,QAAQ,CAAC,UAAU,EAAE,UAAU;gBAAtB,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,OAAO;CAY1F;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"}
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"}
@@ -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
- return cached;
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
- (0, debug_1.default)('resuming previous deployment', txHash);
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, stored, type, opts);
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(stored);
101
+ throw new InvalidDeployment(deployment);
84
102
  }
85
103
  }
86
104
  else {
87
- const existingBytecode = await (0, provider_1.getCode)(provider, stored.address);
105
+ const existingBytecode = await (0, provider_1.getCode)(provider, deployment.address);
88
106
  if ((0, provider_1.isEmpty)(existingBytecode)) {
89
- throw new InvalidDeployment(stored);
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
- if (txHash !== undefined) {
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
- (0, debug_1.default)('verifying code in target address', address);
127
- const startTime = Date.now();
128
- while (!(await (0, provider_1.hasCode)(provider, address))) {
129
- const elapsedTime = Date.now() - startTime;
130
- if (elapsedTime >= pollTimeout || txHash === undefined) {
131
- throw new InvalidDeployment(deployment);
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
- await sleep(pollInterval);
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 transaction ${deployment.txHash}`, () => 'Run the function again to continue waiting for the transaction confirmation.' +
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
@@ -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;AAmBpC;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,cAAc,CAClC,QAA0B,EAC1B,MAAqB,EACrB,MAAwB,EACxB,IAAa,EACb,IAAiB,EACjB,UAA6B,EAC7B,KAAe;IAEf,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACxF,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,EAAE;QACpC,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;QAClC,IAAA,eAAK,EAAC,sBAAsB,EAAE,mBAAmB,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvF,OAAO,UAAU,CAAC;KACnB;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAjBD,wCAiBC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAqB,EACrB,QAA0B,EAC1B,IAAa,EACb,IAAiB,EACjB,UAA6B,EAC7B,KAAe;IAEf,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,IAAI;YACF,MAAM,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SACrE;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,iBAAiB,IAAI,CAAC,MAAM,IAAA,+BAAoB,EAAC,QAAQ,CAAC,CAAC,EAAE;gBAC5E,IAAA,eAAK,EAAC,oDAAoD,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAClF,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC5B,IAAA,6BAAgB,EAAC,UAAU,CAAC,CAAC;iBAC9B;gBACD,OAAO,SAAS,CAAC;aAClB;iBAAM;gBACL,MAAM,CAAC,CAAC;aACT;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,MAAS,EACT,QAA0B,EAC1B,IAAa,EACb,IAAiB,EACjB,KAAe;IAEf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,kFAAkF;QAClF,kDAAkD;QAClD,IAAA,eAAK,EAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAA,+BAAoB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,IAAA,eAAK,EAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACT,2DAA2D;gBAC3D,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aACzD;SACF;aAAM;YACL,wEAAwE;YACxE,0DAA0D;YAC1D,oFAAoF;YACpF,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;SACrC;KACF;SAAM;QACL,MAAM,gBAAgB,GAAG,MAAM,IAAA,kBAAO,EAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,IAAA,kBAAO,EAAC,gBAAgB,CAAC,EAAE;YAC7B,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,QAA0B,EAC1B,UAAsB,EACtB,IAAa,EACb,IAAiB;IAEjB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAEvC,gEAAgE;IAChE,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,EAAE,eAAe,IAAI,GAAG,CAAC;IAElD,IAAA,eAAK,EAAC,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAExE,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,iDAAiD;QACjD,OAAO,IAAI,EAAE;YACX,IAAA,eAAK,EAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAqB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,IAAI,IAAA,8BAAmB,EAAC,OAAO,CAAC,EAAE;gBAC3C,IAAA,eAAK,EAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM;aACP;iBAAM,IAAI,OAAO,EAAE;gBAClB,IAAA,eAAK,EAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBACjC,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;aACzC;iBAAM;gBACL,IAAA,eAAK,EAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;aAC3B;YACD,IAAI,WAAW,IAAI,CAAC,EAAE;gBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC3C,IAAI,WAAW,IAAI,WAAW,EAAE;oBAC9B,wCAAwC;oBACxC,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC7D;aACF;SACF;KACF;IAED,IAAA,eAAK,EAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,CAAC,CAAC,MAAM,IAAA,kBAAO,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC3C,IAAI,WAAW,IAAI,WAAW,IAAI,MAAM,KAAK,SAAS,EAAE;YACtD,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;SACzC;QACD,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;KAC3B;IACD,IAAA,eAAK,EAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAnDD,8DAmDC;AAED,MAAa,uBAAwB,SAAQ,qBAAa;IACxD,YAAqB,UAAsB,EAAE,IAAa,EAAE,mBAA6B;QACvF,KAAK,CACH,yBAAyB,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,kCAC7C,UAAU,CAAC,OACb,qBAAqB,UAAU,CAAC,MAAM,EAAE,EACxC,GAAG,EAAE,CACH,8EAA8E;YAC9E,CAAC,mBAAmB;gBAClB,CAAC,CAAC,uGAAuG;gBACzG,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;QAViB,eAAU,GAAV,UAAU,CAAY;IAW3C,CAAC;CACF;AAbD,0DAaC;AAED,MAAa,iBAAkB,SAAQ,KAAK;IAG1C,YAAqB,UAAsB;QACzC,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAY;QAF3C,YAAO,GAAG,KAAK,CAAC;QAId,8DAA8D;QAC9D,IAAA,uCAAiB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,IAAA,uCAAiB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO;QACT,IAAI,GAAG,GAAG,0BAA0B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,GAAG,IAAI,0BAA0B,CAAC;SACnC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAjBD,8CAiBC"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -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
- export declare function fetchOrDeployGetDeployment<T extends ImplDeployment>(version: Version, provider: EthereumProvider, deploy: () => Promise<T>, opts?: DeployOpts, merge?: boolean): Promise<T | Deployment>;
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
  *
@@ -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,EAAE,UAAU,EAAgE,MAAM,cAAc,CAAC;AACxG,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;AA0ED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,QAErE;AAED,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,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,GACd,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAEzB;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"}
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"}
@@ -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
- async function fetchOrDeployGetDeployment(version, provider, deploy, opts, merge) {
85
- return fetchOrDeployGeneric(implLens(version.linkedWithoutMetadata), provider, deploy, opts, merge);
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
- throw new Error(`The following deployment clashes with an existing one at ${updated.address}\n\n` +
137
- JSON.stringify(updated, null, 2) +
138
- `\n\n`);
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
  }