@openzeppelin/upgrades-core 1.35.1 → 1.37.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/CHANGELOG.md +10 -0
- package/dist/cli/cli.test.js +258 -0
- package/dist/cli/cli.test.js.map +1 -1
- package/dist/cli/validate/build-info-file.d.ts +4 -0
- package/dist/cli/validate/build-info-file.d.ts.map +1 -1
- package/dist/cli/validate/build-info-file.js +7 -2
- package/dist/cli/validate/build-info-file.js.map +1 -1
- package/dist/cli/validate/contract-report.d.ts +6 -5
- package/dist/cli/validate/contract-report.d.ts.map +1 -1
- package/dist/cli/validate/contract-report.js +54 -13
- package/dist/cli/validate/contract-report.js.map +1 -1
- package/dist/cli/validate/default-exclude.d.ts +2 -0
- package/dist/cli/validate/default-exclude.d.ts.map +1 -0
- package/dist/cli/validate/default-exclude.js +6 -0
- package/dist/cli/validate/default-exclude.js.map +1 -0
- package/dist/cli/validate/find-contract.d.ts +7 -2
- package/dist/cli/validate/find-contract.d.ts.map +1 -1
- package/dist/cli/validate/find-contract.js +32 -4
- package/dist/cli/validate/find-contract.js.map +1 -1
- package/dist/cli/validate/upgradeability-assessment.d.ts +2 -1
- package/dist/cli/validate/upgradeability-assessment.d.ts.map +1 -1
- package/dist/cli/validate/upgradeability-assessment.js +2 -2
- package/dist/cli/validate/upgradeability-assessment.js.map +1 -1
- package/dist/cli/validate/validate-upgrade-safety.d.ts +12 -3
- package/dist/cli/validate/validate-upgrade-safety.d.ts.map +1 -1
- package/dist/cli/validate/validate-upgrade-safety.js +28 -7
- package/dist/cli/validate/validate-upgrade-safety.js.map +1 -1
- package/dist/cli/validate/validate-upgrade-safety.test.js +1 -1
- package/dist/cli/validate/validations.d.ts +1 -0
- package/dist/cli/validate/validations.d.ts.map +1 -1
- package/dist/cli/validate/validations.js +1 -0
- package/dist/cli/validate/validations.js.map +1 -1
- package/dist/cli/validate/validations.test.js +8 -4
- package/dist/cli/validate/validations.test.js.map +1 -1
- package/dist/cli/validate.d.ts +2 -0
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js +39 -14
- package/dist/cli/validate.js.map +1 -1
- package/dist/cli/validate.test.js +20 -0
- package/dist/cli/validate.test.js.map +1 -1
- package/dist/storage/extract.js +1 -1
- package/dist/storage/extract.js.map +1 -1
- package/dist/utils/annotations.js +1 -1
- package/dist/utils/annotations.js.map +1 -1
- package/package.json +4 -3
- package/src/cli/cli.test.ts +414 -0
- package/src/cli/cli.test.ts.md +253 -2
- package/src/cli/cli.test.ts.snap +0 -0
- package/src/cli/validate/build-info-file.ts +15 -4
- package/src/cli/validate/contract-report.ts +71 -16
- package/src/cli/validate/default-exclude.ts +3 -0
- package/src/cli/validate/find-contract.ts +50 -4
- package/src/cli/validate/upgradeability-assessment.ts +3 -2
- package/src/cli/validate/validate-upgrade-safety.test.ts +1 -1
- package/src/cli/validate/validate-upgrade-safety.ts +38 -6
- package/src/cli/validate/validations.test.ts +8 -4
- package/src/cli/validate/validations.ts +2 -0
- package/src/cli/validate.test.ts +22 -0
- package/src/cli/validate.ts +46 -14
- package/src/storage/extract.ts +2 -1
- package/src/utils/annotations.ts +1 -1
|
@@ -10,6 +10,9 @@ const debug_1 = __importDefault(require("../../utils/debug"));
|
|
|
10
10
|
const __1 = require("../..");
|
|
11
11
|
const upgradeability_assessment_1 = require("./upgradeability-assessment");
|
|
12
12
|
const indent_1 = require("../../utils/indent");
|
|
13
|
+
const minimatch_1 = require("minimatch");
|
|
14
|
+
const error_1 = require("./error");
|
|
15
|
+
const default_exclude_1 = require("./default-exclude");
|
|
13
16
|
/**
|
|
14
17
|
* Report for an upgradeable contract.
|
|
15
18
|
* Contains the standalone report, and if there is a reference contract, the reference contract name and storage layout report.
|
|
@@ -20,6 +23,11 @@ class UpgradeableContractReport {
|
|
|
20
23
|
this.reference = reference;
|
|
21
24
|
this.standaloneReport = standaloneReport;
|
|
22
25
|
this.storageLayoutReport = storageLayoutReport;
|
|
26
|
+
if (reference === contract) {
|
|
27
|
+
throw new error_1.ValidateCommandError(`The contract ${contract} must not use itself as a reference for storage layout comparisons.`, () => `\
|
|
28
|
+
If this is the first version of your contract, do not specify a reference.
|
|
29
|
+
If this is a subsequent version, keep the previous version of the contract in another file and specify that as the reference, or specify a reference from another build info directory containing the previous version. If you do not have the previous version available, you can skip the storage layout check using the \`unsafeSkipStorageCheck\` option, which is a dangerous option meant to be used as a last resort.`);
|
|
30
|
+
}
|
|
23
31
|
}
|
|
24
32
|
get ok() {
|
|
25
33
|
return this.standaloneReport.ok && (this.storageLayoutReport === undefined || this.storageLayoutReport.ok);
|
|
@@ -48,35 +56,53 @@ class UpgradeableContractReport {
|
|
|
48
56
|
}
|
|
49
57
|
exports.UpgradeableContractReport = UpgradeableContractReport;
|
|
50
58
|
/**
|
|
51
|
-
* Gets upgradeble contract reports for the upgradeable contracts in the
|
|
59
|
+
* Gets upgradeble contract reports for the upgradeable contracts in the set of source contracts at dictionary key ''.
|
|
60
|
+
* Reference contracts can come from source contracts at the corresponding dictionary key.
|
|
52
61
|
* Only contracts that are detected as upgradeable will be included in the reports.
|
|
53
62
|
* Reports include upgradeable contracts regardless of whether they pass or fail upgrade safety checks.
|
|
54
63
|
*
|
|
55
|
-
* @param
|
|
64
|
+
* @param buildInfoDictionary Dictionary of build info directories and the source contracts they contain.
|
|
56
65
|
* @param opts The validation options.
|
|
57
66
|
* @param specifiedContracts If provided, only the specified contract (upgrading from its reference contract) will be reported.
|
|
67
|
+
* @param exclude Exclude validations for contracts in source file paths that match any of the given glob patterns.
|
|
58
68
|
* @returns The upgradeable contract reports.
|
|
59
69
|
*/
|
|
60
|
-
function getContractReports(
|
|
70
|
+
function getContractReports(buildInfoDictionary, opts, specifiedContracts, exclude) {
|
|
61
71
|
const upgradeableContractReports = [];
|
|
62
|
-
const contractsToReport = specifiedContracts !== undefined ? [specifiedContracts.contract] :
|
|
72
|
+
const contractsToReport = specifiedContracts !== undefined ? [specifiedContracts.contract] : buildInfoDictionary[''];
|
|
63
73
|
for (const sourceContract of contractsToReport) {
|
|
64
|
-
const upgradeabilityAssessment = (0, upgradeability_assessment_1.getUpgradeabilityAssessment)(sourceContract,
|
|
74
|
+
const upgradeabilityAssessment = (0, upgradeability_assessment_1.getUpgradeabilityAssessment)(sourceContract, buildInfoDictionary, specifiedContracts?.reference);
|
|
65
75
|
if (opts.requireReference && upgradeabilityAssessment.referenceContract === undefined) {
|
|
66
76
|
throw new Error(`The contract ${sourceContract.fullyQualifiedName} does not specify what contract it upgrades from. Add the \`@custom:oz-upgrades-from <REFERENCE_CONTRACT>\` annotation to the contract, or include the reference contract name when running the validate command or function.`);
|
|
67
77
|
}
|
|
68
78
|
else if (specifiedContracts !== undefined || upgradeabilityAssessment.upgradeable) {
|
|
69
79
|
const reference = upgradeabilityAssessment.referenceContract;
|
|
70
80
|
const kind = upgradeabilityAssessment.uups ? 'uups' : 'transparent';
|
|
71
|
-
const report = getUpgradeableContractReport(sourceContract, reference, { ...opts, kind: kind });
|
|
81
|
+
const report = getUpgradeableContractReport(sourceContract, reference, { ...opts, kind: kind }, exclude);
|
|
72
82
|
if (report !== undefined) {
|
|
73
83
|
upgradeableContractReports.push(report);
|
|
74
84
|
}
|
|
85
|
+
else if (specifiedContracts !== undefined) {
|
|
86
|
+
// If there was no report for the specified contract, it was excluded or is abstract.
|
|
87
|
+
const userAction = exclude !== undefined
|
|
88
|
+
? `Ensure the contract is not abstract and is not excluded by the exclude option.`
|
|
89
|
+
: `Ensure the contract is not abstract.`;
|
|
90
|
+
throw new error_1.ValidateCommandError(`No validation report found for contract ${specifiedContracts.contract.fullyQualifiedName}`, () => userAction);
|
|
91
|
+
}
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
return upgradeableContractReports;
|
|
78
95
|
}
|
|
79
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Gets a report for an upgradeable contract.
|
|
98
|
+
* Returns undefined if the contract is excluded or is abstract.
|
|
99
|
+
*/
|
|
100
|
+
function getUpgradeableContractReport(contract, referenceContract, opts, exclude) {
|
|
101
|
+
const excludeWithDefaults = default_exclude_1.defaultExclude.concat(exclude ?? []);
|
|
102
|
+
if (excludeWithDefaults.some(glob => (0, minimatch_1.minimatch)(getPath(contract.fullyQualifiedName), glob))) {
|
|
103
|
+
(0, debug_1.default)('Excluding contract: ' + contract.fullyQualifiedName);
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
80
106
|
let version;
|
|
81
107
|
try {
|
|
82
108
|
version = (0, __1.getContractVersion)(contract.validationData, contract.fullyQualifiedName);
|
|
@@ -92,20 +118,35 @@ function getUpgradeableContractReport(contract, referenceContract, opts) {
|
|
|
92
118
|
}
|
|
93
119
|
}
|
|
94
120
|
(0, debug_1.default)('Checking: ' + contract.fullyQualifiedName);
|
|
95
|
-
const standaloneReport = getStandaloneReport(contract.validationData, version, opts);
|
|
121
|
+
const standaloneReport = getStandaloneReport(contract.validationData, version, opts, excludeWithDefaults);
|
|
96
122
|
let reference;
|
|
97
123
|
let storageLayoutReport;
|
|
98
124
|
if (opts.unsafeSkipStorageCheck !== true && referenceContract !== undefined) {
|
|
99
125
|
const layout = (0, __1.getStorageLayout)(contract.validationData, version);
|
|
100
126
|
const referenceVersion = (0, __1.getContractVersion)(referenceContract.validationData, referenceContract.fullyQualifiedName);
|
|
101
127
|
const referenceLayout = (0, __1.getStorageLayout)(referenceContract.validationData, referenceVersion);
|
|
102
|
-
|
|
103
|
-
|
|
128
|
+
if (referenceContract.buildInfoDirShortName !== contract.buildInfoDirShortName) {
|
|
129
|
+
reference = `${referenceContract.buildInfoDirShortName}:${referenceContract.fullyQualifiedName}`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
reference = referenceContract.fullyQualifiedName;
|
|
133
|
+
}
|
|
134
|
+
storageLayoutReport = (0, __1.getStorageUpgradeReport)(referenceLayout, layout, opts);
|
|
104
135
|
}
|
|
105
136
|
return new UpgradeableContractReport(contract.fullyQualifiedName, reference, standaloneReport, storageLayoutReport);
|
|
106
137
|
}
|
|
107
|
-
function getStandaloneReport(data, version, opts) {
|
|
108
|
-
const
|
|
109
|
-
|
|
138
|
+
function getStandaloneReport(data, version, opts, excludeWithDefaults) {
|
|
139
|
+
const allErrors = (0, __1.getErrors)(data, version, opts);
|
|
140
|
+
const includeErrors = allErrors.filter(e => {
|
|
141
|
+
const shouldExclude = excludeWithDefaults.some(glob => (0, minimatch_1.minimatch)(getPath(e.src), glob));
|
|
142
|
+
if (shouldExclude) {
|
|
143
|
+
(0, debug_1.default)('Excluding error: ' + e.src);
|
|
144
|
+
}
|
|
145
|
+
return !shouldExclude;
|
|
146
|
+
});
|
|
147
|
+
return new __1.UpgradeableContractErrorReport(includeErrors);
|
|
148
|
+
}
|
|
149
|
+
function getPath(srcOrFullyQualifiedName) {
|
|
150
|
+
return srcOrFullyQualifiedName.split(':')[0];
|
|
110
151
|
}
|
|
111
152
|
//# sourceMappingURL=contract-report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-report.js","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"contract-report.js","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-exclude.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/default-exclude.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,MAAM,EAAkC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultExclude = void 0;
|
|
4
|
+
const UPGRADEABLE_BEACON = '**/contracts/proxy/beacon/UpgradeableBeacon.sol';
|
|
5
|
+
exports.defaultExclude = [UPGRADEABLE_BEACON];
|
|
6
|
+
//# sourceMappingURL=default-exclude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-exclude.js","sourceRoot":"","sources":["../../../src/cli/validate/default-exclude.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,iDAA0D,CAAC;AAEzE,QAAA,cAAc,GAAa,CAAC,kBAAkB,CAAU,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BuildInfoDictionary } from './validate-upgrade-safety';
|
|
1
2
|
import { SourceContract } from './validations';
|
|
2
3
|
export declare class ReferenceContractNotFound extends Error {
|
|
3
4
|
/**
|
|
@@ -8,7 +9,11 @@ export declare class ReferenceContractNotFound extends Error {
|
|
|
8
9
|
* The fully qualified name of the contract that referenced the missing contract.
|
|
9
10
|
*/
|
|
10
11
|
readonly origin?: string;
|
|
11
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Build info directories that were also searched.
|
|
14
|
+
*/
|
|
15
|
+
readonly buildInfoDirs?: string[];
|
|
16
|
+
constructor(reference: string, origin?: string, buildInfoDirs?: string[]);
|
|
12
17
|
}
|
|
13
|
-
export declare function findContract(contractName: string, origin: SourceContract | undefined,
|
|
18
|
+
export declare function findContract(contractName: string, origin: SourceContract | undefined, buildInfoDictionary: BuildInfoDictionary, onlyMainBuildInfoDir?: boolean): SourceContract;
|
|
14
19
|
//# sourceMappingURL=find-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-contract.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/find-contract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-contract.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/find-contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,qBAAa,yBAA0B,SAAQ,KAAK;IAClD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEtB,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;CAUzE;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,UAAQ,kBAgC7B"}
|
|
@@ -2,20 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReferenceContractNotFound = void 0;
|
|
4
4
|
exports.findContract = findContract;
|
|
5
|
+
const assert_1 = require("../../utils/assert");
|
|
5
6
|
const error_1 = require("./error");
|
|
6
7
|
class ReferenceContractNotFound extends Error {
|
|
7
|
-
constructor(reference, origin) {
|
|
8
|
+
constructor(reference, origin, buildInfoDirs) {
|
|
8
9
|
const msg = origin !== undefined
|
|
9
10
|
? `Could not find contract ${reference} referenced in ${origin}.`
|
|
10
11
|
: `Could not find contract ${reference}.`;
|
|
11
12
|
super(msg);
|
|
12
13
|
this.reference = reference;
|
|
13
14
|
this.origin = origin;
|
|
15
|
+
this.buildInfoDirs = buildInfoDirs;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
exports.ReferenceContractNotFound = ReferenceContractNotFound;
|
|
17
|
-
function findContract(contractName, origin,
|
|
18
|
-
const foundContracts =
|
|
19
|
+
function findContract(contractName, origin, buildInfoDictionary, onlyMainBuildInfoDir = false) {
|
|
20
|
+
const foundContracts = [];
|
|
21
|
+
if (onlyMainBuildInfoDir) {
|
|
22
|
+
if (hasBuildInfoDirWithContractName(contractName) || hasBuildInfoDirWithFullyQualifiedName(contractName)) {
|
|
23
|
+
throw new error_1.ValidateCommandError(`Contract ${contractName} must be specified without a build info directory name`, () => `Build info directory names can only be specified for reference contracts.`);
|
|
24
|
+
}
|
|
25
|
+
foundContracts.push(...buildInfoDictionary[''].filter(c => isMatchFound(contractName, c, '')));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
for (const [dir, contracts] of Object.entries(buildInfoDictionary)) {
|
|
29
|
+
foundContracts.push(...contracts.filter(c => isMatchFound(contractName, c, dir)));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
19
32
|
if (foundContracts.length > 1) {
|
|
20
33
|
const msg = origin !== undefined
|
|
21
34
|
? `Found multiple contracts with name ${contractName} referenced in ${origin.fullyQualifiedName}.`
|
|
@@ -26,7 +39,22 @@ function findContract(contractName, origin, allContracts) {
|
|
|
26
39
|
return foundContracts[0];
|
|
27
40
|
}
|
|
28
41
|
else {
|
|
29
|
-
throw new ReferenceContractNotFound(contractName, origin?.fullyQualifiedName);
|
|
42
|
+
throw new ReferenceContractNotFound(contractName, origin?.fullyQualifiedName, Object.keys(buildInfoDictionary));
|
|
30
43
|
}
|
|
31
44
|
}
|
|
45
|
+
function isMatchFound(contractName, foundContract, buildInfoDirShortName) {
|
|
46
|
+
let prefix = '';
|
|
47
|
+
if (buildInfoDirShortName.length > 0) {
|
|
48
|
+
(0, assert_1.assert)(foundContract.buildInfoDirShortName === buildInfoDirShortName);
|
|
49
|
+
prefix = `${buildInfoDirShortName}:`;
|
|
50
|
+
}
|
|
51
|
+
return (`${prefix}${foundContract.fullyQualifiedName}` === contractName || `${prefix}${foundContract.name}` === contractName);
|
|
52
|
+
}
|
|
53
|
+
function hasBuildInfoDirWithContractName(contractName) {
|
|
54
|
+
return contractName.split(':').length === 2 && !contractName.includes('.sol:');
|
|
55
|
+
}
|
|
56
|
+
function hasBuildInfoDirWithFullyQualifiedName(contractName) {
|
|
57
|
+
const tokens = contractName.split(':');
|
|
58
|
+
return tokens.length === 3 && tokens[1].endsWith('.sol');
|
|
59
|
+
}
|
|
32
60
|
//# sourceMappingURL=find-contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-contract.js","sourceRoot":"","sources":["../../../src/cli/validate/find-contract.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"find-contract.js","sourceRoot":"","sources":["../../../src/cli/validate/find-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { BuildInfoDictionary } from './validate-upgrade-safety';
|
|
1
2
|
import { SourceContract } from './validations';
|
|
2
3
|
export interface UpgradeabilityAssessment {
|
|
3
4
|
upgradeable: boolean;
|
|
4
5
|
referenceContract?: SourceContract;
|
|
5
6
|
uups?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function getUpgradeabilityAssessment(contract: SourceContract,
|
|
8
|
+
export declare function getUpgradeabilityAssessment(contract: SourceContract, buildInfoDictionary: BuildInfoDictionary, overrideReferenceContract?: SourceContract): UpgradeabilityAssessment;
|
|
8
9
|
//# sourceMappingURL=upgradeability-assessment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeability-assessment.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/upgradeability-assessment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,EACxB,
|
|
1
|
+
{"version":3,"file":"upgradeability-assessment.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/upgradeability-assessment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,yBAAyB,CAAC,EAAE,cAAc,GACzC,wBAAwB,CA2B1B"}
|
|
@@ -5,14 +5,14 @@ const annotations_1 = require("../../utils/annotations");
|
|
|
5
5
|
const query_1 = require("../../validate/query");
|
|
6
6
|
const error_1 = require("./error");
|
|
7
7
|
const find_contract_1 = require("./find-contract");
|
|
8
|
-
function getUpgradeabilityAssessment(contract,
|
|
8
|
+
function getUpgradeabilityAssessment(contract, buildInfoDictionary, overrideReferenceContract) {
|
|
9
9
|
const fullContractName = contract.fullyQualifiedName;
|
|
10
10
|
const contractValidation = contract.validationData[fullContractName];
|
|
11
11
|
const isUUPS = (0, query_1.inferUUPS)(contract.validationData, fullContractName);
|
|
12
12
|
const annotationAssessment = getAnnotationAssessment(contract);
|
|
13
13
|
let referenceContract = overrideReferenceContract;
|
|
14
14
|
if (referenceContract === undefined && annotationAssessment.referenceName !== undefined) {
|
|
15
|
-
referenceContract = (0, find_contract_1.findContract)(annotationAssessment.referenceName, contract,
|
|
15
|
+
referenceContract = (0, find_contract_1.findContract)(annotationAssessment.referenceName, contract, buildInfoDictionary);
|
|
16
16
|
}
|
|
17
17
|
let isReferenceUUPS = false;
|
|
18
18
|
if (referenceContract !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeability-assessment.js","sourceRoot":"","sources":["../../../src/cli/validate/upgradeability-assessment.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"upgradeability-assessment.js","sourceRoot":"","sources":["../../../src/cli/validate/upgradeability-assessment.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,22 @@ export type SpecifiedContracts = {
|
|
|
15
15
|
* Validates the upgrade safety of all contracts in the build info dir's build info files.
|
|
16
16
|
* Only contracts that are detected as upgradeable will be validated.
|
|
17
17
|
*
|
|
18
|
-
* @param buildInfoDir
|
|
18
|
+
* @param buildInfoDir Path of build info directory, or undefined to use the default Hardhat or Foundry build-info dir.
|
|
19
19
|
* @param contract The name or fully qualified name of the contract to validate. If not specified, all upgradeable contracts in the build info directory will be validated.
|
|
20
20
|
* @param reference The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with `contract`. If not specified, uses the `@custom:oz-upgrades-from` annotation in the contract that is being validated.
|
|
21
21
|
* @param opts Validation options, or undefined to use the default validation options.
|
|
22
|
+
* @param referenceBuildInfoDirs Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix `<dirName>:` before the contract name or fully qualified name in the `reference` param or `@custom:oz-upgrades-from` annotation, where `<dirName>` is the directory short name. Each directory short name must be unique, including compared to the main build info directory.
|
|
23
|
+
* @param exclude Exclude validations for contracts in source file paths that match any of the given glob patterns.
|
|
22
24
|
* @returns The project report.
|
|
23
25
|
*/
|
|
24
|
-
export declare function validateUpgradeSafety(buildInfoDir?: string, contract?: string, reference?: string, opts?: ValidateUpgradeSafetyOptions): Promise<ProjectReport>;
|
|
25
|
-
|
|
26
|
+
export declare function validateUpgradeSafety(buildInfoDir?: string, contract?: string, reference?: string, opts?: ValidateUpgradeSafetyOptions, referenceBuildInfoDirs?: string[], exclude?: string[]): Promise<ProjectReport>;
|
|
27
|
+
/**
|
|
28
|
+
* Dictionary of build info directories and the contracts they contain.
|
|
29
|
+
* Main build info directory can be found with the key '' and also with its short name.
|
|
30
|
+
*/
|
|
31
|
+
export interface BuildInfoDictionary {
|
|
32
|
+
[buildInfoDirName: string]: SourceContract[];
|
|
33
|
+
}
|
|
34
|
+
export declare function findSpecifiedContracts(buildInfoDictionary: BuildInfoDictionary, opts: Required<ValidateUpgradeSafetyOptions>, contractName?: string, referenceName?: string): SpecifiedContracts | undefined;
|
|
26
35
|
export declare function withCliDefaults(opts: ValidateUpgradeSafetyOptions): Required<ValidateUpgradeSafetyOptions>;
|
|
27
36
|
//# sourceMappingURL=validate-upgrade-safety.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-upgrade-safety.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate-upgrade-safety.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAA8B,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,4BAAiC,EACvC,sBAAsB,CAAC,EAAE,MAAM,EAAE,EACjC,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,mBAAmB,EACxC,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACrB,kBAAkB,GAAG,SAAS,CAahC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,4BAA4B,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAQ1G"}
|
|
@@ -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.validateUpgradeSafety = validateUpgradeSafety;
|
|
4
7
|
exports.findSpecifiedContracts = findSpecifiedContracts;
|
|
5
8
|
exports.withCliDefaults = withCliDefaults;
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
6
10
|
const __1 = require("../..");
|
|
7
11
|
const build_info_file_1 = require("./build-info-file");
|
|
8
12
|
const contract_report_1 = require("./contract-report");
|
|
@@ -13,25 +17,42 @@ const validations_1 = require("./validations");
|
|
|
13
17
|
* Validates the upgrade safety of all contracts in the build info dir's build info files.
|
|
14
18
|
* Only contracts that are detected as upgradeable will be validated.
|
|
15
19
|
*
|
|
16
|
-
* @param buildInfoDir
|
|
20
|
+
* @param buildInfoDir Path of build info directory, or undefined to use the default Hardhat or Foundry build-info dir.
|
|
17
21
|
* @param contract The name or fully qualified name of the contract to validate. If not specified, all upgradeable contracts in the build info directory will be validated.
|
|
18
22
|
* @param reference The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with `contract`. If not specified, uses the `@custom:oz-upgrades-from` annotation in the contract that is being validated.
|
|
19
23
|
* @param opts Validation options, or undefined to use the default validation options.
|
|
24
|
+
* @param referenceBuildInfoDirs Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix `<dirName>:` before the contract name or fully qualified name in the `reference` param or `@custom:oz-upgrades-from` annotation, where `<dirName>` is the directory short name. Each directory short name must be unique, including compared to the main build info directory.
|
|
25
|
+
* @param exclude Exclude validations for contracts in source file paths that match any of the given glob patterns.
|
|
20
26
|
* @returns The project report.
|
|
21
27
|
*/
|
|
22
|
-
async function validateUpgradeSafety(buildInfoDir, contract, reference, opts = {}) {
|
|
28
|
+
async function validateUpgradeSafety(buildInfoDir, contract, reference, opts = {}, referenceBuildInfoDirs, exclude) {
|
|
23
29
|
const allOpts = withCliDefaults(opts);
|
|
24
30
|
const buildInfoFiles = await (0, build_info_file_1.getBuildInfoFiles)(buildInfoDir);
|
|
25
31
|
const sourceContracts = (0, validations_1.validateBuildInfoContracts)(buildInfoFiles);
|
|
26
|
-
const
|
|
27
|
-
|
|
32
|
+
const buildInfoDictionary = {};
|
|
33
|
+
buildInfoDictionary[''] = sourceContracts;
|
|
34
|
+
if (buildInfoFiles.length > 0) {
|
|
35
|
+
buildInfoDictionary[buildInfoFiles[0].dirShortName] = sourceContracts;
|
|
36
|
+
}
|
|
37
|
+
if (referenceBuildInfoDirs !== undefined) {
|
|
38
|
+
for (const referenceBuildInfoDir of referenceBuildInfoDirs) {
|
|
39
|
+
const key = path_1.default.basename(referenceBuildInfoDir);
|
|
40
|
+
if (buildInfoDictionary[key] !== undefined) {
|
|
41
|
+
throw new Error(`Reference build info directory short name '${key}' is not unique.`);
|
|
42
|
+
}
|
|
43
|
+
const referenceBuildInfoFiles = await (0, build_info_file_1.getBuildInfoFiles)(referenceBuildInfoDir);
|
|
44
|
+
buildInfoDictionary[key] = (0, validations_1.validateBuildInfoContracts)(referenceBuildInfoFiles);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const specifiedContracts = findSpecifiedContracts(buildInfoDictionary, allOpts, contract, reference);
|
|
48
|
+
const contractReports = (0, contract_report_1.getContractReports)(buildInfoDictionary, allOpts, specifiedContracts, exclude);
|
|
28
49
|
return (0, project_report_1.getProjectReport)(contractReports, specifiedContracts !== undefined);
|
|
29
50
|
}
|
|
30
|
-
function findSpecifiedContracts(
|
|
51
|
+
function findSpecifiedContracts(buildInfoDictionary, opts, contractName, referenceName) {
|
|
31
52
|
if (contractName !== undefined) {
|
|
32
53
|
return {
|
|
33
|
-
contract: (0, find_contract_1.findContract)(contractName, undefined,
|
|
34
|
-
reference: referenceName !== undefined ? (0, find_contract_1.findContract)(referenceName, undefined,
|
|
54
|
+
contract: (0, find_contract_1.findContract)(contractName, undefined, buildInfoDictionary, true), // only search main build info dir for the specified contract
|
|
55
|
+
reference: referenceName !== undefined ? (0, find_contract_1.findContract)(referenceName, undefined, buildInfoDictionary) : undefined,
|
|
35
56
|
};
|
|
36
57
|
}
|
|
37
58
|
else if (referenceName !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-upgrade-safety.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate-upgrade-safety.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,7 +71,7 @@ ava_1.default.after(async () => {
|
|
|
71
71
|
});
|
|
72
72
|
(0, ava_1.default)('findSpecifiedContracts - requireReference option without contract', async (t) => {
|
|
73
73
|
try {
|
|
74
|
-
(0, validate_upgrade_safety_1.findSpecifiedContracts)(
|
|
74
|
+
(0, validate_upgrade_safety_1.findSpecifiedContracts)({}, (0, validate_upgrade_safety_1.withCliDefaults)({ requireReference: true }));
|
|
75
75
|
}
|
|
76
76
|
catch (e) {
|
|
77
77
|
t.true(e.message.includes('The requireReference option can only be specified when the contract option is also specified.'));
|
|
@@ -6,6 +6,7 @@ export interface SourceContract {
|
|
|
6
6
|
name: string;
|
|
7
7
|
fullyQualifiedName: string;
|
|
8
8
|
validationData: ValidationRunData;
|
|
9
|
+
buildInfoDirShortName: string;
|
|
9
10
|
}
|
|
10
11
|
export declare function validateBuildInfoContracts(buildInfoFiles: BuildInfoFile[]): SourceContract[];
|
|
11
12
|
//# sourceMappingURL=validations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,iBAAiB,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAO5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.ts"],"names":[],"mappings":";;;;;AAkBA,gEAOC;AAzBD,6BAA4E;AAE5E,8DAAsC;AAEtC,8CAA6C;AAG7C,6DAAkE;AAWlE,SAAgB,0BAA0B,CAAC,cAA+B;IACxE,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAClD,yBAAyB,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,aAA4B;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,0BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAA,YAAQ,EAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAChC,aAA4B,EAC5B,cAAiC,EACjC,eAAiC;IAEjC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;QAEzD,KAAK,MAAM,WAAW,IAAI,IAAA,eAAO,EAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,kBAAkB,GAAG,IAAA,qCAAqB,EAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/E,IAAA,eAAK,EAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC;YAEtC,eAAe,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,kBAAkB;gBAClB,cAAc,EAAE,cAAc;gBAC9B,qBAAqB,EAAE,aAAa,CAAC,YAAY;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -11,13 +11,17 @@ const validate_upgrade_safety_1 = require("./validate-upgrade-safety");
|
|
|
11
11
|
const test = ava_1.default;
|
|
12
12
|
const SOURCE_FILE = 'contracts/test/cli/Validate.sol';
|
|
13
13
|
test.before(async (t) => {
|
|
14
|
-
const
|
|
15
|
-
if (
|
|
14
|
+
const hardhatBuildInfo = await hardhat_1.artifacts.getBuildInfo(`${SOURCE_FILE}:Safe`);
|
|
15
|
+
if (hardhatBuildInfo === undefined) {
|
|
16
16
|
t.fail();
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
const buildInfoFile = {
|
|
20
|
+
...hardhatBuildInfo,
|
|
21
|
+
dirShortName: 'build-info',
|
|
22
|
+
};
|
|
23
|
+
const sourceContracts = (0, validations_1.validateBuildInfoContracts)([buildInfoFile]);
|
|
24
|
+
t.context.reports = (0, contract_report_1.getContractReports)({ '': sourceContracts }, (0, validate_upgrade_safety_1.withCliDefaults)({}));
|
|
21
25
|
}
|
|
22
26
|
});
|
|
23
27
|
function getReport(t, contractName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsD;AAEtD,qCAAoC;AACpC,+CAA2D;AAC3D,uDAAkF;AAClF,uEAA4D;AAM5D,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAEtD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;IACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"validations.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/validate.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,4BAA4B,EAAyB,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,4BAA4B,EAAyB,MAAM,GAAG,CAAC;AAwBxE,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxD;AA8BD,UAAU,YAAY;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IAC7C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAwBlG;AA2ED,wBAAgB,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAapG"}
|