@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.
@@ -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":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B"}
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
- throw new Error(`Unexpected type for UPGRADE_INTERFACE_VERSION at address ${address}. Expected a string`);
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":";;;AAAA,uEAAkE;AAG3D,KAAK,UAAU,0BAA0B,CAC9C,QAA0B,EAC1B,OAAe;IAEf,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,MAAM,IAAI,KAAK,CAAC,4DAA4D,OAAO,qBAAqB,CAAC,CAAC;SAC3G;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;AAvBD,gEAuBC"}
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.replace(/\$MainStorage_\d{1,6};/g, '$MainStorage_random;');
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,CAAC,OAAO,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;SAC5F;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"}
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.1",
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.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": "^10.0.13",
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.0.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": "cfac3f222bcb6d72bc7d5b0343e43b4f3c60fbd0"
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
- throw new Error(`Unexpected type for UPGRADE_INTERFACE_VERSION at address ${address}. Expected a string`);
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.replace(/\$MainStorage_\d{1,6};/g, '$MainStorage_random;');
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
  ␊