@openzeppelin/upgrades-core 1.9.0 → 1.11.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/LICENSE +22 -0
- package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
- package/artifacts/AdminUpgradeabilityProxy.json +2 -2
- package/artifacts/contracts/proxy/AdminUpgradeabilityProxy.sol/AdminUpgradeabilityProxy.json +2 -2
- package/dist/ast-dereferencer.js +2 -2
- package/dist/ast-dereferencer.js.map +1 -1
- package/dist/beacon.d.ts +8 -0
- package/dist/beacon.d.ts.map +1 -0
- package/dist/beacon.js +25 -0
- package/dist/beacon.js.map +1 -0
- package/dist/deployment.js +18 -18
- package/dist/deployment.js.map +1 -1
- package/dist/deployment.test.js +39 -39
- package/dist/deployment.test.js.map +1 -1
- package/dist/eip-1967-type.d.ts +4 -0
- package/dist/eip-1967-type.d.ts.map +1 -0
- package/dist/eip-1967-type.js +37 -0
- package/dist/eip-1967-type.js.map +1 -0
- package/dist/eip-1967.d.ts +5 -0
- package/dist/eip-1967.d.ts.map +1 -1
- package/dist/eip-1967.js +22 -15
- package/dist/eip-1967.js.map +1 -1
- package/dist/impl-address.d.ts +19 -0
- package/dist/impl-address.d.ts.map +1 -0
- package/dist/impl-address.js +67 -0
- package/dist/impl-address.js.map +1 -0
- package/dist/impl-store.d.ts.map +1 -1
- package/dist/impl-store.js +8 -6
- package/dist/impl-store.js.map +1 -1
- package/dist/impl-store.test.js +18 -18
- package/dist/impl-store.test.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/levenshtein.test.js +14 -14
- package/dist/levenshtein.test.js.map +1 -1
- package/dist/link-refs.test.js +4 -4
- package/dist/link-refs.test.js.map +1 -1
- package/dist/manifest-storage-layout.js +8 -8
- package/dist/manifest-storage-layout.js.map +1 -1
- package/dist/manifest-storage-layout.test.js +16 -16
- package/dist/manifest-storage-layout.test.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +6 -6
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.test.js +2 -2
- package/dist/manifest.test.js.map +1 -1
- package/dist/provider.d.ts +2 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +11 -1
- package/dist/provider.js.map +1 -1
- package/dist/provider.test.js +12 -12
- package/dist/provider.test.js.map +1 -1
- package/dist/proxy-kind.d.ts +12 -0
- package/dist/proxy-kind.d.ts.map +1 -0
- package/dist/proxy-kind.js +50 -0
- package/dist/proxy-kind.js.map +1 -0
- package/dist/scripts/migrate-oz-cli-project.js +1 -1
- package/dist/scripts/migrate-oz-cli-project.js.map +1 -1
- package/dist/scripts/migrate-oz-cli-project.test.js +9 -9
- package/dist/scripts/migrate-oz-cli-project.test.js.map +1 -1
- package/dist/src-decoder.test.js +2 -3
- package/dist/src-decoder.test.js.map +1 -1
- package/dist/standalone.d.ts +19 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +24 -0
- package/dist/standalone.js.map +1 -0
- package/dist/standalone.test.d.ts +2 -0
- package/dist/standalone.test.d.ts.map +1 -0
- package/dist/standalone.test.js +33 -0
- package/dist/standalone.test.js.map +1 -0
- package/dist/storage/compare.js +7 -7
- package/dist/storage/compare.js.map +1 -1
- package/dist/storage/extract.js +9 -9
- package/dist/storage/extract.js.map +1 -1
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +22 -23
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/layout.js +1 -1
- package/dist/storage/layout.js.map +1 -1
- package/dist/storage/report.d.ts +3 -2
- package/dist/storage/report.d.ts.map +1 -1
- package/dist/storage/report.js +17 -11
- package/dist/storage/report.js.map +1 -1
- package/dist/storage/report.test.js +5 -5
- package/dist/storage/report.test.js.map +1 -1
- package/dist/storage.test.js +32 -32
- package/dist/storage.test.js.map +1 -1
- package/dist/stub-provider.d.ts.map +1 -1
- package/dist/stub-provider.js +0 -1
- package/dist/stub-provider.js.map +1 -1
- package/dist/usage-error.d.ts +21 -0
- package/dist/usage-error.d.ts.map +1 -0
- package/dist/usage-error.js +51 -0
- package/dist/usage-error.js.map +1 -0
- package/dist/utils/address.d.ts +8 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +20 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/debug.js +1 -1
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/deep-array.test.js +12 -12
- package/dist/utils/deep-array.test.js.map +1 -1
- package/dist/utils/function.js +5 -5
- package/dist/utils/function.js.map +1 -1
- package/dist/utils/function.test.js +4 -4
- package/dist/utils/function.test.js.map +1 -1
- package/dist/utils/is-nullish.test.js +6 -6
- package/dist/utils/is-nullish.test.js.map +1 -1
- package/dist/utils/itemize.js +1 -1
- package/dist/utils/itemize.js.map +1 -1
- package/dist/utils/log.d.ts +2 -0
- package/dist/utils/log.d.ts.map +1 -1
- package/dist/utils/log.js +22 -4
- package/dist/utils/log.js.map +1 -1
- package/dist/utils/make-non-enumerable.d.ts +1 -1
- package/dist/utils/make-non-enumerable.d.ts.map +1 -1
- package/dist/utils/make-non-enumerable.js +0 -1
- package/dist/utils/make-non-enumerable.js.map +1 -1
- package/dist/utils/parse-type-id.js +1 -1
- package/dist/utils/parse-type-id.js.map +1 -1
- package/dist/utils/parse-type-id.test.js +2 -2
- package/dist/utils/parse-type-id.test.js.map +1 -1
- package/dist/utils/type-id.js +1 -1
- package/dist/utils/type-id.js.map +1 -1
- package/dist/validate/error.d.ts.map +1 -1
- package/dist/validate/error.js +2 -67
- package/dist/validate/error.js.map +1 -1
- package/dist/validate/index.d.ts +4 -2
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +7 -2
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/overrides.d.ts +1 -2
- package/dist/validate/overrides.d.ts.map +1 -1
- package/dist/validate/overrides.js +7 -18
- package/dist/validate/overrides.js.map +1 -1
- package/dist/validate/query.d.ts +3 -1
- package/dist/validate/query.d.ts.map +1 -1
- package/dist/validate/query.js +45 -19
- package/dist/validate/query.js.map +1 -1
- package/dist/validate/query.test.js +4 -4
- package/dist/validate/query.test.js.map +1 -1
- package/dist/validate/report.d.ts +8 -0
- package/dist/validate/report.d.ts.map +1 -0
- package/dist/validate/report.js +79 -0
- package/dist/validate/report.js.map +1 -0
- package/dist/validate/run.js +15 -15
- package/dist/validate/run.js.map +1 -1
- package/dist/validate.test.js +7 -6
- package/dist/validate.test.js.map +1 -1
- package/dist/version.d.ts +3 -3
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +14 -8
- package/dist/version.js.map +1 -1
- package/dist/version.test.js +11 -11
- package/dist/version.test.js.map +1 -1
- package/package.json +11 -6
- package/src/beacon.ts +20 -0
- package/src/eip-1967-type.ts +35 -0
- package/src/eip-1967.ts +16 -12
- package/src/impl-address.ts +76 -0
- package/src/impl-store.ts +2 -0
- package/src/index.ts +18 -1
- package/src/manifest.ts +2 -2
- package/src/provider.ts +16 -0
- package/src/proxy-kind.ts +59 -0
- package/src/src-decoder.test.ts +0 -2
- package/src/standalone.test.ts +40 -0
- package/src/standalone.ts +41 -0
- package/src/storage/index.ts +23 -20
- package/src/storage/report.ts +10 -5
- package/src/stub-provider.ts +0 -1
- package/src/usage-error.ts +68 -0
- package/src/utils/address.ts +16 -0
- package/src/utils/log.ts +23 -2
- package/src/utils/make-non-enumerable.ts +1 -2
- package/src/validate/error.ts +5 -69
- package/src/validate/index.ts +6 -1
- package/src/validate/overrides.ts +5 -17
- package/src/validate/query.ts +38 -9
- package/src/validate/report.ts +78 -0
- package/src/validate.test.ts +1 -0
- package/src/version.ts +14 -6
- package/CHANGELOG.md +0 -106
- package/dist/set-proxy-kind.d.ts +0 -5
- package/dist/set-proxy-kind.d.ts.map +0 -1
- package/dist/set-proxy-kind.js +0 -25
- package/dist/set-proxy-kind.js.map +0 -1
- package/src/set-proxy-kind.ts +0 -27
package/dist/validate/query.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ValidationRunData, ValidationError } from './run';
|
|
|
3
3
|
import { StorageLayout } from '../storage/layout';
|
|
4
4
|
import { ValidationOptions } from './overrides';
|
|
5
5
|
import { ValidationData } from './data';
|
|
6
|
+
import { ProxyDeployment } from '../manifest';
|
|
6
7
|
export declare function assertUpgradeSafe(data: ValidationData, version: Version, opts: ValidationOptions): void;
|
|
7
8
|
export declare function getContractVersion(runData: ValidationRunData, contractName: string): Version;
|
|
8
9
|
export declare function getContractNameAndRunValidation(data: ValidationData, version: Version): [string, ValidationRunData];
|
|
@@ -10,6 +11,7 @@ export declare function getStorageLayout(data: ValidationData, version: Version)
|
|
|
10
11
|
export declare function unfoldStorageLayout(runData: ValidationRunData, contractName: string): StorageLayout;
|
|
11
12
|
export declare function findVersionWithoutMetadataMatches(data: ValidationData, versionWithoutMetadata: string): Generator<[string, ValidationRunData]>;
|
|
12
13
|
export declare function getUnlinkedBytecode(data: ValidationData, bytecode: string): string;
|
|
13
|
-
export declare function getErrors(data: ValidationData, version: Version): ValidationError[];
|
|
14
|
+
export declare function getErrors(data: ValidationData, version: Version, opts?: ValidationOptions): ValidationError[];
|
|
14
15
|
export declare function isUpgradeSafe(data: ValidationData, version: Version): boolean;
|
|
16
|
+
export declare function inferProxyKind(data: ValidationData, version: Version): ProxyDeployment['kind'];
|
|
15
17
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,cAAc,EAA2B,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,cAAc,EAA2B,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CASvG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAM5F;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAqBnH;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAItF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,CAQnG;AAED,wBAAiB,iCAAiC,CAChD,IAAI,EAAE,cAAc,EACpB,sBAAsB,EAAE,MAAM,GAC7B,SAAS,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAUxC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBlF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,iBAAsB,GAAG,eAAe,EAAE,CAiBjH;AAoBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAG7E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAS9F"}
|
package/dist/validate/query.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isUpgradeSafe = exports.getErrors = exports.getUnlinkedBytecode = exports.findVersionWithoutMetadataMatches = exports.unfoldStorageLayout = exports.getStorageLayout = exports.getContractNameAndRunValidation = exports.getContractVersion = exports.assertUpgradeSafe = void 0;
|
|
3
|
+
exports.inferProxyKind = exports.isUpgradeSafe = exports.getErrors = exports.getUnlinkedBytecode = exports.findVersionWithoutMetadataMatches = exports.unfoldStorageLayout = exports.getStorageLayout = exports.getContractNameAndRunValidation = exports.getContractVersion = exports.assertUpgradeSafe = void 0;
|
|
4
4
|
const version_1 = require("../version");
|
|
5
5
|
const link_refs_1 = require("../link-refs");
|
|
6
6
|
const overrides_1 = require("./overrides");
|
|
7
7
|
const error_1 = require("./error");
|
|
8
8
|
const data_1 = require("./data");
|
|
9
|
+
const upgradeToSignature = 'upgradeTo(address)';
|
|
9
10
|
function assertUpgradeSafe(data, version, opts) {
|
|
10
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
11
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
11
12
|
const [contractName] = getContractNameAndRunValidation(dataV3, version);
|
|
12
|
-
|
|
13
|
-
errors = overrides_1.processExceptions(contractName, errors, opts);
|
|
13
|
+
const errors = getErrors(dataV3, version, opts);
|
|
14
14
|
if (errors.length > 0) {
|
|
15
15
|
throw new error_1.ValidationErrors(contractName, errors);
|
|
16
16
|
}
|
|
@@ -25,7 +25,7 @@ function getContractVersion(runData, contractName) {
|
|
|
25
25
|
}
|
|
26
26
|
exports.getContractVersion = getContractVersion;
|
|
27
27
|
function getContractNameAndRunValidation(data, version) {
|
|
28
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
28
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
29
29
|
let runValidation;
|
|
30
30
|
let contractName;
|
|
31
31
|
for (const validation of dataV3.log) {
|
|
@@ -42,7 +42,7 @@ function getContractNameAndRunValidation(data, version) {
|
|
|
42
42
|
}
|
|
43
43
|
exports.getContractNameAndRunValidation = getContractNameAndRunValidation;
|
|
44
44
|
function getStorageLayout(data, version) {
|
|
45
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
45
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
46
46
|
const [contractName, runValidation] = getContractNameAndRunValidation(dataV3, version);
|
|
47
47
|
return unfoldStorageLayout(runValidation, contractName);
|
|
48
48
|
}
|
|
@@ -59,7 +59,7 @@ function unfoldStorageLayout(runData, contractName) {
|
|
|
59
59
|
exports.unfoldStorageLayout = unfoldStorageLayout;
|
|
60
60
|
function* findVersionWithoutMetadataMatches(data, versionWithoutMetadata) {
|
|
61
61
|
var _a;
|
|
62
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
62
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
63
63
|
for (const validation of dataV3.log) {
|
|
64
64
|
for (const contractName in validation) {
|
|
65
65
|
if (((_a = validation[contractName].version) === null || _a === void 0 ? void 0 : _a.withoutMetadata) === versionWithoutMetadata) {
|
|
@@ -71,13 +71,13 @@ function* findVersionWithoutMetadataMatches(data, versionWithoutMetadata) {
|
|
|
71
71
|
exports.findVersionWithoutMetadataMatches = findVersionWithoutMetadataMatches;
|
|
72
72
|
function getUnlinkedBytecode(data, bytecode) {
|
|
73
73
|
var _a;
|
|
74
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
74
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
75
75
|
for (const validation of dataV3.log) {
|
|
76
76
|
const linkableContracts = Object.keys(validation).filter(name => validation[name].linkReferences.length > 0);
|
|
77
77
|
for (const name of linkableContracts) {
|
|
78
78
|
const { linkReferences } = validation[name];
|
|
79
|
-
const unlinkedBytecode = link_refs_1.unlinkBytecode(bytecode, linkReferences);
|
|
80
|
-
const version = version_1.getVersion(unlinkedBytecode);
|
|
79
|
+
const unlinkedBytecode = (0, link_refs_1.unlinkBytecode)(bytecode, linkReferences);
|
|
80
|
+
const version = (0, version_1.getVersion)(unlinkedBytecode);
|
|
81
81
|
if (((_a = validation[name].version) === null || _a === void 0 ? void 0 : _a.withMetadata) === version.withMetadata) {
|
|
82
82
|
return unlinkedBytecode;
|
|
83
83
|
}
|
|
@@ -86,26 +86,52 @@ function getUnlinkedBytecode(data, bytecode) {
|
|
|
86
86
|
return bytecode;
|
|
87
87
|
}
|
|
88
88
|
exports.getUnlinkedBytecode = getUnlinkedBytecode;
|
|
89
|
-
function getErrors(data, version) {
|
|
90
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
89
|
+
function getErrors(data, version, opts = {}) {
|
|
90
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
91
91
|
const [contractName, runValidation] = getContractNameAndRunValidation(dataV3, version);
|
|
92
92
|
const c = runValidation[contractName];
|
|
93
|
-
const errors =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const selfAndInheritedMethods = c.methods.concat(...c.inherit.map(name => runValidation[name].methods));
|
|
97
|
-
if (!selfAndInheritedMethods.includes('upgradeTo(address)')) {
|
|
93
|
+
const errors = getUsedContractsAndLibraries(contractName, runValidation).flatMap(name => runValidation[name].errors);
|
|
94
|
+
const selfAndInheritedMethods = getAllMethods(runValidation, contractName);
|
|
95
|
+
if (!selfAndInheritedMethods.includes(upgradeToSignature)) {
|
|
98
96
|
errors.push({
|
|
99
97
|
src: c.src,
|
|
100
98
|
kind: 'missing-public-upgradeto',
|
|
101
99
|
});
|
|
102
100
|
}
|
|
103
|
-
return errors;
|
|
101
|
+
return (0, overrides_1.processExceptions)(contractName, errors, opts);
|
|
104
102
|
}
|
|
105
103
|
exports.getErrors = getErrors;
|
|
104
|
+
function getAllMethods(runValidation, contractName) {
|
|
105
|
+
const c = runValidation[contractName];
|
|
106
|
+
return c.methods.concat(...c.inherit.map(name => runValidation[name].methods));
|
|
107
|
+
}
|
|
108
|
+
function getUsedContractsAndLibraries(contractName, runValidation) {
|
|
109
|
+
const c = runValidation[contractName];
|
|
110
|
+
// Add current contract and all of its parents
|
|
111
|
+
const res = new Set([contractName, ...c.inherit]);
|
|
112
|
+
// Add used libraries transitively until no more are found
|
|
113
|
+
for (const c1 of res) {
|
|
114
|
+
for (const c2 of runValidation[c1].libraries) {
|
|
115
|
+
res.add(c2);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return Array.from(res);
|
|
119
|
+
}
|
|
106
120
|
function isUpgradeSafe(data, version) {
|
|
107
|
-
const dataV3 = data_1.normalizeValidationData(data);
|
|
121
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
108
122
|
return getErrors(dataV3, version).length == 0;
|
|
109
123
|
}
|
|
110
124
|
exports.isUpgradeSafe = isUpgradeSafe;
|
|
125
|
+
function inferProxyKind(data, version) {
|
|
126
|
+
const dataV3 = (0, data_1.normalizeValidationData)(data);
|
|
127
|
+
const [contractName, runValidation] = getContractNameAndRunValidation(dataV3, version);
|
|
128
|
+
const methods = getAllMethods(runValidation, contractName);
|
|
129
|
+
if (methods.includes(upgradeToSignature)) {
|
|
130
|
+
return 'uups';
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
return 'transparent';
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.inferProxyKind = inferProxyKind;
|
|
111
137
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":";;;AAAA,wCAAiD;AAGjD,4CAA8C;AAC9C,2CAAmE;AACnE,mCAA2C;AAC3C,iCAAiE;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const ava_1 = __importDefault(require("ava"));
|
|
7
7
|
const query_1 = require("./query");
|
|
8
8
|
const version_1 = require("../version");
|
|
9
|
-
ava_1.default('getUnlinkedBytecode', t => {
|
|
9
|
+
(0, ava_1.default)('getUnlinkedBytecode', t => {
|
|
10
10
|
const unlinkedBytecode = '0x12__$5ae0c2211b657f8a7ca51e0b14f2a8333d$__78';
|
|
11
11
|
const linkedBytecode = '0x12456456456456456456456456456456456456456478';
|
|
12
12
|
const validation = {
|
|
13
13
|
B: {
|
|
14
|
-
version: version_1.getVersion(unlinkedBytecode),
|
|
14
|
+
version: (0, version_1.getVersion)(unlinkedBytecode),
|
|
15
15
|
linkReferences: [
|
|
16
16
|
{
|
|
17
17
|
src: '',
|
|
@@ -30,7 +30,7 @@ ava_1.default('getUnlinkedBytecode', t => {
|
|
|
30
30
|
],
|
|
31
31
|
},
|
|
32
32
|
A: {
|
|
33
|
-
version: version_1.getVersion(unlinkedBytecode),
|
|
33
|
+
version: (0, version_1.getVersion)(unlinkedBytecode),
|
|
34
34
|
linkReferences: [
|
|
35
35
|
{
|
|
36
36
|
src: '',
|
|
@@ -42,7 +42,7 @@ ava_1.default('getUnlinkedBytecode', t => {
|
|
|
42
42
|
],
|
|
43
43
|
},
|
|
44
44
|
};
|
|
45
|
-
const recovered = query_1.getUnlinkedBytecode(validation, linkedBytecode);
|
|
45
|
+
const recovered = (0, query_1.getUnlinkedBytecode)(validation, linkedBytecode);
|
|
46
46
|
t.is(recovered, unlinkedBytecode);
|
|
47
47
|
});
|
|
48
48
|
//# sourceMappingURL=query.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.test.js","sourceRoot":"","sources":["../../src/validate/query.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAGvB,mCAA8C;AAC9C,wCAAwC;AAExC,aAAI,
|
|
1
|
+
{"version":3,"file":"query.test.js","sourceRoot":"","sources":["../../src/validate/query.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAGvB,mCAA8C;AAC9C,wCAAwC;AAExC,IAAA,aAAI,EAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE;IAC9B,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;IAC1E,MAAM,cAAc,GAAG,gDAAgD,CAAC;IAExE,MAAM,UAAU,GAAgD;QAC9D,CAAC,EAAE;YACD,OAAO,EAAE,IAAA,oBAAU,EAAC,gBAAgB,CAAC;YACrC,cAAc,EAAE;gBACd;oBACE,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,WAAW,EAAE,0CAA0C;iBACxD;gBACD;oBACE,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,WAAW,EAAE,0CAA0C;iBACxD;aACF;SACF;QACD,CAAC,EAAE;YACD,OAAO,EAAE,IAAA,oBAAU,EAAC,gBAAgB,CAAC;YACrC,cAAc,EAAE;gBACd;oBACE,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,EAAE;oBACV,WAAW,EAAE,0CAA0C;iBACxD;aACF;SACF;KACF,CAAC;IAEF,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,UAA+B,EAAE,cAAc,CAAC,CAAC;IAEvF,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidationError } from './run';
|
|
2
|
+
export declare class UpgradeableContractErrorReport {
|
|
3
|
+
readonly errors: ValidationError[];
|
|
4
|
+
constructor(errors: ValidationError[]);
|
|
5
|
+
get ok(): boolean;
|
|
6
|
+
explain(color?: boolean): string;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/validate/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,qBAAa,8BAA8B;IAC7B,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE;gBAAzB,MAAM,EAAE,eAAe,EAAE;IAE9C,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;CAG9B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UpgradeableContractErrorReport = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class UpgradeableContractErrorReport {
|
|
9
|
+
constructor(errors) {
|
|
10
|
+
this.errors = errors;
|
|
11
|
+
}
|
|
12
|
+
get ok() {
|
|
13
|
+
return this.errors.length === 0;
|
|
14
|
+
}
|
|
15
|
+
explain(color = true) {
|
|
16
|
+
return this.errors.map(e => describeError(e, color)).join('\n\n');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.UpgradeableContractErrorReport = UpgradeableContractErrorReport;
|
|
20
|
+
const errorInfo = {
|
|
21
|
+
constructor: {
|
|
22
|
+
msg: e => `Contract \`${e.contract}\` has a constructor`,
|
|
23
|
+
hint: () => 'Define an initializer instead',
|
|
24
|
+
link: 'https://zpl.in/upgrades/error-001',
|
|
25
|
+
},
|
|
26
|
+
delegatecall: {
|
|
27
|
+
msg: () => `Use of delegatecall is not allowed`,
|
|
28
|
+
link: 'https://zpl.in/upgrades/error-002',
|
|
29
|
+
},
|
|
30
|
+
selfdestruct: {
|
|
31
|
+
msg: () => `Use of selfdestruct is not allowed`,
|
|
32
|
+
link: 'https://zpl.in/upgrades/error-003',
|
|
33
|
+
},
|
|
34
|
+
'state-variable-assignment': {
|
|
35
|
+
msg: e => `Variable \`${e.name}\` is assigned an initial value`,
|
|
36
|
+
hint: () => 'Move the assignment to the initializer',
|
|
37
|
+
link: 'https://zpl.in/upgrades/error-004',
|
|
38
|
+
},
|
|
39
|
+
'state-variable-immutable': {
|
|
40
|
+
msg: e => `Variable \`${e.name}\` is immutable`,
|
|
41
|
+
hint: () => `Use a constant or mutable variable instead`,
|
|
42
|
+
link: 'https://zpl.in/upgrades/error-005',
|
|
43
|
+
},
|
|
44
|
+
'external-library-linking': {
|
|
45
|
+
msg: e => `Linking external libraries like \`${e.name}\` is not yet supported`,
|
|
46
|
+
hint: () => `Use libraries with internal functions only, or skip this check with the \`unsafeAllowLinkedLibraries\` flag \n` +
|
|
47
|
+
` if you have manually checked that the libraries are upgrade safe`,
|
|
48
|
+
link: 'https://zpl.in/upgrades/error-006',
|
|
49
|
+
},
|
|
50
|
+
'struct-definition': {
|
|
51
|
+
msg: e => `Structs like \`${e.name}\` are supported in the latest version of the plugin`,
|
|
52
|
+
hint: () => `Update your dependency and run again`,
|
|
53
|
+
},
|
|
54
|
+
'enum-definition': {
|
|
55
|
+
msg: e => `Enums like \`${e.name}\` are supported in the latest version of the plugin`,
|
|
56
|
+
hint: () => `Update your dependency and run again`,
|
|
57
|
+
},
|
|
58
|
+
'missing-public-upgradeto': {
|
|
59
|
+
msg: () => `Implementation is missing a public \`upgradeTo(address)\` function`,
|
|
60
|
+
hint: () => `Inherit UUPSUpgradeable to include this function in your contract\n` +
|
|
61
|
+
` @openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol`,
|
|
62
|
+
link: 'https://zpl.in/upgrades/error-008',
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
function describeError(e, color = true) {
|
|
66
|
+
var _a;
|
|
67
|
+
const chalk = new chalk_1.default.Instance({ level: color && chalk_1.default.supportsColor ? chalk_1.default.supportsColor.level : 0 });
|
|
68
|
+
const info = errorInfo[e.kind];
|
|
69
|
+
const log = [chalk.bold(e.src) + ': ' + info.msg(e)];
|
|
70
|
+
const hint = (_a = info.hint) === null || _a === void 0 ? void 0 : _a.call(info, e);
|
|
71
|
+
if (hint) {
|
|
72
|
+
log.push(hint);
|
|
73
|
+
}
|
|
74
|
+
if (info.link) {
|
|
75
|
+
log.push(chalk.dim(info.link));
|
|
76
|
+
}
|
|
77
|
+
return log.join('\n ');
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/validate/report.ts"],"names":[],"mappings":"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"}
|
package/dist/validate/run.js
CHANGED
|
@@ -61,12 +61,12 @@ function validate(solcOutput, decodeSrc) {
|
|
|
61
61
|
const fromId = {};
|
|
62
62
|
const inheritIds = {};
|
|
63
63
|
const libraryIds = {};
|
|
64
|
-
const deref = ast_dereferencer_1.astDereferencer(solcOutput);
|
|
64
|
+
const deref = (0, ast_dereferencer_1.astDereferencer)(solcOutput);
|
|
65
65
|
for (const source in solcOutput.contracts) {
|
|
66
66
|
for (const contractName in solcOutput.contracts[source]) {
|
|
67
67
|
const bytecode = solcOutput.contracts[source][contractName].evm.bytecode;
|
|
68
|
-
const version = bytecode.object === '' ? undefined : version_1.getVersion(bytecode.object);
|
|
69
|
-
const linkReferences = link_refs_1.extractLinkReferences(bytecode);
|
|
68
|
+
const version = bytecode.object === '' ? undefined : (0, version_1.getVersion)(bytecode.object);
|
|
69
|
+
const linkReferences = (0, link_refs_1.extractLinkReferences)(bytecode);
|
|
70
70
|
validation[contractName] = {
|
|
71
71
|
src: contractName,
|
|
72
72
|
version,
|
|
@@ -81,7 +81,7 @@ function validate(solcOutput, decodeSrc) {
|
|
|
81
81
|
},
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
for (const contractDef of utils_1.findAll('ContractDefinition', solcOutput.sources[source].ast)) {
|
|
84
|
+
for (const contractDef of (0, utils_1.findAll)('ContractDefinition', solcOutput.sources[source].ast)) {
|
|
85
85
|
fromId[contractDef.id] = contractDef.name;
|
|
86
86
|
// May be undefined in case of duplicate contract names in Truffle
|
|
87
87
|
const bytecode = (_a = solcOutput.contracts[source][contractDef.name]) === null || _a === void 0 ? void 0 : _a.evm.bytecode;
|
|
@@ -97,10 +97,10 @@ function validate(solcOutput, decodeSrc) {
|
|
|
97
97
|
// https://github.com/OpenZeppelin/openzeppelin-upgrades/issues/52
|
|
98
98
|
...getLinkingErrors(contractDef, bytecode),
|
|
99
99
|
];
|
|
100
|
-
validation[contractDef.name].layout = extract_1.extractStorageLayout(contractDef, decodeSrc, deref);
|
|
101
|
-
validation[contractDef.name].methods = [...utils_1.findAll('FunctionDefinition', contractDef)]
|
|
100
|
+
validation[contractDef.name].layout = (0, extract_1.extractStorageLayout)(contractDef, decodeSrc, deref);
|
|
101
|
+
validation[contractDef.name].methods = [...(0, utils_1.findAll)('FunctionDefinition', contractDef)]
|
|
102
102
|
.filter(fnDef => ['external', 'public'].includes(fnDef.visibility))
|
|
103
|
-
.map(fnDef => function_1.getFunctionSignature(fnDef, deref));
|
|
103
|
+
.map(fnDef => (0, function_1.getFunctionSignature)(fnDef, deref));
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -115,7 +115,7 @@ function validate(solcOutput, decodeSrc) {
|
|
|
115
115
|
exports.validate = validate;
|
|
116
116
|
function* getConstructorErrors(contractDef, decodeSrc) {
|
|
117
117
|
var _a, _b, _c;
|
|
118
|
-
for (const fnDef of utils_1.findAll('FunctionDefinition', contractDef, node => skipCheck('constructor', node))) {
|
|
118
|
+
for (const fnDef of (0, utils_1.findAll)('FunctionDefinition', contractDef, node => skipCheck('constructor', node))) {
|
|
119
119
|
if (fnDef.kind === 'constructor' && (((_c = (_b = (_a = fnDef.body) === null || _a === void 0 ? void 0 : _a.statements) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0 || fnDef.modifiers.length > 0)) {
|
|
120
120
|
yield {
|
|
121
121
|
kind: 'constructor',
|
|
@@ -127,7 +127,7 @@ function* getConstructorErrors(contractDef, decodeSrc) {
|
|
|
127
127
|
}
|
|
128
128
|
function* getOpcodeErrors(contractDef, decodeSrc) {
|
|
129
129
|
var _a, _b;
|
|
130
|
-
for (const fnCall of utils_1.findAll('FunctionCall', contractDef, node => skipCheck('delegatecall', node))) {
|
|
130
|
+
for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractDef, node => skipCheck('delegatecall', node))) {
|
|
131
131
|
const fn = fnCall.expression;
|
|
132
132
|
if ((_a = fn.typeDescriptions.typeIdentifier) === null || _a === void 0 ? void 0 : _a.match(/^t_function_baredelegatecall_/)) {
|
|
133
133
|
yield {
|
|
@@ -136,7 +136,7 @@ function* getOpcodeErrors(contractDef, decodeSrc) {
|
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
for (const fnCall of utils_1.findAll('FunctionCall', contractDef, node => skipCheck('selfdestruct', node))) {
|
|
139
|
+
for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractDef, node => skipCheck('selfdestruct', node))) {
|
|
140
140
|
const fn = fnCall.expression;
|
|
141
141
|
if ((_b = fn.typeDescriptions.typeIdentifier) === null || _b === void 0 ? void 0 : _b.match(/^t_function_selfdestruct_/)) {
|
|
142
142
|
yield {
|
|
@@ -148,8 +148,8 @@ function* getOpcodeErrors(contractDef, decodeSrc) {
|
|
|
148
148
|
}
|
|
149
149
|
function* getStateVariableErrors(contractDef, decodeSrc) {
|
|
150
150
|
for (const varDecl of contractDef.nodes) {
|
|
151
|
-
if (utils_1.isNodeType('VariableDeclaration', varDecl)) {
|
|
152
|
-
if (!varDecl.constant && !is_nullish_1.isNullish(varDecl.value)) {
|
|
151
|
+
if ((0, utils_1.isNodeType)('VariableDeclaration', varDecl)) {
|
|
152
|
+
if (!varDecl.constant && !(0, is_nullish_1.isNullish)(varDecl.value)) {
|
|
153
153
|
if (!skipCheck('state-variable-assignment', contractDef) && !skipCheck('state-variable-assignment', varDecl)) {
|
|
154
154
|
yield {
|
|
155
155
|
kind: 'state-variable-assignment',
|
|
@@ -171,11 +171,11 @@ function* getStateVariableErrors(contractDef, decodeSrc) {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
function getReferencedLibraryIds(contractDef) {
|
|
174
|
-
const implicitUsage = [...utils_1.findAll('UsingForDirective', contractDef)].map(usingForDirective => usingForDirective.libraryName.referencedDeclaration);
|
|
175
|
-
const explicitUsage = [...utils_1.findAll('Identifier', contractDef)]
|
|
174
|
+
const implicitUsage = [...(0, utils_1.findAll)('UsingForDirective', contractDef)].map(usingForDirective => usingForDirective.libraryName.referencedDeclaration);
|
|
175
|
+
const explicitUsage = [...(0, utils_1.findAll)('Identifier', contractDef)]
|
|
176
176
|
.filter(identifier => { var _a; return (_a = identifier.typeDescriptions.typeString) === null || _a === void 0 ? void 0 : _a.match(/^type\(library/); })
|
|
177
177
|
.map(identifier => {
|
|
178
|
-
if (is_nullish_1.isNullish(identifier.referencedDeclaration)) {
|
|
178
|
+
if ((0, is_nullish_1.isNullish)(identifier.referencedDeclaration)) {
|
|
179
179
|
throw new Error('Broken invariant: Identifier.referencedDeclaration should not be null');
|
|
180
180
|
}
|
|
181
181
|
return identifier.referencedDeclaration;
|
package/dist/validate/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":";;;AACA,8CAAyD;AAKzD,0DAAsD;AACtD,oDAAgD;AAChD,gDAAyD;AACzD,wCAAiD;AACjD,4CAAoE;AACpE,gDAA0D;AAgB1D,MAAM,UAAU,GAAG;IACjB,2BAA2B;IAC3B,0BAA0B;IAC1B,0BAA0B;IAC1B,mBAAmB;IACnB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,cAAc;IACd,0BAA0B;CAClB,CAAC;AAoCX,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAU,EAAE,IAAY;IACxC,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,EAAE;QACX,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,KAAK,CAAC;SACb;aAAM;YACL,MAAM;SACP;KACF;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAU;;IAC5B,IAAI,eAAe,IAAI,IAAI,EAAE;QAC3B,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,mCAAI,EAAE,CAAC;QAEzG,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,CAC9B,iFAAiF,EACjF,GAAG,CACJ,EAAE;YACD,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,0BAA0B,EAAE;gBACpF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1C;SACF;QAED,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnB,IAAI,CAAE,UAAgC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,8DAA8D,GAAG,EAAE,CAAC,CAAC;aACtF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACf;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,IAAU;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,QAAQ,CAAC,UAAsB,EAAE,SAAqB;;IACpE,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,MAAM,UAAU,GAA6B,EAAE,CAAC;IAEhD,MAAM,KAAK,GAAG,kCAAe,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.test.js
CHANGED
|
@@ -22,8 +22,8 @@ test.before(async (t) => {
|
|
|
22
22
|
}
|
|
23
23
|
const solcOutput = buildInfo.output;
|
|
24
24
|
const solcInput = buildInfo.input;
|
|
25
|
-
const decodeSrc = src_decoder_1.solcInputOutputDecoder(solcInput, solcOutput);
|
|
26
|
-
Object.assign(t.context.validation, validate_1.validate(solcOutput, decodeSrc));
|
|
25
|
+
const decodeSrc = (0, src_decoder_1.solcInputOutputDecoder)(solcInput, solcOutput);
|
|
26
|
+
Object.assign(t.context.validation, (0, validate_1.validate)(solcOutput, decodeSrc));
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
function testValid(name, kind, valid) {
|
|
@@ -34,8 +34,8 @@ function testOverride(name, kind, opts, valid) {
|
|
|
34
34
|
const describeOpts = optKeys.length > 0 ? '(' + optKeys.join(', ') + ')' : '';
|
|
35
35
|
const testName = [valid ? 'accepts' : 'rejects', kind, name, describeOpts].join(' ');
|
|
36
36
|
test(testName, t => {
|
|
37
|
-
const version = validate_1.getContractVersion(t.context.validation, name);
|
|
38
|
-
const assertUpgSafe = () => validate_1.assertUpgradeSafe([t.context.validation], version, { kind, ...opts });
|
|
37
|
+
const version = (0, validate_1.getContractVersion)(t.context.validation, name);
|
|
38
|
+
const assertUpgSafe = () => (0, validate_1.assertUpgradeSafe)([t.context.validation], version, { kind, ...opts });
|
|
39
39
|
if (valid) {
|
|
40
40
|
t.notThrows(assertUpgSafe);
|
|
41
41
|
}
|
|
@@ -66,8 +66,8 @@ testValid('UsesExplicitUnsafeExternalLibrary', 'transparent', false);
|
|
|
66
66
|
testValid('UsesImplicitSafeExternalLibrary', 'transparent', false);
|
|
67
67
|
testValid('UsesExplicitSafeExternalLibrary', 'transparent', false);
|
|
68
68
|
test('inherited storage', t => {
|
|
69
|
-
const version = validate_1.getContractVersion(t.context.validation, 'StorageInheritChild');
|
|
70
|
-
const layout = validate_1.getStorageLayout([t.context.validation], version);
|
|
69
|
+
const version = (0, validate_1.getContractVersion)(t.context.validation, 'StorageInheritChild');
|
|
70
|
+
const layout = (0, validate_1.getStorageLayout)([t.context.validation], version);
|
|
71
71
|
t.is(layout.storage.length, 8);
|
|
72
72
|
for (let i = 0; i < layout.storage.length; i++) {
|
|
73
73
|
t.is(layout.storage[i].label, `v${i}`);
|
|
@@ -113,4 +113,5 @@ testValid('UsesExplicitSafeInternalLibraryNatspec', 'transparent', true);
|
|
|
113
113
|
testValid('UsesExplicitSafeExternalLibraryNatspec', 'transparent', true);
|
|
114
114
|
testValid('UsesExplicitUnsafeInternalLibraryNatspec', 'transparent', true);
|
|
115
115
|
testValid('UsesExplicitUnsafeExternalLibraryNatspec', 'transparent', true);
|
|
116
|
+
testValid('TransitiveLibraryIsUnsafe', 'transparent', false);
|
|
116
117
|
//# sourceMappingURL=validate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../src/validate.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAA2C;AAC3C,qCAAoC;AAEpC,yCAOoB;AACpB,+CAAuD;AAMvD,MAAM,IAAI,GAAG,aAA+B,CAAC;AAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;IACpB,MAAM,SAAS,GAAG;QAChB,oDAAoD;QACpD,sEAAsE;QACtE,+CAA+C;KAChD,CAAC;IAEF,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAmB,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;SAClE;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;QAClC,MAAM,SAAS,GAAG,oCAAsB,
|
|
1
|
+
{"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../src/validate.test.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface Version {
|
|
|
3
3
|
withoutMetadata: string;
|
|
4
4
|
linkedWithoutMetadata: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function getVersion(bytecode: string, linkedBytecode?: string): Version;
|
|
7
|
-
export declare function hashBytecode(bytecode: string): string;
|
|
8
|
-
export declare function hashBytecodeWithoutMetadata(bytecode: string): string;
|
|
6
|
+
export declare function getVersion(bytecode: string, linkedBytecode?: string, constructorArgs?: string): Version;
|
|
7
|
+
export declare function hashBytecode(bytecode: string, constructorArgs?: string): string;
|
|
8
|
+
export declare function hashBytecodeWithoutMetadata(bytecode: string, constructorArgs?: string): string;
|
|
9
9
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,eAAe,SAAK,GAAG,OAAO,CAUnG;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,SAAK,GAAG,MAAM,CAsB3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,SAAK,GAAG,MAAM,CAE1F"}
|
package/dist/version.js
CHANGED
|
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.hashBytecodeWithoutMetadata = exports.hashBytecode = exports.getVersion = void 0;
|
|
7
7
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
8
8
|
const cbor_1 = __importDefault(require("cbor"));
|
|
9
|
-
function getVersion(bytecode, linkedBytecode) {
|
|
9
|
+
function getVersion(bytecode, linkedBytecode, constructorArgs = '') {
|
|
10
10
|
if (bytecode !== '') {
|
|
11
11
|
return {
|
|
12
12
|
withMetadata: hashBytecode(bytecode),
|
|
13
13
|
withoutMetadata: hashBytecodeWithoutMetadata(bytecode),
|
|
14
|
-
linkedWithoutMetadata: hashBytecodeWithoutMetadata(linkedBytecode !== null && linkedBytecode !== void 0 ? linkedBytecode : bytecode),
|
|
14
|
+
linkedWithoutMetadata: hashBytecodeWithoutMetadata(linkedBytecode !== null && linkedBytecode !== void 0 ? linkedBytecode : bytecode, constructorArgs),
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
@@ -19,22 +19,28 @@ function getVersion(bytecode, linkedBytecode) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.getVersion = getVersion;
|
|
22
|
-
function hashBytecode(bytecode) {
|
|
22
|
+
function hashBytecode(bytecode, constructorArgs = '') {
|
|
23
23
|
bytecode = bytecode
|
|
24
24
|
.replace(/__\$([0-9a-fA-F]{34})\$__/g, (_, placeholder) => `000${placeholder}000`)
|
|
25
|
-
.replace(/__\w{36}__/g, placeholder => ethereumjs_util_1.keccak256(Buffer.from(placeholder)).toString('hex', 0, 20));
|
|
25
|
+
.replace(/__\w{36}__/g, placeholder => (0, ethereumjs_util_1.keccak256)(Buffer.from(placeholder)).toString('hex', 0, 20));
|
|
26
26
|
// Fail if bytecode is still not valid hex after transformations above.
|
|
27
27
|
// Buffer.from silently truncates at the first non-hex character.
|
|
28
28
|
// NOTE: Some bytecode seems to have odd length, so we cannot do ([0-9a-fA-F]{2})*
|
|
29
29
|
if (!/^(0x)?[0-9a-fA-F]*$/.test(bytecode)) {
|
|
30
30
|
throw new Error('Bytecode is not a valid hex string');
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if (!/^(0x)?[0-9a-fA-F]*$/.test(constructorArgs)) {
|
|
33
|
+
throw new Error('Constructor arguments are not a valid hex string');
|
|
34
|
+
}
|
|
35
|
+
const buf = Buffer.concat([
|
|
36
|
+
Buffer.from(bytecode.replace(/^0x/, ''), 'hex'),
|
|
37
|
+
Buffer.from(constructorArgs.replace(/^0x/, ''), 'hex'),
|
|
38
|
+
]);
|
|
39
|
+
return (0, ethereumjs_util_1.keccak256)(buf).toString('hex');
|
|
34
40
|
}
|
|
35
41
|
exports.hashBytecode = hashBytecode;
|
|
36
|
-
function hashBytecodeWithoutMetadata(bytecode) {
|
|
37
|
-
return hashBytecode(trimBytecodeMetadata(bytecode));
|
|
42
|
+
function hashBytecodeWithoutMetadata(bytecode, constructorArgs = '') {
|
|
43
|
+
return hashBytecode(trimBytecodeMetadata(bytecode), constructorArgs);
|
|
38
44
|
}
|
|
39
45
|
exports.hashBytecodeWithoutMetadata = hashBytecodeWithoutMetadata;
|
|
40
46
|
function trimBytecodeMetadata(bytecode) {
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA4C;AAC5C,gDAAwB;AAQxB,SAAgB,UAAU,CAAC,QAAgB,EAAE,cAAuB;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
|