@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.
Files changed (106) hide show
  1. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  2. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +1 -1
  3. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  4. package/dist/add-proxy-to-manifest.d.ts +3 -0
  5. package/dist/add-proxy-to-manifest.d.ts.map +1 -0
  6. package/dist/add-proxy-to-manifest.js +15 -0
  7. package/dist/add-proxy-to-manifest.js.map +1 -0
  8. package/dist/deployment.d.ts +21 -1
  9. package/dist/deployment.d.ts.map +1 -1
  10. package/dist/deployment.js +65 -15
  11. package/dist/deployment.js.map +1 -1
  12. package/dist/eip-1967-type.d.ts +1 -0
  13. package/dist/eip-1967-type.d.ts.map +1 -1
  14. package/dist/eip-1967-type.js +6 -1
  15. package/dist/eip-1967-type.js.map +1 -1
  16. package/dist/eip-1967.d.ts +1 -0
  17. package/dist/eip-1967.d.ts.map +1 -1
  18. package/dist/eip-1967.js +3 -2
  19. package/dist/eip-1967.js.map +1 -1
  20. package/dist/impl-address.js +1 -1
  21. package/dist/impl-address.js.map +1 -1
  22. package/dist/impl-store.d.ts +22 -2
  23. package/dist/impl-store.d.ts.map +1 -1
  24. package/dist/impl-store.js +59 -15
  25. package/dist/impl-store.js.map +1 -1
  26. package/dist/impl-store.test.js +24 -0
  27. package/dist/impl-store.test.js.map +1 -1
  28. package/dist/index.d.ts +6 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +20 -4
  31. package/dist/index.js.map +1 -1
  32. package/dist/manifest-storage-layout.d.ts.map +1 -1
  33. package/dist/manifest-storage-layout.js +3 -2
  34. package/dist/manifest-storage-layout.js.map +1 -1
  35. package/dist/manifest-storage-layout.test.js.map +1 -1
  36. package/dist/manifest.d.ts +2 -0
  37. package/dist/manifest.d.ts.map +1 -1
  38. package/dist/manifest.js +6 -4
  39. package/dist/manifest.js.map +1 -1
  40. package/dist/manifest.test.js +32 -0
  41. package/dist/manifest.test.js.map +1 -1
  42. package/dist/provider.d.ts +1 -0
  43. package/dist/provider.d.ts.map +1 -1
  44. package/dist/provider.js +6 -2
  45. package/dist/provider.js.map +1 -1
  46. package/dist/proxy-kind.d.ts +9 -0
  47. package/dist/proxy-kind.d.ts.map +1 -1
  48. package/dist/proxy-kind.js +27 -1
  49. package/dist/proxy-kind.js.map +1 -1
  50. package/dist/scripts/migrate-oz-cli-project.test.js +1 -1
  51. package/dist/scripts/migrate-oz-cli-project.test.js.map +1 -1
  52. package/dist/solc-api.d.ts +5 -0
  53. package/dist/solc-api.d.ts.map +1 -1
  54. package/dist/standalone.test.js.map +1 -1
  55. package/dist/storage/extract.d.ts +1 -1
  56. package/dist/storage/extract.d.ts.map +1 -1
  57. package/dist/storage/extract.js +76 -38
  58. package/dist/storage/extract.js.map +1 -1
  59. package/dist/storage/layout.d.ts +4 -0
  60. package/dist/storage/layout.d.ts.map +1 -1
  61. package/dist/storage/layout.js.map +1 -1
  62. package/dist/storage/report.test.js.map +1 -1
  63. package/dist/storage.test.js +1 -1
  64. package/dist/storage.test.js.map +1 -1
  65. package/dist/usage-error.d.ts +3 -0
  66. package/dist/usage-error.d.ts.map +1 -1
  67. package/dist/usage-error.js +7 -1
  68. package/dist/usage-error.js.map +1 -1
  69. package/dist/validate/query.d.ts.map +1 -1
  70. package/dist/validate/query.js +10 -5
  71. package/dist/validate/query.js.map +1 -1
  72. package/dist/validate/run.d.ts.map +1 -1
  73. package/dist/validate/run.js +1 -1
  74. package/dist/validate/run.js.map +1 -1
  75. package/dist/validate.test.js.map +1 -1
  76. package/package.json +4 -4
  77. package/src/add-proxy-to-manifest.ts +12 -0
  78. package/src/deployment.ts +81 -14
  79. package/src/eip-1967-type.ts +7 -0
  80. package/src/eip-1967.ts +4 -3
  81. package/src/impl-address.ts +1 -1
  82. package/src/impl-store.test.ts +33 -1
  83. package/src/impl-store.ts +69 -12
  84. package/src/index.ts +22 -4
  85. package/src/manifest-storage-layout.test.ts +3 -2
  86. package/src/manifest-storage-layout.ts +8 -3
  87. package/src/manifest.test.ts +34 -1
  88. package/src/manifest.ts +9 -4
  89. package/src/provider.ts +5 -1
  90. package/src/proxy-kind.ts +24 -1
  91. package/src/scripts/migrate-oz-cli-project.test.ts +1 -1
  92. package/src/scripts/migrate-oz-cli-project.test.ts.snap +0 -0
  93. package/src/solc-api.ts +5 -0
  94. package/src/standalone.test.ts +2 -2
  95. package/src/storage/extract.ts +98 -52
  96. package/src/storage/layout.ts +4 -0
  97. package/src/storage/report.test.ts +2 -2
  98. package/src/storage/report.test.ts.snap +0 -0
  99. package/src/storage.test.ts +3 -3
  100. package/src/storage.test.ts.snap +0 -0
  101. package/src/usage-error.ts +9 -0
  102. package/src/utils/parse-type-id.test.ts.md +106 -106
  103. package/src/utils/parse-type-id.test.ts.snap +0 -0
  104. package/src/validate/query.ts +9 -5
  105. package/src/validate/run.ts +6 -1
  106. package/src/validate.test.ts +2 -2
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/5c28a997178369051e77758d2ca491ea.json"
3
+ "buildInfo": "../../../../../build-info/9e73e2c5522c7cd3de4f2a592f02e0af.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/5c28a997178369051e77758d2ca491ea.json"
3
+ "buildInfo": "../../../../../build-info/9e73e2c5522c7cd3de4f2a592f02e0af.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/5c28a997178369051e77758d2ca491ea.json"
3
+ "buildInfo": "../../../../../build-info/9e73e2c5522c7cd3de4f2a592f02e0af.json"
4
4
  }
