@openzeppelin/upgrades-core 1.31.1 → 1.31.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/upgrade-interface-version.d.ts +2 -1
- package/dist/upgrade-interface-version.d.ts.map +1 -1
- package/dist/upgrade-interface-version.js +9 -2
- package/dist/upgrade-interface-version.js.map +1 -1
- package/dist/upgrade-interface-version.test.js +5 -0
- package/dist/upgrade-interface-version.test.js.map +1 -1
- package/dist/utils/make-namespaced.test.js +3 -1
- package/dist/utils/make-namespaced.test.js.map +1 -1
- package/package.json +5 -5
- package/src/upgrade-interface-version.test.ts +6 -0
- package/src/upgrade-interface-version.ts +6 -1
- package/src/utils/make-namespaced.test.ts +3 -1
- package/src/utils/make-namespaced.test.ts.md +7 -0
- package/src/utils/make-namespaced.test.ts.snap +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="debug" />
|
|
1
2
|
import { EthereumProvider } from './provider';
|
|
2
|
-
export declare function getUpgradeInterfaceVersion(provider: EthereumProvider, address: string): Promise<string | undefined>;
|
|
3
|
+
export declare function getUpgradeInterfaceVersion(provider: EthereumProvider, address: string, log?: import("debug").Debugger): Promise<string | undefined>;
|
|
3
4
|
//# sourceMappingURL=upgrade-interface-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-interface-version.d.ts","sourceRoot":"","sources":["../src/upgrade-interface-version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upgrade-interface-version.d.ts","sourceRoot":"","sources":["../src/upgrade-interface-version.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,GAAG,2BAAQ,GACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuB7B"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getUpgradeInterfaceVersion = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("./utils/debug"));
|
|
4
8
|
const call_optional_signature_1 = require("./call-optional-signature");
|
|
5
|
-
async function getUpgradeInterfaceVersion(provider, address) {
|
|
9
|
+
async function getUpgradeInterfaceVersion(provider, address, log = debug_1.default) {
|
|
6
10
|
const encodedVersion = await (0, call_optional_signature_1.callOptionalSignature)(provider, address, 'UPGRADE_INTERFACE_VERSION()');
|
|
7
11
|
if (encodedVersion !== undefined) {
|
|
8
12
|
// Encoded string
|
|
@@ -10,7 +14,10 @@ async function getUpgradeInterfaceVersion(provider, address) {
|
|
|
10
14
|
// The first 32 bytes represent the offset, which should be 32 for a string
|
|
11
15
|
const offset = parseInt(buf.slice(0, 32).toString('hex'), 16);
|
|
12
16
|
if (offset !== 32) {
|
|
13
|
-
|
|
17
|
+
// Log as debug and return undefined if the interface version is not a string.
|
|
18
|
+
// Do not throw an error because this could be caused by a fallback function.
|
|
19
|
+
log(`Unexpected type for UPGRADE_INTERFACE_VERSION at address ${address}. Expected a string`);
|
|
20
|
+
return undefined;
|
|
14
21
|
}
|
|
15
22
|
// The next 32 bytes represent the length of the string
|
|
16
23
|
const length = parseInt(buf.slice(32, 64).toString('hex'), 16);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-interface-version.js","sourceRoot":"","sources":["../src/upgrade-interface-version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upgrade-interface-version.js","sourceRoot":"","sources":["../src/upgrade-interface-version.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAClC,uEAAkE;AAG3D,KAAK,UAAU,0BAA0B,CAC9C,QAA0B,EAC1B,OAAe,EACf,GAAG,GAAG,eAAK;IAEX,MAAM,cAAc,GAAG,MAAM,IAAA,+CAAqB,EAAC,QAAQ,EAAE,OAAO,EAAE,6BAA6B,CAAC,CAAC;IACrG,IAAI,cAAc,KAAK,SAAS,EAAE;QAChC,iBAAiB;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAElE,2EAA2E;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,8EAA8E;YAC9E,6EAA6E;YAC7E,GAAG,CAAC,4DAA4D,OAAO,qBAAqB,CAAC,CAAC;YAC9F,OAAO,SAAS,CAAC;SAClB;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/D,gCAAgC;QAChC,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACpD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AA3BD,gEA2BC"}
|
|
@@ -29,4 +29,9 @@ function makeProviderError(msg) {
|
|
|
29
29
|
const provider = makeProviderError(`Transaction reverted: function selector was not recognized and there's no fallback function`);
|
|
30
30
|
t.is(await (0, upgrade_interface_version_1.getUpgradeInterfaceVersion)(provider, hash), undefined);
|
|
31
31
|
});
|
|
32
|
+
(0, ava_1.default)('getUpgradeInterfaceVersion returns undefined for non-string type', async (t) => {
|
|
33
|
+
// abi encoding of boolean 'true'
|
|
34
|
+
const provider = makeProviderReturning('0x0000000000000000000000000000000000000000000000000000000000000001');
|
|
35
|
+
t.is(await (0, upgrade_interface_version_1.getUpgradeInterfaceVersion)(provider, hash), undefined);
|
|
36
|
+
});
|
|
32
37
|
//# sourceMappingURL=upgrade-interface-version.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-interface-version.test.js","sourceRoot":"","sources":["../src/upgrade-interface-version.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,2EAAyE;AAEzE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,SAAS,qBAAqB,CAAC,MAAe;IAC5C,OAAO,EAAE,IAAI,EAAE,CAAC,OAAe,EAAE,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAsB,CAAC;AACxG,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO;QACL,IAAI,EAAE,CAAC,OAAe,EAAE,OAAkB,EAAE,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;KACkB,CAAC;AACxB,CAAC;AAED,IAAA,aAAI,EAAC,4CAA4C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3D,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,oMAAoM,CACrM,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,MAAM,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mDAAmD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxG,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mEAAmE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClF,MAAM,QAAQ,GAAG,iBAAiB,CAChC,6FAA6F,CAC9F,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,MAAM,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"upgrade-interface-version.test.js","sourceRoot":"","sources":["../src/upgrade-interface-version.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,2EAAyE;AAEzE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,SAAS,qBAAqB,CAAC,MAAe;IAC5C,OAAO,EAAE,IAAI,EAAE,CAAC,OAAe,EAAE,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAsB,CAAC;AACxG,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO;QACL,IAAI,EAAE,CAAC,OAAe,EAAE,OAAkB,EAAE,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;KACkB,CAAC;AACxB,CAAC;AAED,IAAA,aAAI,EAAC,4CAA4C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3D,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,oMAAoM,CACrM,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,MAAM,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mDAAmD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxG,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mEAAmE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClF,MAAM,QAAQ,GAAG,iBAAiB,CAChC,6FAA6F,CAC9F,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,MAAM,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kEAAkE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjF,iCAAiC;IACjC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oEAAoE,CAAC,CAAC;IAC7G,CAAC,CAAC,EAAE,CAAC,MAAM,IAAA,sDAA0B,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
|
|
@@ -34,7 +34,9 @@ async function testMakeNamespaced(origBuildInfo, t, solcVersion) {
|
|
|
34
34
|
function normalizeStateVariableNames(input) {
|
|
35
35
|
for (const source of Object.values(input.sources)) {
|
|
36
36
|
if (source.content !== undefined) {
|
|
37
|
-
source.content = source.content
|
|
37
|
+
source.content = source.content
|
|
38
|
+
.replace(/\$MainStorage_\d{1,6};/g, '$MainStorage_random;')
|
|
39
|
+
.replace(/\$SecondaryStorage_\d{1,6}/g, '$SecondaryStorage_random');
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-namespaced.test.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAA6C;AAC7C,qCAAyC;AACzC,iEAI0C;AAE1C,uDAAwD;AAKxD,IAAA,aAAI,EAAC,uBAAuB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACtC,MAAM,aAAa,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,+CAA+C,CAAC,CAAC;IACpG,MAAM,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kCAAkC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjD,6JAA6J;IAC7J,MAAM,aAAa,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,qDAAqD,CAAC,CAAC;IAC1G,MAAM,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,kBAAkB,CAC/B,aAAoC,EACpC,CAA4B,EAC5B,WAAmB;IAEnB,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IAED,2FAA2F;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,IAAA,qCAAmB,EAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrF,2BAA2B,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE1B,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAgB;IACnD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACjD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"make-namespaced.test.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAA6C;AAC7C,qCAAyC;AACzC,iEAI0C;AAE1C,uDAAwD;AAKxD,IAAA,aAAI,EAAC,uBAAuB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACtC,MAAM,aAAa,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,+CAA+C,CAAC,CAAC;IACpG,MAAM,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kCAAkC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjD,6JAA6J;IAC7J,MAAM,aAAa,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,qDAAqD,CAAC,CAAC;IAC1G,MAAM,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,kBAAkB,CAC/B,aAAoC,EACpC,CAA4B,EAC5B,WAAmB;IAEnB,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IAED,2FAA2F;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,IAAA,qCAAmB,EAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrF,2BAA2B,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE1B,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAgB;IACnD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACjD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;iBAC5B,OAAO,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;iBAC1D,OAAO,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;SACvE;KACF;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAgB,EAAE,WAAmB;IACjE,MAAM,SAAS,GAAc,MAAM,IAAA,aAAG,EAAC,iDAAoC,EAAE;QAC3E,KAAK,EAAE,IAAI;QACX,WAAW;KACZ,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,QAAQ,EAAE;QACtB,OAAO,MAAM,IAAA,aAAG,EAAC,6CAAgC,EAAE;YACjD,KAAK;YACL,UAAU,EAAE,SAAS,CAAC,YAAY;SACnC,CAAC,CAAC;KACJ;SAAM;QACL,OAAO,MAAM,IAAA,aAAG,EAAC,2CAA8B,EAAE;YAC/C,KAAK;YACL,QAAQ,EAAE,SAAS,CAAC,YAAY;SACjC,CAAC,CAAC;KACJ;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/upgrades-core",
|
|
3
|
-
"version": "1.31.
|
|
3
|
+
"version": "1.31.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@ava/typescript": "^4.0.0",
|
|
40
|
-
"@nomicfoundation/hardhat-ethers": "^3.0.
|
|
40
|
+
"@nomicfoundation/hardhat-ethers": "^3.0.5",
|
|
41
41
|
"@openzeppelin/contracts": "4.8.3",
|
|
42
42
|
"@openzeppelin/contracts-upgradeable": "4.8.3",
|
|
43
43
|
"@types/cbor": "^5.0.0",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
"@types/node": "^16.11.7",
|
|
47
47
|
"@types/proper-lockfile": "^4.1.1",
|
|
48
48
|
"@types/rimraf": "^3.0.0",
|
|
49
|
-
"@types/sinon": "^
|
|
49
|
+
"@types/sinon": "^17.0.0",
|
|
50
50
|
"ava": "^5.0.0",
|
|
51
51
|
"dotenv": "^16.0.0",
|
|
52
52
|
"fgbg": "^0.1.4",
|
|
53
|
-
"hardhat": "^2.
|
|
53
|
+
"hardhat": "^2.19.1",
|
|
54
54
|
"rimraf": "^5.0.0",
|
|
55
55
|
"typescript": "^4.0.0"
|
|
56
56
|
},
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"proper-lockfile": "^4.1.1",
|
|
65
65
|
"solidity-ast": "^0.4.51"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "6614824fca753f8fb853b48cfc722685e832a1b9"
|
|
68
68
|
}
|
|
@@ -35,3 +35,9 @@ test('getUpgradeInterfaceVersion returns undefined for invalid selector', async
|
|
|
35
35
|
);
|
|
36
36
|
t.is(await getUpgradeInterfaceVersion(provider, hash), undefined);
|
|
37
37
|
});
|
|
38
|
+
|
|
39
|
+
test('getUpgradeInterfaceVersion returns undefined for non-string type', async t => {
|
|
40
|
+
// abi encoding of boolean 'true'
|
|
41
|
+
const provider = makeProviderReturning('0x0000000000000000000000000000000000000000000000000000000000000001');
|
|
42
|
+
t.is(await getUpgradeInterfaceVersion(provider, hash), undefined);
|
|
43
|
+
});
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import debug from './utils/debug';
|
|
1
2
|
import { callOptionalSignature } from './call-optional-signature';
|
|
2
3
|
import { EthereumProvider } from './provider';
|
|
3
4
|
|
|
4
5
|
export async function getUpgradeInterfaceVersion(
|
|
5
6
|
provider: EthereumProvider,
|
|
6
7
|
address: string,
|
|
8
|
+
log = debug,
|
|
7
9
|
): Promise<string | undefined> {
|
|
8
10
|
const encodedVersion = await callOptionalSignature(provider, address, 'UPGRADE_INTERFACE_VERSION()');
|
|
9
11
|
if (encodedVersion !== undefined) {
|
|
@@ -13,7 +15,10 @@ export async function getUpgradeInterfaceVersion(
|
|
|
13
15
|
// The first 32 bytes represent the offset, which should be 32 for a string
|
|
14
16
|
const offset = parseInt(buf.slice(0, 32).toString('hex'), 16);
|
|
15
17
|
if (offset !== 32) {
|
|
16
|
-
|
|
18
|
+
// Log as debug and return undefined if the interface version is not a string.
|
|
19
|
+
// Do not throw an error because this could be caused by a fallback function.
|
|
20
|
+
log(`Unexpected type for UPGRADE_INTERFACE_VERSION at address ${address}. Expected a string`);
|
|
21
|
+
return undefined;
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
// The next 32 bytes represent the length of the string
|
|
@@ -49,7 +49,9 @@ async function testMakeNamespaced(
|
|
|
49
49
|
function normalizeStateVariableNames(input: SolcInput): void {
|
|
50
50
|
for (const source of Object.values(input.sources)) {
|
|
51
51
|
if (source.content !== undefined) {
|
|
52
|
-
source.content = source.content
|
|
52
|
+
source.content = source.content
|
|
53
|
+
.replace(/\$MainStorage_\d{1,6};/g, '$MainStorage_random;')
|
|
54
|
+
.replace(/\$SecondaryStorage_\d{1,6}/g, '$SecondaryStorage_random');
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
}
|
|
@@ -11,6 +11,7 @@ Generated by [AVA](https://avajs.dev).
|
|
|
11
11
|
{
|
|
12
12
|
language: 'Solidity',
|
|
13
13
|
settings: {
|
|
14
|
+
evmVersion: 'paris',
|
|
14
15
|
optimizer: {
|
|
15
16
|
enabled: true,
|
|
16
17
|
runs: 200,
|
|
@@ -37,6 +38,12 @@ Generated by [AVA](https://avajs.dev).
|
|
|
37
38
|
uint256 x;␊
|
|
38
39
|
uint256 y;␊
|
|
39
40
|
} MainStorage $MainStorage_random;␊
|
|
41
|
+
␊
|
|
42
|
+
/// @custom:storage-location erc7201:example.secondary␊
|
|
43
|
+
struct SecondaryStorage {␊
|
|
44
|
+
uint256 a;␊
|
|
45
|
+
uint256 b;␊
|
|
46
|
+
} SecondaryStorage $SecondaryStorage_random;␊
|
|
40
47
|
␊
|
|
41
48
|
␊
|
|
42
49
|
␊
|
|
Binary file
|