@openzeppelin/upgrades-core 1.20.6 → 1.22.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.
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/e3d675f30fc2f3c948405e0629d960c9.json"
3
+ "buildInfo": "../../../../../build-info/bb1e0d270674fd66daeec5cff0455eed.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/e3d675f30fc2f3c948405e0629d960c9.json"
3
+ "buildInfo": "../../../../../build-info/bb1e0d270674fd66daeec5cff0455eed.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/e3d675f30fc2f3c948405e0629d960c9.json"
3
+ "buildInfo": "../../../../../build-info/bb1e0d270674fd66daeec5cff0455eed.json"
4
4
  }
@@ -60,6 +60,123 @@
60
60
  "contracts/import.sol": {
61
61
  "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\";\nimport \"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\";\nimport \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport \"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\";\nimport \"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\";\n\n// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.\ncontract AdminUpgradeabilityProxy is TransparentUpgradeableProxy {\n constructor(address logic, address admin, bytes memory data) payable TransparentUpgradeableProxy(logic, admin, data) {}\n}\n"
62
62
  },
63
+ "contracts/test/ignore-errors/AllowChild.sol": {
64
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./AllowParent.sol\";\n\ncontract AllowChild is AllowParent {\n function shouldBeAllowed(bytes memory data) public {\n internalDelegateCall(data);\n }\n}\n"
65
+ },
66
+ "contracts/test/ignore-errors/AllowChildCallTransitive.sol": {
67
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./AllowReachableParentCall.sol\";\n\ncontract AllowChildCallTransitive is AllowReachableParentCall {\n function myfunction(bytes memory data) internal {\n allowed(data);\n }\n}\n"
68
+ },
69
+ "contracts/test/ignore-errors/AllowChildInheritedTransitive.sol": {
70
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveAllowReachable.sol\";\n\ncontract AllowChildInheritedTransitive is TransitiveAllowReachable {\n}\n"
71
+ },
72
+ "contracts/test/ignore-errors/AllowChildSelfReachable.sol": {
73
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./AllowParentSelfReachable.sol\";\n\ncontract AllowChildSelfReachable is AllowParentSelfReachable {\n function shouldBeAllowed(bytes memory data) public {\n internalDelegateCall(data);\n }\n}\n"
74
+ },
75
+ "contracts/test/ignore-errors/AllowParent.sol": {
76
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n/**\n * allow causes the delegatecall to be ignored for all functions in this contract\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\ncontract AllowParent {\n function internalDelegateCall(\n bytes memory data\n ) internal returns (bytes memory) {\n (, bytes memory returndata) = address(this).delegatecall(data);\n return returndata;\n }\n}"
77
+ },
78
+ "contracts/test/ignore-errors/AllowParentSelfReachable.sol": {
79
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n/**\n * allow-reachable causes the delegatecall to be ignored for all functions in this contract, including its own lexical scope\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\ncontract AllowParentSelfReachable {\n function internalDelegateCall(\n bytes memory data\n ) internal returns (bytes memory) {\n (, bytes memory returndata) = address(this).delegatecall(data);\n return returndata;\n }\n}"
80
+ },
81
+ "contracts/test/ignore-errors/AllowReachable.sol": {
82
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveRiskyLibrary.sol\";\n\n// allow-reachable causes the delegatecall in a transitive function to be ignored\ncontract AllowReachable {\n /// @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n function unsafe(bytes memory data) public {\n TransitiveRiskyLibrary.internalDelegateCall(address(this), data);\n }\n}\n"
83
+ },
84
+ "contracts/test/ignore-errors/AllowReachableParent.sol": {
85
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveUnsafeParent.sol\";\n\n/**\n * allow-reachable causes the delegatecall in a parent function to be ignored\n *\n * this is actually unsafe but only allowed here for testing purposes!\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\ncontract AllowReachableParent is TransitiveUnsafeParent {\n}\n"
86
+ },
87
+ "contracts/test/ignore-errors/AllowReachableParentCall.sol": {
88
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyParentContract.sol\";\n\n/**\n * allow-reachable causes the delegatecall to be ignored for all reachable functions from this contract\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\ncontract AllowReachableParentCall is RiskyParentContract {\n function allowed(bytes memory data) internal {\n internalDelegateCall(address(this), data);\n }\n}"
89
+ },
90
+ "contracts/test/ignore-errors/Constructors.sol": {
91
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nabstract contract UnsafeParent {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(bytes memory data) {\n msg.sender.delegatecall(data);\n }\n}\n\ncontract UnsafeChild1 is UnsafeParent {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() UnsafeParent('') {}\n\n function foo1(uint x) public {}\n}\n\ncontract UnsafeChild2 is UnsafeParent('') {\n function foo2(uint x) public {}\n}\n\nabstract contract UnsafeParentNoArgs {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n msg.sender.delegatecall('');\n }\n}\n\ncontract UnsafeChild3 is UnsafeParentNoArgs {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() UnsafeParentNoArgs() {}\n\n function foo3(uint x) public {}\n}\n\ncontract UnsafeChild4 is UnsafeParentNoArgs {\n function foo4(uint x) public {}\n}\n\n/**\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract AllowParentNoArgs {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n msg.sender.delegatecall('');\n }\n}\n\ncontract AllowChild5 is AllowParentNoArgs {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() AllowParentNoArgs() {}\n\n function foo5(uint x) public {}\n}\n\ncontract AllowChild6 is AllowParentNoArgs {\n function foo6(uint x) public {}\n}\n\n/**\n * allow has no effect because the delegatecall is in a parent function\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\ncontract UnsafeAllowChild7 is UnsafeParentNoArgs {\n function foo7(uint x) public {}\n}\n\n/**\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\ncontract AllowReachableChild8 is UnsafeParentNoArgs {\n function foo8(uint x) public {}\n}\n\nabstract contract UnsafeFunctions {\n function unsafe() internal {\n msg.sender.delegatecall('');\n }\n}\n\ncontract UnsafeChild9 is UnsafeFunctions {\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n unsafe();\n }\n\n function foo9(uint x) public {}\n}"
92
+ },
93
+ "contracts/test/ignore-errors/Modifiers.sol": {
94
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nabstract contract UnsafeParentModifier {\n modifier unsafe(bytes memory data) {\n _;\n msg.sender.delegatecall(data);\n }\n}\n\n// TODO: do not throw an error in this case\n// contract ModifierNotUsed is UnsafeParentModifier {\n// function foo() public {}\n// }\n\ncontract ModifierUsed is UnsafeParentModifier {\n function foo() public unsafe('') {}\n}\n"
95
+ },
96
+ "contracts/test/ignore-errors/RiskyFreeFunctions.sol": {
97
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nfunction isContract(address account) view returns (bool) {\n return account.code.length > 0;\n}\n\nfunction freeDelegateCall(\n address target,\n bytes memory data\n) returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n}\n"
98
+ },
99
+ "contracts/test/ignore-errors/RiskyLibrary.sol": {
100
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nlibrary RiskyLibrary {\n function isContract(address account) internal view returns (bool) {\n return account.code.length > 0;\n }\n\n function internalDelegateCall(\n address target,\n bytes memory data\n ) internal returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n function privateDelegateCall(\n address target,\n bytes memory data\n ) private returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n function publicDelegateCall(\n address target,\n bytes memory data\n ) public returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n function externalDelegateCall(\n address target,\n bytes memory data\n ) external returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n}"
101
+ },
102
+ "contracts/test/ignore-errors/RiskyParentContract.sol": {
103
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ncontract RiskyParentContract {\n function isContract(address account) internal view returns (bool) {\n return account.code.length > 0;\n }\n\n function internalDelegateCall(\n address target,\n bytes memory data\n ) internal returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n function privateDelegateCall(\n address target,\n bytes memory data\n ) private returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n}"
104
+ },
105
+ "contracts/test/ignore-errors/SafeContract.sol": {
106
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ncontract SafeContract {\n}\n"
107
+ },
108
+ "contracts/test/ignore-errors/SafeContractWithFreeFunctionCall.sol": {
109
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyFreeFunctions.sol\" as RiskyFreeFunctions;\n\ncontract SafeContractWithFreeFunctionCall {\n function safe() public view returns (bool) {\n return RiskyFreeFunctions.isContract(address(this));\n }\n}\n"
110
+ },
111
+ "contracts/test/ignore-errors/SafeContractWithLibraryCall.sol": {
112
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\ncontract SafeContractWithLibraryCall {\n function safe() public view returns (bool) {\n return RiskyLibrary.isContract(address(this));\n }\n}\n"
113
+ },
114
+ "contracts/test/ignore-errors/SafeContractWithLibraryImport.sol": {
115
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\ncontract SafeContractWithLibraryImport {\n\n}\n"
116
+ },
117
+ "contracts/test/ignore-errors/SafeContractWithLibraryUsingFor.sol": {
118
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\ncontract SafeContractWithLibraryUsingFor {\n using RiskyLibrary for address;\n\n function safe() public view returns (bool) {\n return address(this).isContract();\n }\n}\n"
119
+ },
120
+ "contracts/test/ignore-errors/SafeContractWithParentCall.sol": {
121
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyParentContract.sol\";\n\ncontract SafeContractWithParentCall is RiskyParentContract {\n function safe() public view returns (bool) {\n return isContract(address(this));\n }\n}\n"
122
+ },
123
+ "contracts/test/ignore-errors/SafeContractWithTransitiveLibraryCall.sol": {
124
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveRiskyLibrary.sol\";\n\ncontract SafeContractWithTransitiveLibraryCall {\n function safe() public view returns (bool) {\n return TransitiveRiskyLibrary.isContract(address(this));\n }\n}\n"
125
+ },
126
+ "contracts/test/ignore-errors/SafeRecursion.sol": {
127
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyParentContract.sol\";\n\ncontract SafeRecursion is RiskyParentContract {\n function safe(uint256 i) public view returns (bool) {\n if (++i == 10) {\n return isContract(address(this));\n } else {\n return safe(i);\n }\n }\n}\n"
128
+ },
129
+ "contracts/test/ignore-errors/TransitiveAllowReachable.sol": {
130
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\n/**\n * allow delegatecalls on all of this contract's functions and reachable code\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\ncontract TransitiveAllowReachable {\n function internalDelegateCall(\n bytes memory data\n ) external returns (bytes memory) {\n return RiskyLibrary.internalDelegateCall(address(this), data);\n }\n}"
131
+ },
132
+ "contracts/test/ignore-errors/TransitiveRiskyLibrary.sol": {
133
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\nlibrary TransitiveRiskyLibrary {\n function isContract(address account) internal view returns (bool) {\n return RiskyLibrary.isContract(account);\n }\n\n function internalDelegateCall(\n address target,\n bytes memory data\n ) internal returns (bytes memory) {\n return RiskyLibrary.internalDelegateCall(target, data);\n }\n}"
134
+ },
135
+ "contracts/test/ignore-errors/TransitiveUnsafeParent.sol": {
136
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./UnsafeParentContract.sol\";\n\ncontract TransitiveUnsafeParent is UnsafeParentContract {\n}"
137
+ },
138
+ "contracts/test/ignore-errors/UnsafeAllow.sol": {
139
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveRiskyLibrary.sol\";\n\n// allow has no effect because the delegatecall is in a transitive function\ncontract UnsafeAllow {\n /// @custom:oz-upgrades-unsafe-allow delegatecall\n function unsafe(address target, bytes memory data) public {\n TransitiveRiskyLibrary.internalDelegateCall(target, data);\n }\n}\n"
140
+ },
141
+ "contracts/test/ignore-errors/UnsafeAllowParent.sol": {
142
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveUnsafeParent.sol\";\n\n/**\n * allow has no effect because the delegatecall is in a parent function\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\ncontract UnsafeAllowParent is TransitiveUnsafeParent {\n}\n"
143
+ },
144
+ "contracts/test/ignore-errors/UnsafeAllowReachableDifferentOpcode.sol": {
145
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveRiskyLibrary.sol\";\n\n// allow-reachable has no effect because the transitive function has a different opcode\ncontract UnsafeAllowReachableDifferentOpcode {\n /// @custom:oz-upgrades-unsafe-allow-reachable selfdestruct\n function unsafe(bytes memory data) public {\n TransitiveRiskyLibrary.internalDelegateCall(address(this), data);\n }\n}\n"
146
+ },
147
+ "contracts/test/ignore-errors/UnsafeAllowReachableParentDifferentOpcode.sol": {
148
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveUnsafeParent.sol\";\n\n/**\n * allow-reachable has no effect because the parent function has a different opcode\n *\n * @custom:oz-upgrades-unsafe-allow-reachable selfdestruct\n */\ncontract UnsafeAllowReachableParentDifferentOpcode is TransitiveUnsafeParent {\n}\n"
149
+ },
150
+ "contracts/test/ignore-errors/UnsafeContract.sol": {
151
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ncontract UnsafeContract {\n function externalDelegateCall(\n address target,\n bytes memory data\n ) external returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n}\n"
152
+ },
153
+ "contracts/test/ignore-errors/UnsafeContractWithFreeFunctionCall.sol": {
154
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyFreeFunctions.sol\" as RiskyFreeFunctions;\n\ncontract UnsafeContractWithFreeFunctionCall {\n function unsafe(address target, bytes memory data) public {\n RiskyFreeFunctions.freeDelegateCall(target, data);\n }\n}\n"
155
+ },
156
+ "contracts/test/ignore-errors/UnsafeContractWithInheritedParent.sol": {
157
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./UnsafeParentContract.sol\";\n\ncontract UnsafeContractWithInheritedParent is UnsafeParentContract {\n}\n"
158
+ },
159
+ "contracts/test/ignore-errors/UnsafeContractWithInheritedTransitiveParent.sol": {
160
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveUnsafeParent.sol\";\n\ncontract UnsafeContractWithInheritedTransitiveParent is TransitiveUnsafeParent {\n}\n"
161
+ },
162
+ "contracts/test/ignore-errors/UnsafeContractWithLibraryCall.sol": {
163
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\ncontract UnsafeContractWithLibraryCall {\n function unsafe(address target, bytes memory data) public {\n RiskyLibrary.internalDelegateCall(target, data);\n }\n}\n"
164
+ },
165
+ "contracts/test/ignore-errors/UnsafeContractWithLibraryUsingFor.sol": {
166
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyLibrary.sol\";\n\ncontract UnsafeContractWithLibraryUsingFor {\n using RiskyLibrary for address;\n\n function unsafe(address target, bytes memory data) public {\n target.internalDelegateCall(data);\n }\n}\n"
167
+ },
168
+ "contracts/test/ignore-errors/UnsafeContractWithParentCall.sol": {
169
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyParentContract.sol\";\n\ncontract UnsafeContractWithParentCall is RiskyParentContract {\n function unsafe(address target, bytes memory data) public {\n internalDelegateCall(target, data);\n }\n}\n"
170
+ },
171
+ "contracts/test/ignore-errors/UnsafeContractWithTransitiveLibraryCall.sol": {
172
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./TransitiveRiskyLibrary.sol\";\n\ncontract UnsafeContractWithTransitiveLibraryCall {\n function unsafe(address target, bytes memory data) public {\n TransitiveRiskyLibrary.internalDelegateCall(target, data);\n }\n}\n"
173
+ },
174
+ "contracts/test/ignore-errors/UnsafeParentContract.sol": {
175
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ncontract UnsafeParentContract {\n function isContract(address account) internal view returns (bool) {\n return account.code.length > 0;\n }\n\n function internalDelegateCall(\n address target,\n bytes memory data\n ) internal returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n function privateDelegateCall(\n address target,\n bytes memory data\n ) private returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n // unsafe!\n function publicDelegateCall(\n address target,\n bytes memory data\n ) public returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n\n // unsafe!\n function externalDelegateCall(\n address target,\n bytes memory data\n ) external returns (bytes memory) {\n (, bytes memory returndata) = target.delegatecall(data);\n return returndata;\n }\n}"
176
+ },
177
+ "contracts/test/ignore-errors/UnsafeRecursion.sol": {
178
+ "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"./RiskyParentContract.sol\";\n\ncontract UnsafeRecursion is RiskyParentContract {\n function unsafe(uint256 i, address target, bytes memory data) public returns (bytes memory) {\n if (++i == 10) {\n return internalDelegateCall(target, data);\n } else {\n return unsafe(i, target, data);\n }\n }\n}\n"
179
+ },
63
180
  "contracts/test/Memory08.sol": {
64
181
  "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.9;\n\ncontract Memory08 {\n mapping(string => address) a;\n mapping(bytes => address) b;\n}\n\ncontract Memory08Bad {\n mapping(bytes => address) a;\n mapping(string => address) b;\n}\n"
65
182
  },
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/provider.js CHANGED
@@ -62,10 +62,14 @@ exports.networkNames = Object.freeze({
62
62
  4: 'rinkeby',
63
63
  5: 'goerli',
64
64
  42: 'kovan',
65
+ 56: 'bsc',
66
+ 97: 'bsc-testnet',
65
67
  137: 'polygon',
66
68
  80001: 'polygon-mumbai',
67
69
  43113: 'avalanche-fuji',
68
70
  43114: 'avalanche',
71
+ 42220: 'celo',
72
+ 44787: 'celo-alfajores',
69
73
  });
70
74
  async function isDevelopmentNetwork(provider) {
71
75
  const chainId = await getChainId(provider);
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ function solcInputOutputDecoder(solcInput, solcOutput, basePath = '.') {
16
16
  if (sourcePath === undefined) {
17
17
  throw new Error(`Source file not available`);
18
18
  }
19
- const content = solcInput.sources[sourcePath].content;
19
+ const content = solcInput.sources[sourcePath]?.content;
20
20
  const name = path_1.default.relative(basePath, sourcePath);
21
21
  if (content === undefined) {
22
22
  throw new Error(`Content for ${name} not available`);
@@ -1 +1 @@
1
- {"version":3,"file":"src-decoder.js","sourceRoot":"","sources":["../src/src-decoder.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAUxB,SAAgB,sBAAsB,CAAC,SAAoB,EAAE,UAAsB,EAAE,QAAQ,GAAG,GAAG;IACjG,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,SAAS,SAAS,CAAC,QAAgB;QACjC,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC1B;aAAM;YACL,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;aAC9C;YACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YACtD,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;aACtD;YACD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;SAChD;IACH,CAAC;IAED,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AA1BD,wDA0BC"}
1
+ {"version":3,"file":"src-decoder.js","sourceRoot":"","sources":["../src/src-decoder.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAUxB,SAAgB,sBAAsB,CAAC,SAAoB,EAAE,UAAsB,EAAE,QAAQ,GAAG,GAAG;IACjG,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,SAAS,SAAS,CAAC,QAAgB;QACjC,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC1B;aAAM;YACL,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;aAC9C;YACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;YACvD,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;aACtD;YACD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;SAChD;IACH,CAAC;IAED,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AA1BD,wDA0BC"}
@@ -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;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;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAkB5F;AAED;;;;;;GAMG;AACH,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,gBAAgB,EAAE,MAAM,GAAG,aAAa,CAiBvG;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,CAmBjH;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"}
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,EAAiB,MAAM,OAAO,CAAC;AAC1E,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;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAkB5F;AAED;;;;;;GAMG;AACH,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,gBAAgB,EAAE,MAAM,GAAG,aAAa,CAiBvG;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;AA0BD,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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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
+ const run_1 = require("./run");
5
6
  const link_refs_1 = require("../link-refs");
6
7
  const overrides_1 = require("./overrides");
7
8
  const error_1 = require("./error");
@@ -125,7 +126,7 @@ function getErrors(data, version, opts = {}) {
125
126
  const dataV3 = (0, data_1.normalizeValidationData)(data);
126
127
  const [fullContractName, runValidation] = getContractNameAndRunValidation(dataV3, version);
127
128
  const c = runValidation[fullContractName];
128
- const errors = getUsedContractsAndLibraries(fullContractName, runValidation).flatMap(name => runValidation[name].errors);
129
+ const errors = getAllErrors(runValidation, fullContractName);
129
130
  const selfAndInheritedMethods = getAllMethods(runValidation, fullContractName);
130
131
  if (!selfAndInheritedMethods.includes(upgradeToSignature)) {
131
132
  errors.push({
@@ -136,20 +137,23 @@ function getErrors(data, version, opts = {}) {
136
137
  return (0, overrides_1.processExceptions)(fullContractName, errors, opts);
137
138
  }
138
139
  exports.getErrors = getErrors;
140
+ function getAllErrors(runValidation, fullContractName) {
141
+ // add self's opcode errors only, since opcode errors already include parents
142
+ const opcodeErrors = runValidation[fullContractName].errors.filter(error => (0, run_1.isOpcodeError)(error));
143
+ // add other errors from self and inherited contracts
144
+ const otherErrors = getUsedContracts(fullContractName, runValidation)
145
+ .flatMap(name => runValidation[name].errors)
146
+ .filter(error => !(0, run_1.isOpcodeError)(error));
147
+ return [...opcodeErrors, ...otherErrors];
148
+ }
139
149
  function getAllMethods(runValidation, fullContractName) {
140
150
  const c = runValidation[fullContractName];
141
151
  return c.methods.concat(...c.inherit.map(name => runValidation[name].methods));
142
152
  }
143
- function getUsedContractsAndLibraries(contractName, runValidation) {
153
+ function getUsedContracts(contractName, runValidation) {
144
154
  const c = runValidation[contractName];
145
155
  // Add current contract and all of its parents
146
156
  const res = new Set([contractName, ...c.inherit]);
147
- // Add used libraries transitively until no more are found
148
- for (const c1 of res) {
149
- for (const c2 of runValidation[c1].libraries) {
150
- res.add(c2);
151
- }
152
- }
153
157
  return Array.from(res);
154
158
  }
155
159
  function isUpgradeSafe(data, version) {
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/validate/query.ts"],"names":[],"mappings":"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"}
@@ -32,9 +32,14 @@ interface ValidationErrorConstructor extends ValidationErrorBase {
32
32
  interface ValidationErrorOpcode extends ValidationErrorBase {
33
33
  kind: 'delegatecall' | 'selfdestruct';
34
34
  }
35
+ export declare function isOpcodeError(error: ValidationErrorBase): error is ValidationErrorOpcode;
35
36
  interface ValidationErrorUpgradeability extends ValidationErrorBase {
36
37
  kind: 'missing-public-upgradeto';
37
38
  }
39
+ /**
40
+ * Get args from the doc string matching the given tag
41
+ */
42
+ export declare function getAnnotationArgs(doc: string, tag: string): string[];
38
43
  export declare function validate(solcOutput: SolcOutput, decodeSrc: SrcDecoder, solcVersion?: string): ValidationRunData;
39
44
  export {};
40
45
  //# sourceMappingURL=run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAyB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,mNAUN,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,mBAAmB,GACnB,iBAAiB,CAAC;CACvB;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CACvC;AAED,UAAU,6BAA8B,SAAQ,mBAAmB;IACjE,IAAI,EAAE,0BAA0B,CAAC;CAClC;AAgDD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA0E/G"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAyB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,mNAUN,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,mBAAmB,GACnB,iBAAiB,CAAC;CACvB;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CACvC;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,CAExF;AAED,UAAU,6BAA8B,SAAQ,mBAAmB;IACjE,IAAI,EAAE,0BAA0B,CAAC;CAClC;AAwBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,YAqBzD;AAeD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA6E/G"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validate = void 0;
3
+ exports.validate = exports.getAnnotationArgs = exports.isOpcodeError = void 0;
4
4
  const utils_1 = require("solidity-ast/utils");
5
5
  const ast_dereferencer_1 = require("../ast-dereferencer");
6
6
  const is_nullish_1 = require("../utils/is-nullish");
@@ -19,6 +19,20 @@ const errorKinds = [
19
19
  'selfdestruct',
20
20
  'missing-public-upgradeto',
21
21
  ];
22
+ const OPCODES = {
23
+ delegatecall: {
24
+ kind: 'delegatecall',
25
+ pattern: /^t_function_baredelegatecall_/,
26
+ },
27
+ selfdestruct: {
28
+ kind: 'selfdestruct',
29
+ pattern: /^t_function_selfdestruct_/,
30
+ },
31
+ };
32
+ function isOpcodeError(error) {
33
+ return error.kind === 'delegatecall' || error.kind === 'selfdestruct';
34
+ }
35
+ exports.isOpcodeError = isOpcodeError;
22
36
  function* execall(re, text) {
23
37
  re = new RegExp(re, re.flags + (re.sticky ? '' : 'y'));
24
38
  while (true) {
@@ -31,28 +45,43 @@ function* execall(re, text) {
31
45
  }
32
46
  }
33
47
  }
34
- function getAllowed(node) {
48
+ function getAllowed(node, reachable) {
35
49
  if ('documentation' in node) {
50
+ const tag = `oz-upgrades-unsafe-allow${reachable ? '-reachable' : ''}`;
36
51
  const doc = typeof node.documentation === 'string' ? node.documentation : node.documentation?.text ?? '';
37
- const result = [];
38
- for (const { groups } of execall(/^\s*(?:@(?<title>\w+)(?::(?<tag>[a-z][a-z-]*))? )?(?<args>(?:(?!^\s@\w+)[^])*)/m, doc)) {
39
- if (groups && groups.title === 'custom' && groups.tag === 'oz-upgrades-unsafe-allow') {
40
- result.push(...groups.args.split(/\s+/));
41
- }
42
- }
43
- result.forEach(arg => {
44
- if (!errorKinds.includes(arg)) {
45
- throw new Error(`NatSpec: oz-upgrades-unsafe-allow argument not recognized: ${arg}`);
46
- }
47
- });
48
- return result;
52
+ return getAnnotationArgs(doc, tag);
49
53
  }
50
54
  else {
51
55
  return [];
52
56
  }
53
57
  }
58
+ /**
59
+ * Get args from the doc string matching the given tag
60
+ */
61
+ function getAnnotationArgs(doc, tag) {
62
+ const result = [];
63
+ for (const { groups } of execall(/^\s*(?:@(?<title>\w+)(?::(?<tag>[a-z][a-z-]*))? )?(?<args>(?:(?!^\s*@\w+)[^])*)/m, doc)) {
64
+ if (groups && groups.title === 'custom' && groups.tag === tag) {
65
+ const trimmedArgs = groups.args.trim();
66
+ if (trimmedArgs.length > 0) {
67
+ result.push(...trimmedArgs.split(/\s+/));
68
+ }
69
+ }
70
+ }
71
+ result.forEach(arg => {
72
+ if (!errorKinds.includes(arg)) {
73
+ throw new Error(`NatSpec: ${tag} argument not recognized: ${arg}`);
74
+ }
75
+ });
76
+ return result;
77
+ }
78
+ exports.getAnnotationArgs = getAnnotationArgs;
79
+ function skipCheckReachable(error, node) {
80
+ return getAllowed(node, true).includes(error);
81
+ }
54
82
  function skipCheck(error, node) {
55
- return getAllowed(node).includes(error);
83
+ // skip both allow and allow-reachable errors in the lexical scope
84
+ return getAllowed(node, false).includes(error) || getAllowed(node, true).includes(error);
56
85
  }
57
86
  function getFullyQualifiedName(source, contractName) {
58
87
  return `${source}:${contractName}`;
@@ -63,6 +92,8 @@ function validate(solcOutput, decodeSrc, solcVersion) {
63
92
  const inheritIds = {};
64
93
  const libraryIds = {};
65
94
  const deref = (0, ast_dereferencer_1.astDereferencer)(solcOutput);
95
+ const delegateCallCache = initOpcodeCache();
96
+ const selfDestructCache = initOpcodeCache();
66
97
  for (const source in solcOutput.contracts) {
67
98
  for (const contractName in solcOutput.contracts[source]) {
68
99
  const bytecode = solcOutput.contracts[source][contractName].evm.bytecode;
@@ -94,7 +125,7 @@ function validate(solcOutput, decodeSrc, solcVersion) {
94
125
  validation[key].src = decodeSrc(contractDef);
95
126
  validation[key].errors = [
96
127
  ...getConstructorErrors(contractDef, decodeSrc),
97
- ...getOpcodeErrors(contractDef, decodeSrc),
128
+ ...getOpcodeErrors(contractDef, deref, decodeSrc, delegateCallCache, selfDestructCache),
98
129
  ...getStateVariableErrors(contractDef, decodeSrc),
99
130
  // TODO: add linked libraries support
100
131
  // https://github.com/OpenZeppelin/openzeppelin-upgrades/issues/52
@@ -127,26 +158,109 @@ function* getConstructorErrors(contractDef, decodeSrc) {
127
158
  }
128
159
  }
129
160
  }
130
- function* getOpcodeErrors(contractDef, decodeSrc) {
131
- for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractDef, node => skipCheck('delegatecall', node))) {
161
+ function initOpcodeCache() {
162
+ return {
163
+ mainContractErrors: new Map(),
164
+ inheritedContractErrors: new Map(),
165
+ };
166
+ }
167
+ function* getOpcodeErrors(contractDef, deref, decodeSrc, delegateCallCache, selfDestructCache) {
168
+ yield* getContractOpcodeErrors(contractDef, deref, decodeSrc, OPCODES.delegatecall, 'main', delegateCallCache);
169
+ yield* getContractOpcodeErrors(contractDef, deref, decodeSrc, OPCODES.selfdestruct, 'main', selfDestructCache);
170
+ }
171
+ function* getContractOpcodeErrors(contractDef, deref, decodeSrc, opcode, scope, cache) {
172
+ const cached = getCachedOpcodes(contractDef.id, scope, cache);
173
+ if (cached !== undefined) {
174
+ yield* cached;
175
+ }
176
+ else {
177
+ const errors = [];
178
+ setCachedOpcodes(contractDef.id, scope, cache, errors);
179
+ errors.push(...getFunctionOpcodeErrors(contractDef, deref, decodeSrc, opcode, scope, cache), ...getInheritedContractOpcodeErrors(contractDef, deref, decodeSrc, opcode, cache));
180
+ yield* errors;
181
+ }
182
+ }
183
+ function getCachedOpcodes(key, scope, cache) {
184
+ return scope === 'main' ? cache.mainContractErrors.get(key) : cache.inheritedContractErrors.get(key);
185
+ }
186
+ function* getFunctionOpcodeErrors(contractOrFunctionDef, deref, decodeSrc, opcode, scope, cache) {
187
+ const parentContractDef = getParentDefinition(deref, contractOrFunctionDef);
188
+ if (parentContractDef === undefined || !skipCheck(opcode.kind, parentContractDef)) {
189
+ yield* getDirectFunctionOpcodeErrors(contractOrFunctionDef, decodeSrc, opcode, scope);
190
+ }
191
+ if (parentContractDef === undefined || !skipCheckReachable(opcode.kind, parentContractDef)) {
192
+ yield* getReferencedFunctionOpcodeErrors(contractOrFunctionDef, deref, decodeSrc, opcode, scope, cache);
193
+ }
194
+ }
195
+ function* getDirectFunctionOpcodeErrors(contractOrFunctionDef, decodeSrc, opcode, scope) {
196
+ for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractOrFunctionDef, node => skipCheck(opcode.kind, node) || (scope === 'inherited' && isInternalFunction(node)))) {
132
197
  const fn = fnCall.expression;
133
- if (fn.typeDescriptions.typeIdentifier?.match(/^t_function_baredelegatecall_/)) {
198
+ if (fn.typeDescriptions.typeIdentifier?.match(opcode.pattern)) {
134
199
  yield {
135
- kind: 'delegatecall',
200
+ kind: opcode.kind,
136
201
  src: decodeSrc(fnCall),
137
202
  };
138
203
  }
139
204
  }
140
- for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractDef, node => skipCheck('selfdestruct', node))) {
205
+ }
206
+ function* getReferencedFunctionOpcodeErrors(contractOrFunctionDef, deref, decodeSrc, opcode, scope, cache) {
207
+ for (const fnCall of (0, utils_1.findAll)('FunctionCall', contractOrFunctionDef, node => skipCheckReachable(opcode.kind, node) || (scope === 'inherited' && isInternalFunction(node)))) {
141
208
  const fn = fnCall.expression;
142
- if (fn.typeDescriptions.typeIdentifier?.match(/^t_function_selfdestruct_/)) {
143
- yield {
144
- kind: 'selfdestruct',
145
- src: decodeSrc(fnCall),
146
- };
209
+ if ('referencedDeclaration' in fn && fn.referencedDeclaration && fn.referencedDeclaration > 0) {
210
+ // non-positive references refer to built-in functions
211
+ const referencedNode = tryDerefFunction(deref, fn.referencedDeclaration);
212
+ if (referencedNode !== undefined) {
213
+ const cached = getCachedOpcodes(referencedNode.id, scope, cache);
214
+ if (cached !== undefined) {
215
+ yield* cached;
216
+ }
217
+ else {
218
+ const errors = [];
219
+ setCachedOpcodes(referencedNode.id, scope, cache, errors);
220
+ errors.push(...getFunctionOpcodeErrors(referencedNode, deref, decodeSrc, opcode, scope, cache));
221
+ yield* errors;
222
+ }
223
+ }
147
224
  }
148
225
  }
149
226
  }
227
+ function setCachedOpcodes(key, scope, cache, errors) {
228
+ if (scope === 'main') {
229
+ cache.mainContractErrors.set(key, errors);
230
+ }
231
+ else {
232
+ cache.inheritedContractErrors.set(key, errors);
233
+ }
234
+ }
235
+ function tryDerefFunction(deref, referencedDeclaration) {
236
+ try {
237
+ return deref(['FunctionDefinition'], referencedDeclaration);
238
+ }
239
+ catch (e) {
240
+ if (!e.message.includes('No node with id')) {
241
+ throw e;
242
+ }
243
+ }
244
+ }
245
+ function* getInheritedContractOpcodeErrors(contractDef, deref, decodeSrc, opcode, cache) {
246
+ if (!skipCheckReachable(opcode.kind, contractDef)) {
247
+ for (const base of contractDef.baseContracts) {
248
+ const referencedContract = deref('ContractDefinition', base.baseName.referencedDeclaration);
249
+ yield* getContractOpcodeErrors(referencedContract, deref, decodeSrc, opcode, 'inherited', cache);
250
+ }
251
+ }
252
+ }
253
+ function getParentDefinition(deref, contractOrFunctionDef) {
254
+ const parentNode = deref(['ContractDefinition', 'SourceUnit'], contractOrFunctionDef.scope);
255
+ if (parentNode.nodeType === 'ContractDefinition') {
256
+ return parentNode;
257
+ }
258
+ }
259
+ function isInternalFunction(node) {
260
+ return (node.nodeType === 'FunctionDefinition' &&
261
+ node.kind !== 'constructor' && // do not consider constructors as internal, because they are always called by children contracts' constructors
262
+ (node.visibility === 'internal' || node.visibility === 'private'));
263
+ }
150
264
  function* getStateVariableErrors(contractDef, decodeSrc) {
151
265
  for (const varDecl of contractDef.nodes) {
152
266
  if ((0, utils_1.isNodeType)('VariableDeclaration', varDecl)) {