@@ -0,0 +1,3 @@
1
+ import { Manifest, ProxyDeployment } from '.';
2
+ export declare function addProxyToManifest(kind: ProxyDeployment['kind'], address: string, manifest: Manifest): Promise<void>;
3
+ //# sourceMappingURL=add-proxy-to-manifest.d.ts.map
@@ -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"}
@@ -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
- export declare function resumeOrDeploy<T extends Deployment>(provider: EthereumProvider, cached: T | undefined, deploy: () => Promise<T>): Promise<T>;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAMjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,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,wBAAsB,cAAc,CAAC,CAAC,SAAS,UAAU,EACvD,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,CAAC,GAAG,SAAS,EACrB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED,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,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"}
@@ -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
- async function resumeOrDeploy(provider, cached, deploy) {
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
- const { txHash } = cached;
16
- if (txHash === undefined) {
17
- // Nothing to do here without a txHash.
18
- // This is the case for deployments migrated from OpenZeppelin CLI.
19
- return cached;
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
- return cached;
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 if (!(await (0, provider_1.isDevelopmentNetwork)(provider))) {
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
- throw new InvalidDeployment(cached);
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
- else {
35
- (0, debug_1.default)('ignoring invalid deployment in development network', txHash);
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;
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -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":"AAMA,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,aAAa,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjG"}
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"}
@@ -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,yCAKoB;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,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"}
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"}
@@ -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
@@ -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;AAEnE,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,CAa3G;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"}
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 administered ERC 1967 proxy`);
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"eip-1967.js","sourceRoot":"","sources":["../src/eip-1967.ts"],"names":[],"mappings":"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"}
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;AACnE,MAAa,qBAAsB,SAAQ,qBAAa;CAAG;AAA3D,sDAA2D;AAEpD,KAAK,UAAU,eAAe,CAAC,QAA0B,EAAE,OAAe;IAC/E,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACtC,QAAQ,EACR,OAAO,EACP,aAAa,CAAC,qBAAqB,CAAC,EACpC,qBAAqB,CAAC,4BAA4B,CAAC,CACpD,CAAC;IAEF,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AATD,0CASC;AAEM,KAAK,UAAU,wBAAwB,CAAC,QAA0B,EAAE,OAAe;IACxF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACtC,QAAQ,EACR,OAAO,EACP,aAAa,CAAC,8BAA8B,CAAC,EAC7C,qBAAqB,CAAC,qCAAqC,CAAC,CAC7D,CAAC;IAEF,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;QACxB,MAAM,IAAI,6BAA6B,CACrC,eAAe,OAAO,oEAAoE,CAC3F,CAAC;KACH;IAED,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAfD,4DAeC;AAEM,KAAK,UAAU,gBAAgB,CAAC,QAA0B,EAAE,OAAe;IAChF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEnG,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;QACxB,MAAM,IAAI,qBAAqB,CAAC,eAAe,OAAO,6CAA6C,CAAC,CAAC;KACtG;IAED,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AARD,4CAQC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAA0B,EAAE,OAAe,EAAE,GAAG,KAAe;IAC/F,IAAI,OAAO,GAAG,oEAAoE,CAAC,CAAC,sBAAsB;IAE1G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,OAAO,GAAG,MAAM,IAAA,uBAAY,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YACzB,MAAM;SACP;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,IAAI,GAAG,IAAA,2BAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAFD,sDAEC;AAED,SAAgB,aAAa,CAAC,KAAa;IACzC,MAAM,IAAI,GAAG,IAAA,2BAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,eAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,eAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAJD,sCAIC;AAED,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,eAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACzC,CAAC;AAHD,kCAGC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,GAAG,CAAC,CAAC;KACpE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -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('reverted'))) {
27
+ e.message.includes('revert'))) {
28
28
  throw e;
29
29
  } // otherwise fall through with no result
30
30
  }
@@ -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,UAAU,CAAC,CAC/B,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"}
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"}
@@ -1,8 +1,28 @@
1
1
  import { ImplDeployment } from './manifest';
2
2
  import { EthereumProvider } from './provider';
3
3
  import { Deployment } from './deployment';
4
- import type { Version } from './version';
4
+ import { Version } from './version';
5
5
  import { DeployOpts } from '.';
6
- export declare function fetchOrDeploy(version: Version, provider: EthereumProvider, deploy: () => Promise<ImplDeployment>, opts?: DeployOpts): Promise<string>;
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
@@ -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,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAyE/B,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EACrC,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAQD,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,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"}
@@ -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
- const stored = deployment.get();
31
- if (stored === undefined) {
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 updated = await (0, deployment_1.resumeOrDeploy)(provider, stored, deploy);
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
- await checkForAddressClash(provider, data, updated);
37
- deployment.set(updated);
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
- async function fetchOrDeploy(version, provider, deploy, opts) {
64
- return fetchOrDeployGeneric(implLens(version.linkedWithoutMetadata), provider, deploy, opts);
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
  }
@@ -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;AAc5B;;;;;;;;;;GAUG;AACH,KAAK,UAAU,oBAAoB,CACjC,IAAqB,EACrB,QAA0B,EAC1B,MAAwB,EACxB,IAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI;QACF,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACrD,IAAA,eAAK,EAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,IAAA,eAAK,EAAC,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aACvD;YACD,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,OAAO,KAAK,MAAM,EAAE;gBACtB,MAAM,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpD,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5B;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAA,sCAAyB,EAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO,UAAU,CAAC,OAAO,CAAC;KAC3B;IAAC,OAAO,CAAC,EAAE;QACV,qEAAqE;QACrE,IAAI,CAAC,YAAY,8BAAiB,EAAE;YAClC,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;gBAClC,IAAA,gBAAM,EAAC,CAAC,YAAY,8BAAiB,CAAC,CAAC,CAAC,yDAAyD;gBACjG,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC1C,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC1B,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC5B;YACH,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;SAClB;QAED,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAAgB,EAChB,QAA0B,EAC1B,MAAqC,EACrC,IAAiB;IAEjB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/F,CAAC;AAPD,sCAOC;AAED,MAAM,QAAQ,GAAG,CAAC,sBAA8B,EAAE,EAAE,CAClD,IAAI,CAAC,kBAAkB,sBAAsB,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC7C,GAAG,EAAE,CAAC,KAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;CAC9E,CAAC,CAAC,CAAC;AAEC,KAAK,UAAU,kBAAkB,CACtC,QAA0B,EAC1B,MAAiC,EACjC,IAAiB;IAEjB,OAAO,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAND,gDAMC;AAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK;IACrB,GAAG,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,SAAS,IAAI,CAAI,WAAmB,EAAE,IAAY,EAAE,EAA4C;IAC9F,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,QAA0B,EAC1B,IAAkB,EAClB,OAAmB;IAEnB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,IAAI,MAAM,IAAA,+BAAoB,EAAC,QAAQ,CAAC,EAAE;YACxC,IAAA,eAAK,EAAC,2CAA2C,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACtB;aAAM;YACL,MAAM,IAAI,KAAK,CACb,4DAA4D,OAAO,CAAC,OAAO,MAAM;gBAC/E,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChC,MAAM,CACT,CAAC;SACH;KACF;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAkB,EAAE,OAAe;;IAC3D,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,MAAK,OAAO,EAAE;QACnC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;KACxB;IAED,KAAK,MAAM,sBAAsB,IAAI,IAAI,CAAC,KAAK,EAAE;QAC/C,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,0CAAE,OAAO,MAAK,OAAO,EAAE;YAC3D,OAAO,QAAQ,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC;SAC/C;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"impl-store.js","sourceRoot":"","sources":["../src/impl-store.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
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 * from './impl-store';
2
+ export { fetchOrDeploy, fetchOrDeployAdmin } from './impl-store';
3
3
  export * from './version';
4
- export * from './manifest';
5
4
  export * from './storage';
6
- export * from './eip-1967';
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 { BeaconProxyUnsupportedError, LoadProxyUnsupportedError, PrepareUpgradeUnsupportedError, DeployBeaconProxyUnsupportedError, DeployBeaconProxyImplUnknownError, DeployBeaconProxyKindError, assertNotProxy, } from './usage-error';
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