@openzeppelin/upgrades-core 1.12.0 → 1.13.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/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/dist/add-proxy-to-manifest.d.ts +3 -0
- package/dist/add-proxy-to-manifest.d.ts.map +1 -0
- package/dist/add-proxy-to-manifest.js +15 -0
- package/dist/add-proxy-to-manifest.js.map +1 -0
- package/dist/deployment.d.ts +21 -1
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +65 -15
- package/dist/deployment.js.map +1 -1
- package/dist/eip-1967-type.d.ts +1 -0
- package/dist/eip-1967-type.d.ts.map +1 -1
- package/dist/eip-1967-type.js +6 -1
- package/dist/eip-1967-type.js.map +1 -1
- package/dist/eip-1967.d.ts +1 -0
- package/dist/eip-1967.d.ts.map +1 -1
- package/dist/eip-1967.js +3 -2
- package/dist/eip-1967.js.map +1 -1
- package/dist/impl-address.js +1 -1
- package/dist/impl-address.js.map +1 -1
- package/dist/impl-store.d.ts +22 -2
- package/dist/impl-store.d.ts.map +1 -1
- package/dist/impl-store.js +59 -15
- package/dist/impl-store.js.map +1 -1
- package/dist/impl-store.test.js +24 -0
- package/dist/impl-store.test.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -4
- package/dist/index.js.map +1 -1
- package/dist/manifest-storage-layout.d.ts.map +1 -1
- package/dist/manifest-storage-layout.js +3 -2
- package/dist/manifest-storage-layout.js.map +1 -1
- package/dist/manifest-storage-layout.test.js.map +1 -1
- package/dist/manifest.d.ts +2 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +6 -4
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.test.js +32 -0
- package/dist/manifest.test.js.map +1 -1
- package/dist/provider.d.ts +1 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -2
- package/dist/provider.js.map +1 -1
- package/dist/proxy-kind.d.ts +9 -0
- package/dist/proxy-kind.d.ts.map +1 -1
- package/dist/proxy-kind.js +27 -1
- package/dist/proxy-kind.js.map +1 -1
- package/dist/scripts/migrate-oz-cli-project.test.js +1 -1
- package/dist/scripts/migrate-oz-cli-project.test.js.map +1 -1
- package/dist/solc-api.d.ts +5 -0
- package/dist/solc-api.d.ts.map +1 -1
- package/dist/standalone.test.js.map +1 -1
- package/dist/storage/extract.d.ts +1 -1
- package/dist/storage/extract.d.ts.map +1 -1
- package/dist/storage/extract.js +76 -38
- package/dist/storage/extract.js.map +1 -1
- package/dist/storage/layout.d.ts +4 -0
- package/dist/storage/layout.d.ts.map +1 -1
- package/dist/storage/layout.js.map +1 -1
- package/dist/storage/report.test.js.map +1 -1
- package/dist/storage.test.js +1 -1
- package/dist/storage.test.js.map +1 -1
- package/dist/usage-error.d.ts +3 -0
- package/dist/usage-error.d.ts.map +1 -1
- package/dist/usage-error.js +7 -1
- package/dist/usage-error.js.map +1 -1
- package/dist/validate/query.d.ts.map +1 -1
- package/dist/validate/query.js +10 -5
- package/dist/validate/query.js.map +1 -1
- package/dist/validate/run.d.ts.map +1 -1
- package/dist/validate/run.js +1 -1
- package/dist/validate/run.js.map +1 -1
- package/dist/validate.test.js.map +1 -1
- package/package.json +4 -4
- package/src/add-proxy-to-manifest.ts +12 -0
- package/src/deployment.ts +81 -14
- package/src/eip-1967-type.ts +7 -0
- package/src/eip-1967.ts +4 -3
- package/src/impl-address.ts +1 -1
- package/src/impl-store.test.ts +33 -1
- package/src/impl-store.ts +69 -12
- package/src/index.ts +22 -4
- package/src/manifest-storage-layout.test.ts +3 -2
- package/src/manifest-storage-layout.ts +8 -3
- package/src/manifest.test.ts +34 -1
- package/src/manifest.ts +9 -4
- package/src/provider.ts +5 -1
- package/src/proxy-kind.ts +24 -1
- package/src/scripts/migrate-oz-cli-project.test.ts +1 -1
- package/src/scripts/migrate-oz-cli-project.test.ts.snap +0 -0
- package/src/solc-api.ts +5 -0
- package/src/standalone.test.ts +2 -2
- package/src/storage/extract.ts +98 -52
- package/src/storage/layout.ts +4 -0
- package/src/storage/report.test.ts +2 -2
- package/src/storage/report.test.ts.snap +0 -0
- package/src/storage.test.ts +3 -3
- package/src/storage.test.ts.snap +0 -0
- package/src/usage-error.ts +9 -0
- package/src/utils/parse-type-id.test.ts.md +106 -106
- package/src/utils/parse-type-id.test.ts.snap +0 -0
- package/src/validate/query.ts +9 -5
- package/src/validate/run.ts +6 -1
- package/src/validate.test.ts +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-proxy-to-manifest.d.ts","sourceRoot":"","sources":["../src/add-proxy-to-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AAE1D,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,iBAS1G"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addProxyToManifest = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
async function addProxyToManifest(kind, address, manifest) {
|
|
6
|
+
await manifest.addProxy({ kind, address });
|
|
7
|
+
if (kind !== 'transparent' && (await manifest.getAdmin())) {
|
|
8
|
+
(0, _1.logWarning)(`A proxy admin was previously deployed on this network`, [
|
|
9
|
+
`This is not natively used with the current kind of proxy ('${kind}').`,
|
|
10
|
+
`Changes to the admin will have no effect on this new proxy.`,
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.addProxyToManifest = addProxyToManifest;
|
|
15
|
+
//# sourceMappingURL=add-proxy-to-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-proxy-to-manifest.js","sourceRoot":"","sources":["../src/add-proxy-to-manifest.ts"],"names":[],"mappings":";;;AAAA,wBAA0D;AAEnD,KAAK,UAAU,kBAAkB,CAAC,IAA6B,EAAE,OAAe,EAAE,QAAkB;IACzG,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3C,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;QACzD,IAAA,aAAU,EAAC,uDAAuD,EAAE;YAClE,8DAA8D,IAAI,KAAK;YACvE,6DAA6D;SAC9D,CAAC,CAAC;KACJ;AACH,CAAC;AATD,gDASC"}
|
package/dist/deployment.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EthereumProvider } from './provider';
|
|
2
2
|
import { UpgradesError } from './error';
|
|
3
|
+
import { ManifestField } from './impl-store';
|
|
3
4
|
export interface Deployment {
|
|
4
5
|
address: string;
|
|
5
6
|
txHash?: string;
|
|
@@ -14,7 +15,26 @@ export interface DeployOpts {
|
|
|
14
15
|
*/
|
|
15
16
|
pollingInterval?: number;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Resumes a deployment or deploys a new one, based on whether the cached deployment should continue to be used and is valid
|
|
20
|
+
* (has a valid txHash for the current network or has runtime bytecode).
|
|
21
|
+
* If a cached deployment is not valid, deletes it if using a development network, otherwise throws an InvalidDeployment error.
|
|
22
|
+
*
|
|
23
|
+
* @param provider the Ethereum provider
|
|
24
|
+
* @param cached the cached deployment
|
|
25
|
+
* @param deploy the function to deploy a new deployment if needed
|
|
26
|
+
* @param type the manifest lens type. If merge is true, used for the timeout message if a previous deployment is not
|
|
27
|
+
* confirmed within the timeout period. Otherwise not used.
|
|
28
|
+
* @param opts polling timeout and interval options. If merge is true, used to check a previous deployment for confirmation.
|
|
29
|
+
* Otherwise not used.
|
|
30
|
+
* @param deployment the manifest field for this deployment. Optional for backward compatibility.
|
|
31
|
+
* If not provided, invalid deployments will not be deleted in a dev network (which is not a problem if merge is false,
|
|
32
|
+
* since it will be overwritten with the new deployment).
|
|
33
|
+
* @param merge whether the cached deployment is intended to be merged with the new deployment. Defaults to false.
|
|
34
|
+
* @returns the cached deployment if it should be used, otherwise the new deployment from the deploy function
|
|
35
|
+
* @throws {InvalidDeployment} if the cached deployment is invalid and we are not on a dev network
|
|
36
|
+
*/
|
|
37
|
+
export declare function resumeOrDeploy<T extends Deployment>(provider: EthereumProvider, cached: T | undefined, deploy: () => Promise<T>, type?: string, opts?: DeployOpts, deployment?: ManifestField<T>, merge?: boolean): Promise<T>;
|
|
18
38
|
export declare function waitAndValidateDeployment(provider: EthereumProvider, deployment: Deployment, type?: string, opts?: DeployOpts): Promise<void>;
|
|
19
39
|
export declare class TransactionMinedTimeout extends UpgradesError {
|
|
20
40
|
readonly deployment: Deployment;
|
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,
|
|
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,EACvD,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,CAAC,CASZ;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"}
|
package/dist/deployment.js
CHANGED
|
@@ -9,37 +9,87 @@ const debug_1 = __importDefault(require("./utils/debug"));
|
|
|
9
9
|
const make_non_enumerable_1 = require("./utils/make-non-enumerable");
|
|
10
10
|
const provider_1 = require("./provider");
|
|
11
11
|
const error_1 = require("./error");
|
|
12
|
+
const impl_store_1 = require("./impl-store");
|
|
12
13
|
const sleep = (0, util_1.promisify)(setTimeout);
|
|
13
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Resumes a deployment or deploys a new one, based on whether the cached deployment should continue to be used and is valid
|
|
16
|
+
* (has a valid txHash for the current network or has runtime bytecode).
|
|
17
|
+
* If a cached deployment is not valid, deletes it if using a development network, otherwise throws an InvalidDeployment error.
|
|
18
|
+
*
|
|
19
|
+
* @param provider the Ethereum provider
|
|
20
|
+
* @param cached the cached deployment
|
|
21
|
+
* @param deploy the function to deploy a new deployment if needed
|
|
22
|
+
* @param type the manifest lens type. If merge is true, used for the timeout message if a previous deployment is not
|
|
23
|
+
* confirmed within the timeout period. Otherwise not used.
|
|
24
|
+
* @param opts polling timeout and interval options. If merge is true, used to check a previous deployment for confirmation.
|
|
25
|
+
* Otherwise not used.
|
|
26
|
+
* @param deployment the manifest field for this deployment. Optional for backward compatibility.
|
|
27
|
+
* If not provided, invalid deployments will not be deleted in a dev network (which is not a problem if merge is false,
|
|
28
|
+
* since it will be overwritten with the new deployment).
|
|
29
|
+
* @param merge whether the cached deployment is intended to be merged with the new deployment. Defaults to false.
|
|
30
|
+
* @returns the cached deployment if it should be used, otherwise the new deployment from the deploy function
|
|
31
|
+
* @throws {InvalidDeployment} if the cached deployment is invalid and we are not on a dev network
|
|
32
|
+
*/
|
|
33
|
+
async function resumeOrDeploy(provider, cached, deploy, type, opts, deployment, merge) {
|
|
34
|
+
const validated = await validateCached(cached, provider, type, opts, deployment, merge);
|
|
35
|
+
if (validated === undefined || merge) {
|
|
36
|
+
const deployment = await deploy();
|
|
37
|
+
(0, debug_1.default)('initiated deployment', 'transaction hash:', deployment.txHash, 'merge:', merge);
|
|
38
|
+
return deployment;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return validated;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.resumeOrDeploy = resumeOrDeploy;
|
|
45
|
+
async function validateCached(cached, provider, type, opts, deployment, merge) {
|
|
14
46
|
if (cached !== undefined) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
47
|
+
try {
|
|
48
|
+
await validateStoredDeployment(cached, provider, type, opts, merge);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
if (e instanceof InvalidDeployment && (await (0, provider_1.isDevelopmentNetwork)(provider))) {
|
|
52
|
+
(0, debug_1.default)('ignoring invalid deployment in development network', e.deployment.address);
|
|
53
|
+
if (deployment !== undefined) {
|
|
54
|
+
(0, impl_store_1.deleteDeployment)(deployment);
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
throw e;
|
|
60
|
+
}
|
|
20
61
|
}
|
|
62
|
+
}
|
|
63
|
+
return cached;
|
|
64
|
+
}
|
|
65
|
+
async function validateStoredDeployment(stored, provider, type, opts, merge) {
|
|
66
|
+
const { txHash } = stored;
|
|
67
|
+
if (txHash !== undefined) {
|
|
21
68
|
// If there is a deployment with txHash stored, we look its transaction up. If the
|
|
22
69
|
// transaction is found, the deployment is reused.
|
|
23
70
|
(0, debug_1.default)('found previous deployment', txHash);
|
|
24
71
|
const tx = await (0, provider_1.getTransactionByHash)(provider, txHash);
|
|
25
72
|
if (tx !== null) {
|
|
26
73
|
(0, debug_1.default)('resuming previous deployment', txHash);
|
|
27
|
-
|
|
74
|
+
if (merge) {
|
|
75
|
+
// If merging, wait for the existing deployment to be mined
|
|
76
|
+
waitAndValidateDeployment(provider, stored, type, opts);
|
|
77
|
+
}
|
|
28
78
|
}
|
|
29
|
-
else
|
|
79
|
+
else {
|
|
30
80
|
// If the transaction is not found we throw an error, except if we're in
|
|
31
81
|
// a development network then we simply silently redeploy.
|
|
32
|
-
|
|
82
|
+
// This error should be caught by the caller to determine if we're in a dev network.
|
|
83
|
+
throw new InvalidDeployment(stored);
|
|
33
84
|
}
|
|
34
|
-
|
|
35
|
-
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const existingBytecode = await (0, provider_1.getCode)(provider, stored.address);
|
|
88
|
+
if ((0, provider_1.isEmpty)(existingBytecode)) {
|
|
89
|
+
throw new InvalidDeployment(stored);
|
|
36
90
|
}
|
|
37
91
|
}
|
|
38
|
-
const deployment = await deploy();
|
|
39
|
-
(0, debug_1.default)('initiated deployment', deployment.txHash);
|
|
40
|
-
return deployment;
|
|
41
92
|
}
|
|
42
|
-
exports.resumeOrDeploy = resumeOrDeploy;
|
|
43
93
|
async function waitAndValidateDeployment(provider, deployment, type, opts) {
|
|
44
94
|
var _a, _b;
|
|
45
95
|
const { txHash, address } = deployment;
|
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,
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
|
package/dist/eip-1967-type.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EthereumProvider } from './provider';
|
|
2
2
|
export declare function isTransparentOrUUPSProxy(provider: EthereumProvider, address: string): Promise<boolean>;
|
|
3
|
+
export declare function isTransparentProxy(provider: EthereumProvider, address: string): Promise<boolean>;
|
|
3
4
|
export declare function isBeaconProxy(provider: EthereumProvider, address: string): Promise<boolean>;
|
|
4
5
|
//# sourceMappingURL=eip-1967-type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip-1967-type.d.ts","sourceRoot":"","sources":["../src/eip-1967-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eip-1967-type.d.ts","sourceRoot":"","sources":["../src/eip-1967-type.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY5G;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtG;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjG"}
|
package/dist/eip-1967-type.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBeaconProxy = exports.isTransparentOrUUPSProxy = void 0;
|
|
3
|
+
exports.isBeaconProxy = exports.isTransparentProxy = exports.isTransparentOrUUPSProxy = void 0;
|
|
4
4
|
const eip_1967_1 = require("./eip-1967");
|
|
5
5
|
async function isTransparentOrUUPSProxy(provider, address) {
|
|
6
6
|
try {
|
|
@@ -18,6 +18,11 @@ async function isTransparentOrUUPSProxy(provider, address) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.isTransparentOrUUPSProxy = isTransparentOrUUPSProxy;
|
|
21
|
+
async function isTransparentProxy(provider, address) {
|
|
22
|
+
const adminAddress = await (0, eip_1967_1.getAdminAddress)(provider, address);
|
|
23
|
+
return !(0, eip_1967_1.isEmptySlot)(adminAddress);
|
|
24
|
+
}
|
|
25
|
+
exports.isTransparentProxy = isTransparentProxy;
|
|
21
26
|
async function isBeaconProxy(provider, address) {
|
|
22
27
|
try {
|
|
23
28
|
await (0, eip_1967_1.getBeaconAddress)(provider, address);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip-1967-type.js","sourceRoot":"","sources":["../src/eip-1967-type.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"eip-1967-type.js","sourceRoot":"","sources":["../src/eip-1967-type.ts"],"names":[],"mappings":";;;AAAA,yCAOoB;AAGb,KAAK,UAAU,wBAAwB,CAAC,QAA0B,EAAE,OAAe;IACxF,IAAI;QACF,MAAM,IAAA,mCAAwB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,2FAA2F;QAC3F,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,YAAY,wCAA6B,EAAE;YAC9C,OAAO,KAAK,CAAC;SACd;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAZD,4DAYC;AAEM,KAAK,UAAU,kBAAkB,CAAC,QAA0B,EAAE,OAAe;IAClF,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAe,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAA,sBAAW,EAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAHD,gDAGC;AAEM,KAAK,UAAU,aAAa,CAAC,QAA0B,EAAE,OAAe;IAC7E,IAAI;QACF,MAAM,IAAA,2BAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,iFAAiF;QACjF,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,YAAY,gCAAqB,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAZD,sCAYC"}
|
package/dist/eip-1967.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export declare function getImplementationAddress(provider: EthereumProvider, add
|
|
|
9
9
|
export declare function getBeaconAddress(provider: EthereumProvider, address: string): Promise<string>;
|
|
10
10
|
export declare function toFallbackEip1967Hash(label: string): string;
|
|
11
11
|
export declare function toEip1967Hash(label: string): string;
|
|
12
|
+
export declare function isEmptySlot(storage: string): boolean;
|
|
12
13
|
//# sourceMappingURL=eip-1967.d.ts.map
|
package/dist/eip-1967.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip-1967.d.ts","sourceRoot":"","sources":["../src/eip-1967.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAG5D,qBAAa,6BAA8B,SAAQ,aAAa;CAAG;
|
|
1
|
+
{"version":3,"file":"eip-1967.d.ts","sourceRoot":"","sources":["../src/eip-1967.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAG5D,qBAAa,6BAA8B,SAAQ,aAAa;CAAG;AACnE,qBAAa,qBAAsB,SAAQ,aAAa;CAAG;AAE3D,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASlG;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3G;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQnG;AAeD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAInD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpD"}
|
package/dist/eip-1967.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.toEip1967Hash = exports.toFallbackEip1967Hash = exports.getBeaconAddress = exports.getImplementationAddress = exports.getAdminAddress = exports.EIP1967BeaconNotFound = exports.EIP1967ImplementationNotFound = void 0;
|
|
6
|
+
exports.isEmptySlot = exports.toEip1967Hash = exports.toFallbackEip1967Hash = exports.getBeaconAddress = exports.getImplementationAddress = exports.getAdminAddress = exports.EIP1967BeaconNotFound = exports.EIP1967ImplementationNotFound = void 0;
|
|
7
7
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
8
8
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
9
9
|
const error_1 = require("./error");
|
|
@@ -23,7 +23,7 @@ exports.getAdminAddress = getAdminAddress;
|
|
|
23
23
|
async function getImplementationAddress(provider, address) {
|
|
24
24
|
const storage = await getStorageFallback(provider, address, toEip1967Hash('eip1967.proxy.implementation'), toFallbackEip1967Hash('org.zeppelinos.proxy.implementation'));
|
|
25
25
|
if (isEmptySlot(storage)) {
|
|
26
|
-
throw new EIP1967ImplementationNotFound(`Contract at ${address} doesn't look like an
|
|
26
|
+
throw new EIP1967ImplementationNotFound(`Contract at ${address} doesn't look like an ERC 1967 proxy with a logic contract address`);
|
|
27
27
|
}
|
|
28
28
|
return parseAddressFromStorage(storage);
|
|
29
29
|
}
|
|
@@ -60,6 +60,7 @@ function isEmptySlot(storage) {
|
|
|
60
60
|
storage = storage.replace(/^0x/, '');
|
|
61
61
|
return new bn_js_1.default(storage, 'hex').isZero();
|
|
62
62
|
}
|
|
63
|
+
exports.isEmptySlot = isEmptySlot;
|
|
63
64
|
function parseAddressFromStorage(storage) {
|
|
64
65
|
const address = (0, address_1.parseAddress)(storage);
|
|
65
66
|
if (address === undefined) {
|
package/dist/eip-1967.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip-1967.js","sourceRoot":"","sources":["../src/eip-1967.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAuB;AACvB,qDAA4C;AAC5C,mCAAwC;AACxC,yCAA4D;AAC5D,6CAA+C;AAE/C,MAAa,6BAA8B,SAAQ,qBAAa;CAAG;AAAnE,sEAAmE;
|
|
1
|
+
{"version":3,"file":"eip-1967.js","sourceRoot":"","sources":["../src/eip-1967.ts"],"names":[],"mappings":"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"}
|
package/dist/impl-address.js
CHANGED
|
@@ -24,7 +24,7 @@ async function getImplementationAddressFromBeacon(provider, beaconAddress) {
|
|
|
24
24
|
catch (e) {
|
|
25
25
|
if (!(e.message.includes('function selector was not recognized') ||
|
|
26
26
|
e.message.includes('invalid opcode') ||
|
|
27
|
-
e.message.includes('
|
|
27
|
+
e.message.includes('revert'))) {
|
|
28
28
|
throw e;
|
|
29
29
|
} // otherwise fall through with no result
|
|
30
30
|
}
|
package/dist/impl-address.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-address.js","sourceRoot":"","sources":["../src/impl-address.ts"],"names":[],"mappings":";;;AAAA,qDAA4C;AAC5C,wBAOW;AAGX,6CAA+C;AAE/C,MAAa,aAAc,SAAQ,gBAAa;CAAG;AAAnD,sCAAmD;AAEnD;;;;;;GAMG;AACI,KAAK,UAAU,kCAAkC,CACtD,QAA0B,EAC1B,aAAqB;IAErB,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAA,2BAAS,EAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,IAAI,MAA0B,CAAC;IAC/B,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,OAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAChF,MAAM,GAAG,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAC;KACpC;IAAC,OAAO,CAAM,EAAE;QACf,IACE,CAAC,CACC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACpC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"impl-address.js","sourceRoot":"","sources":["../src/impl-address.ts"],"names":[],"mappings":";;;AAAA,qDAA4C;AAC5C,wBAOW;AAGX,6CAA+C;AAE/C,MAAa,aAAc,SAAQ,gBAAa;CAAG;AAAnD,sCAAmD;AAEnD;;;;;;GAMG;AACI,KAAK,UAAU,kCAAkC,CACtD,QAA0B,EAC1B,aAAqB;IAErB,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAA,2BAAS,EAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,IAAI,MAA0B,CAAC;IAC/B,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,OAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAChF,MAAM,GAAG,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAC;KACpC;IAAC,OAAO,CAAM,EAAE;QACf,IACE,CAAC,CACC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACpC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC7B,EACD;YACA,MAAM,CAAC,CAAC;SACT,CAAC,wCAAwC;KAC3C;IACD,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,aAAa,CAAC,eAAe,aAAa,6BAA6B,CAAC,CAAC;KACpF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,gFAwBC;AAED;;;;GAIG;AACI,KAAK,UAAU,iCAAiC,CACrD,QAA0B,EAC1B,YAAoB;IAEpB,IAAI;QACF,OAAO,MAAM,IAAA,2BAAwB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC/D;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,YAAY,gCAA6B,EAAE;YAC9C,IAAI;gBACF,MAAM,aAAa,GAAG,MAAM,IAAA,mBAAgB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACrE,OAAO,MAAM,kCAAkC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aAC1E;YAAC,OAAO,CAAM,EAAE;gBACf,IAAI,CAAC,YAAY,wBAAqB,EAAE;oBACtC,OAAO,SAAS,CAAC;iBAClB;qBAAM;oBACL,MAAM,CAAC,CAAC;iBACT;aACF;SACF;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAtBD,8EAsBC"}
|
package/dist/impl-store.d.ts
CHANGED
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { ImplDeployment } from './manifest';
|
|
2
2
|
import { EthereumProvider } from './provider';
|
|
3
3
|
import { Deployment } from './deployment';
|
|
4
|
-
import
|
|
4
|
+
import { Version } from './version';
|
|
5
5
|
import { DeployOpts } from '.';
|
|
6
|
-
export
|
|
6
|
+
export interface ManifestField<T> {
|
|
7
|
+
get(): T | undefined;
|
|
8
|
+
set(value: T | undefined): void;
|
|
9
|
+
merge?(value: T | undefined): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Deletes the deployment by setting it to undefined.
|
|
13
|
+
* Should only be used during a manifest run.
|
|
14
|
+
*/
|
|
15
|
+
export declare function deleteDeployment(deployment: ManifestField<Deployment>): void;
|
|
16
|
+
export declare function fetchOrDeploy(version: Version, provider: EthereumProvider, deploy: () => Promise<ImplDeployment>, opts?: DeployOpts, merge?: boolean): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Merge the addresses in the deployments and returns them.
|
|
19
|
+
*
|
|
20
|
+
* @param existing existing deployment
|
|
21
|
+
* @param value deployment to add
|
|
22
|
+
*/
|
|
23
|
+
export declare function mergeAddresses(existing: ImplDeployment, value: ImplDeployment): {
|
|
24
|
+
address: string;
|
|
25
|
+
allAddresses: string[];
|
|
26
|
+
};
|
|
7
27
|
export declare function fetchOrDeployAdmin(provider: EthereumProvider, deploy: () => Promise<Deployment>, opts?: DeployOpts): Promise<string>;
|
|
8
28
|
//# sourceMappingURL=impl-store.d.ts.map
|
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,EAAE,UAAU,EAAgE,MAAM,cAAc,CAAC;AACxG,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,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;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
|
@@ -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.fetchOrDeployAdmin = exports.fetchOrDeploy = void 0;
|
|
6
|
+
exports.fetchOrDeployAdmin = exports.mergeAddresses = exports.fetchOrDeploy = exports.deleteDeployment = void 0;
|
|
7
7
|
const debug_1 = __importDefault(require("./utils/debug"));
|
|
8
8
|
const manifest_1 = require("./manifest");
|
|
9
9
|
const provider_1 = require("./provider");
|
|
@@ -16,25 +16,34 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
16
16
|
* @param provider the Ethereum provider
|
|
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
|
+
* @param merge if true, adds a deployment to existing deployment by merging their addresses. Defaults to false.
|
|
19
20
|
* @returns the deployment address
|
|
20
21
|
* @throws {InvalidDeployment} if the deployment is invalid
|
|
21
22
|
* @throws {TransactionMinedTimeout} if the transaction was not confirmed within the timeout period
|
|
22
23
|
*/
|
|
23
|
-
async function fetchOrDeployGeneric(lens, provider, deploy, opts) {
|
|
24
|
+
async function fetchOrDeployGeneric(lens, provider, deploy, opts, merge) {
|
|
24
25
|
const manifest = await manifest_1.Manifest.forNetwork(provider);
|
|
25
26
|
try {
|
|
26
27
|
const deployment = await manifest.lockedRun(async () => {
|
|
27
28
|
(0, debug_1.default)('fetching deployment of', lens.description);
|
|
28
29
|
const data = await manifest.read();
|
|
29
30
|
const deployment = lens(data);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
(0, debug_1.default)('deployment of', lens.description, 'not found');
|
|
31
|
+
if (merge && !deployment.merge) {
|
|
32
|
+
throw new Error('fetchOrDeployGeneric was called with merge set to true but the deployment lens does not have a merge function');
|
|
33
33
|
}
|
|
34
|
-
const
|
|
34
|
+
const stored = deployment.get();
|
|
35
|
+
const updated = await (0, deployment_1.resumeOrDeploy)(provider, stored, deploy, lens.type, opts, deployment, merge);
|
|
35
36
|
if (updated !== stored) {
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
if (merge && deployment.merge) {
|
|
38
|
+
// only check primary addresses for clashes, since the address could already exist in an allAddresses field
|
|
39
|
+
// but the above updated and stored objects are different instances representing the same entry
|
|
40
|
+
await checkForAddressClash(provider, data, updated, false);
|
|
41
|
+
deployment.merge(updated);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
await checkForAddressClash(provider, data, updated, true);
|
|
45
|
+
deployment.set(updated);
|
|
46
|
+
}
|
|
38
47
|
await manifest.write(data);
|
|
39
48
|
}
|
|
40
49
|
return updated;
|
|
@@ -60,14 +69,48 @@ async function fetchOrDeployGeneric(lens, provider, deploy, opts) {
|
|
|
60
69
|
throw e;
|
|
61
70
|
}
|
|
62
71
|
}
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Deletes the deployment by setting it to undefined.
|
|
74
|
+
* Should only be used during a manifest run.
|
|
75
|
+
*/
|
|
76
|
+
function deleteDeployment(deployment) {
|
|
77
|
+
deployment.set(undefined);
|
|
78
|
+
}
|
|
79
|
+
exports.deleteDeployment = deleteDeployment;
|
|
80
|
+
async function fetchOrDeploy(version, provider, deploy, opts, merge) {
|
|
81
|
+
return fetchOrDeployGeneric(implLens(version.linkedWithoutMetadata), provider, deploy, opts, merge);
|
|
65
82
|
}
|
|
66
83
|
exports.fetchOrDeploy = fetchOrDeploy;
|
|
67
84
|
const implLens = (versionWithoutMetadata) => lens(`implementation ${versionWithoutMetadata}`, 'implementation', data => ({
|
|
68
85
|
get: () => data.impls[versionWithoutMetadata],
|
|
69
86
|
set: (value) => (data.impls[versionWithoutMetadata] = value),
|
|
87
|
+
merge: (value) => {
|
|
88
|
+
const existing = data.impls[versionWithoutMetadata];
|
|
89
|
+
if (existing !== undefined && value !== undefined) {
|
|
90
|
+
const { address, allAddresses } = mergeAddresses(existing, value);
|
|
91
|
+
data.impls[versionWithoutMetadata] = { ...existing, address, allAddresses };
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
data.impls[versionWithoutMetadata] = value;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
70
97
|
}));
|
|
98
|
+
/**
|
|
99
|
+
* Merge the addresses in the deployments and returns them.
|
|
100
|
+
*
|
|
101
|
+
* @param existing existing deployment
|
|
102
|
+
* @param value deployment to add
|
|
103
|
+
*/
|
|
104
|
+
function mergeAddresses(existing, value) {
|
|
105
|
+
var _a, _b;
|
|
106
|
+
const merged = new Set();
|
|
107
|
+
merged.add(existing.address);
|
|
108
|
+
merged.add(value.address);
|
|
109
|
+
(_a = existing.allAddresses) === null || _a === void 0 ? void 0 : _a.forEach(item => merged.add(item));
|
|
110
|
+
(_b = value.allAddresses) === null || _b === void 0 ? void 0 : _b.forEach(item => merged.add(item));
|
|
111
|
+
return { address: existing.address, allAddresses: Array.from(merged) };
|
|
112
|
+
}
|
|
113
|
+
exports.mergeAddresses = mergeAddresses;
|
|
71
114
|
async function fetchOrDeployAdmin(provider, deploy, opts) {
|
|
72
115
|
return fetchOrDeployGeneric(adminLens, provider, deploy, opts);
|
|
73
116
|
}
|
|
@@ -79,8 +122,8 @@ const adminLens = lens('proxy admin', 'proxy admin', data => ({
|
|
|
79
122
|
function lens(description, type, fn) {
|
|
80
123
|
return Object.assign(fn, { description, type });
|
|
81
124
|
}
|
|
82
|
-
async function checkForAddressClash(provider, data, updated) {
|
|
83
|
-
const clash = lookupDeployment(data, updated.address);
|
|
125
|
+
async function checkForAddressClash(provider, data, updated, checkAllAddresses) {
|
|
126
|
+
const clash = lookupDeployment(data, updated.address, checkAllAddresses);
|
|
84
127
|
if (clash !== undefined) {
|
|
85
128
|
if (await (0, provider_1.isDevelopmentNetwork)(provider)) {
|
|
86
129
|
(0, debug_1.default)('deleting a previous deployment at address', updated.address);
|
|
@@ -93,13 +136,14 @@ async function checkForAddressClash(provider, data, updated) {
|
|
|
93
136
|
}
|
|
94
137
|
}
|
|
95
138
|
}
|
|
96
|
-
function lookupDeployment(data, address) {
|
|
97
|
-
var _a, _b;
|
|
139
|
+
function lookupDeployment(data, address, checkAllAddresses) {
|
|
140
|
+
var _a, _b, _c, _d;
|
|
98
141
|
if (((_a = data.admin) === null || _a === void 0 ? void 0 : _a.address) === address) {
|
|
99
142
|
return adminLens(data);
|
|
100
143
|
}
|
|
101
144
|
for (const versionWithoutMetadata in data.impls) {
|
|
102
|
-
if (((_b = data.impls[versionWithoutMetadata]) === null || _b === void 0 ? void 0 : _b.address) === address
|
|
145
|
+
if (((_b = data.impls[versionWithoutMetadata]) === null || _b === void 0 ? void 0 : _b.address) === address ||
|
|
146
|
+
(checkAllAddresses && ((_d = (_c = data.impls[versionWithoutMetadata]) === null || _c === void 0 ? void 0 : _c.allAddresses) === null || _d === void 0 ? void 0 : _d.includes(address)))) {
|
|
103
147
|
return implLens(versionWithoutMetadata)(data);
|
|
104
148
|
}
|
|
105
149
|
}
|
package/dist/impl-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-store.js","sourceRoot":"","sources":["../src/impl-store.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAClC,yCAAoE;AACpE,yCAAoE;AACpE,6CAAwG;AAExG,oDAA4B;
|
|
1
|
+
{"version":3,"file":"impl-store.js","sourceRoot":"","sources":["../src/impl-store.ts"],"names":[],"mappings":"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"}
|
package/dist/impl-store.test.js
CHANGED
|
@@ -52,4 +52,28 @@ const version2 = (0, version_1.getVersion)('02', '02');
|
|
|
52
52
|
// the failed deployment has been cleaned up
|
|
53
53
|
await (0, impl_store_1.fetchOrDeploy)(version1, provider2, provider2.deploy);
|
|
54
54
|
});
|
|
55
|
+
(0, ava_1.default)('merge addresses', async (t) => {
|
|
56
|
+
const depl1 = { address: '0x1' };
|
|
57
|
+
const depl2 = { address: '0x2' };
|
|
58
|
+
const { address, allAddresses } = await (0, impl_store_1.mergeAddresses)(depl1, depl2);
|
|
59
|
+
t.is(address, '0x1');
|
|
60
|
+
t.true(unorderedEqual(allAddresses, ['0x1', '0x2']), allAddresses.toString());
|
|
61
|
+
});
|
|
62
|
+
(0, ava_1.default)('merge multiple existing addresses', async (t) => {
|
|
63
|
+
const depl1 = { address: '0x1', allAddresses: ['0x1a', '0x1b'] };
|
|
64
|
+
const depl2 = { address: '0x2' };
|
|
65
|
+
const { address, allAddresses } = await (0, impl_store_1.mergeAddresses)(depl1, depl2);
|
|
66
|
+
t.is(address, '0x1');
|
|
67
|
+
t.true(unorderedEqual(allAddresses, ['0x1', '0x1a', '0x1b', '0x2']), allAddresses.toString());
|
|
68
|
+
});
|
|
69
|
+
(0, ava_1.default)('merge all addresses', async (t) => {
|
|
70
|
+
const depl1 = { address: '0x1', allAddresses: ['0x1a', '0x1b'] };
|
|
71
|
+
const depl2 = { address: '0x2', allAddresses: ['0x2a', '0x2b'] };
|
|
72
|
+
const { address, allAddresses } = await (0, impl_store_1.mergeAddresses)(depl1, depl2);
|
|
73
|
+
t.is(address, '0x1');
|
|
74
|
+
t.true(unorderedEqual(allAddresses, ['0x1', '0x1a', '0x1b', '0x2', '0x2a', '0x2b']), allAddresses.toString());
|
|
75
|
+
});
|
|
76
|
+
function unorderedEqual(arr1, arr2) {
|
|
77
|
+
return arr1.every(i => arr2.includes(i)) && arr2.every(i => arr1.includes(i));
|
|
78
|
+
}
|
|
55
79
|
//# sourceMappingURL=impl-store.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-store.test.js","sourceRoot":"","sources":["../src/impl-store.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,2BAAoC;AACpC,oDAAiC;AACjC,gDAAwB;AACxB,gDAAwB;AACxB,4CAAoB;AAEpB,
|
|
1
|
+
{"version":3,"file":"impl-store.test.js","sourceRoot":"","sources":["../src/impl-store.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
export * from './validate';
|
|
2
|
-
export
|
|
2
|
+
export { fetchOrDeploy, fetchOrDeployAdmin } from './impl-store';
|
|
3
3
|
export * from './version';
|
|
4
|
-
export * from './manifest';
|
|
5
4
|
export * from './storage';
|
|
6
|
-
export
|
|
5
|
+
export { EIP1967BeaconNotFound, EIP1967ImplementationNotFound, getAdminAddress, getBeaconAddress, getImplementationAddress, toEip1967Hash, toFallbackEip1967Hash, } from './eip-1967';
|
|
7
6
|
export * from './provider';
|
|
8
7
|
export * from './src-decoder';
|
|
9
8
|
export * from './solc-api';
|
|
10
9
|
export * from './deployment';
|
|
11
10
|
export * from './link-refs';
|
|
12
11
|
export * from './error';
|
|
12
|
+
export { ManifestData, ImplDeployment, ProxyDeployment, Manifest, migrateManifest, DeploymentNotFound, } from './manifest';
|
|
13
13
|
export { getStorageLayoutForAddress } from './manifest-storage-layout';
|
|
14
14
|
export * from './scripts/migrate-oz-cli-project';
|
|
15
15
|
export { logWarning } from './utils/log';
|
|
16
|
-
export { setProxyKind, processProxyKind } from './proxy-kind';
|
|
16
|
+
export { setProxyKind, processProxyKind, detectProxyKind } from './proxy-kind';
|
|
17
17
|
export { UpgradeableContract } from './standalone';
|
|
18
18
|
export { isTransparentOrUUPSProxy, isBeaconProxy } from './eip-1967-type';
|
|
19
19
|
export { getImplementationAddressFromBeacon, getImplementationAddressFromProxy } from './impl-address';
|
|
20
20
|
export { isBeacon } from './beacon';
|
|
21
|
-
export {
|
|
21
|
+
export { addProxyToManifest } from './add-proxy-to-manifest';
|
|
22
|
+
export { BeaconProxyUnsupportedError, LoadProxyUnsupportedError, PrepareUpgradeUnsupportedError, DeployBeaconProxyUnsupportedError, DeployBeaconProxyImplUnknownError, DeployBeaconProxyKindError, ForceImportUnsupportedError, assertNotProxy, } from './usage-error';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|