@openzeppelin/upgrades-core 1.9.1

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.
Files changed (336) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +80 -0
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +160 -0
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +155 -0
  6. package/artifacts/AdminUpgradeabilityProxy.json +155 -0
  7. package/artifacts/ProxyAdmin.json +160 -0
  8. package/artifacts/contracts/proxy/AdminUpgradeabilityProxy.sol/AdminUpgradeabilityProxy.json +155 -0
  9. package/artifacts/contracts/proxy/ProxyAdmin.sol/ProxyAdmin.json +160 -0
  10. package/contracts/Initializable.sol +64 -0
  11. package/dist/ast-dereferencer.d.ts +8 -0
  12. package/dist/ast-dereferencer.d.ts.map +1 -0
  13. package/dist/ast-dereferencer.js +29 -0
  14. package/dist/ast-dereferencer.js.map +1 -0
  15. package/dist/deployment.d.ts +18 -0
  16. package/dist/deployment.d.ts.map +1 -0
  17. package/dist/deployment.js +110 -0
  18. package/dist/deployment.js.map +1 -0
  19. package/dist/deployment.test.d.ts +2 -0
  20. package/dist/deployment.test.d.ts.map +1 -0
  21. package/dist/deployment.test.js +92 -0
  22. package/dist/deployment.test.js.map +1 -0
  23. package/dist/eip-1967.d.ts +7 -0
  24. package/dist/eip-1967.d.ts.map +1 -0
  25. package/dist/eip-1967.js +63 -0
  26. package/dist/eip-1967.js.map +1 -0
  27. package/dist/error.d.ts +21 -0
  28. package/dist/error.d.ts.map +1 -0
  29. package/dist/error.js +21 -0
  30. package/dist/error.js.map +1 -0
  31. package/dist/impl-store.d.ts +7 -0
  32. package/dist/impl-store.d.ts.map +1 -0
  33. package/dist/impl-store.js +94 -0
  34. package/dist/impl-store.js.map +1 -0
  35. package/dist/impl-store.test.d.ts +2 -0
  36. package/dist/impl-store.test.d.ts.map +1 -0
  37. package/dist/impl-store.test.js +55 -0
  38. package/dist/impl-store.test.js.map +1 -0
  39. package/dist/index.d.ts +16 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +32 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/levenshtein.d.ts +12 -0
  44. package/dist/levenshtein.d.ts.map +1 -0
  45. package/dist/levenshtein.js +89 -0
  46. package/dist/levenshtein.js.map +1 -0
  47. package/dist/levenshtein.test.d.ts +2 -0
  48. package/dist/levenshtein.test.d.ts.map +1 -0
  49. package/dist/levenshtein.test.js +88 -0
  50. package/dist/levenshtein.test.js.map +1 -0
  51. package/dist/link-refs.d.ts +11 -0
  52. package/dist/link-refs.d.ts.map +1 -0
  53. package/dist/link-refs.js +36 -0
  54. package/dist/link-refs.js.map +1 -0
  55. package/dist/link-refs.test.d.ts +2 -0
  56. package/dist/link-refs.test.d.ts.map +1 -0
  57. package/dist/link-refs.test.js +76 -0
  58. package/dist/link-refs.test.js.map +1 -0
  59. package/dist/manifest-storage-layout.d.ts +6 -0
  60. package/dist/manifest-storage-layout.d.ts.map +1 -0
  61. package/dist/manifest-storage-layout.js +95 -0
  62. package/dist/manifest-storage-layout.js.map +1 -0
  63. package/dist/manifest-storage-layout.test.d.ts +2 -0
  64. package/dist/manifest-storage-layout.test.d.ts.map +1 -0
  65. package/dist/manifest-storage-layout.test.js +105 -0
  66. package/dist/manifest-storage-layout.test.js.map +1 -0
  67. package/dist/manifest.d.ts +36 -0
  68. package/dist/manifest.d.ts.map +1 -0
  69. package/dist/manifest.js +154 -0
  70. package/dist/manifest.js.map +1 -0
  71. package/dist/manifest.test.d.ts +2 -0
  72. package/dist/manifest.test.d.ts.map +1 -0
  73. package/dist/manifest.test.js +17 -0
  74. package/dist/manifest.test.js.map +1 -0
  75. package/dist/provider.d.ts +37 -0
  76. package/dist/provider.d.ts.map +1 -0
  77. package/dist/provider.js +74 -0
  78. package/dist/provider.js.map +1 -0
  79. package/dist/provider.test.d.ts +2 -0
  80. package/dist/provider.test.d.ts.map +1 -0
  81. package/dist/provider.test.js +41 -0
  82. package/dist/provider.test.js.map +1 -0
  83. package/dist/scripts/migrate-oz-cli-project.d.ts +108 -0
  84. package/dist/scripts/migrate-oz-cli-project.d.ts.map +1 -0
  85. package/dist/scripts/migrate-oz-cli-project.js +321 -0
  86. package/dist/scripts/migrate-oz-cli-project.js.map +1 -0
  87. package/dist/scripts/migrate-oz-cli-project.test.d.ts +2 -0
  88. package/dist/scripts/migrate-oz-cli-project.test.d.ts.map +1 -0
  89. package/dist/scripts/migrate-oz-cli-project.test.js +60 -0
  90. package/dist/scripts/migrate-oz-cli-project.test.js.map +1 -0
  91. package/dist/set-proxy-kind.d.ts +5 -0
  92. package/dist/set-proxy-kind.d.ts.map +1 -0
  93. package/dist/set-proxy-kind.js +25 -0
  94. package/dist/set-proxy-kind.js.map +1 -0
  95. package/dist/solc-api.d.ts +39 -0
  96. package/dist/solc-api.d.ts.map +1 -0
  97. package/dist/solc-api.js +3 -0
  98. package/dist/solc-api.js.map +1 -0
  99. package/dist/src-decoder.d.ts +6 -0
  100. package/dist/src-decoder.d.ts.map +1 -0
  101. package/dist/src-decoder.js +36 -0
  102. package/dist/src-decoder.js.map +1 -0
  103. package/dist/src-decoder.test.d.ts +2 -0
  104. package/dist/src-decoder.test.d.ts.map +1 -0
  105. package/dist/src-decoder.test.js +29 -0
  106. package/dist/src-decoder.test.js.map +1 -0
  107. package/dist/storage/compare.d.ts +55 -0
  108. package/dist/storage/compare.d.ts.map +1 -0
  109. package/dist/storage/compare.js +181 -0
  110. package/dist/storage/compare.js.map +1 -0
  111. package/dist/storage/compat.d.ts +4 -0
  112. package/dist/storage/compat.d.ts.map +1 -0
  113. package/dist/storage/compat.js +9 -0
  114. package/dist/storage/compat.js.map +1 -0
  115. package/dist/storage/extract.d.ts +7 -0
  116. package/dist/storage/extract.d.ts.map +1 -0
  117. package/dist/storage/extract.js +86 -0
  118. package/dist/storage/extract.js.map +1 -0
  119. package/dist/storage/index.d.ts +8 -0
  120. package/dist/storage/index.d.ts.map +1 -0
  121. package/dist/storage/index.js +65 -0
  122. package/dist/storage/index.js.map +1 -0
  123. package/dist/storage/layout.d.ts +31 -0
  124. package/dist/storage/layout.d.ts.map +1 -0
  125. package/dist/storage/layout.js +46 -0
  126. package/dist/storage/layout.js.map +1 -0
  127. package/dist/storage/report.d.ts +8 -0
  128. package/dist/storage/report.d.ts.map +1 -0
  129. package/dist/storage/report.js +175 -0
  130. package/dist/storage/report.js.map +1 -0
  131. package/dist/storage/report.test.d.ts +2 -0
  132. package/dist/storage/report.test.d.ts.map +1 -0
  133. package/dist/storage/report.test.js +82 -0
  134. package/dist/storage/report.test.js.map +1 -0
  135. package/dist/storage.test.d.ts +2 -0
  136. package/dist/storage.test.d.ts.map +1 -0
  137. package/dist/storage.test.js +436 -0
  138. package/dist/storage.test.js.map +1 -0
  139. package/dist/stub-provider.d.ts +14 -0
  140. package/dist/stub-provider.d.ts.map +1 -0
  141. package/dist/stub-provider.js +128 -0
  142. package/dist/stub-provider.js.map +1 -0
  143. package/dist/utils/assert.d.ts +3 -0
  144. package/dist/utils/assert.d.ts.map +1 -0
  145. package/dist/utils/assert.js +14 -0
  146. package/dist/utils/assert.js.map +1 -0
  147. package/dist/utils/curry.d.ts +6 -0
  148. package/dist/utils/curry.d.ts.map +1 -0
  149. package/dist/utils/curry.js +16 -0
  150. package/dist/utils/curry.js.map +1 -0
  151. package/dist/utils/debug.d.ts +4 -0
  152. package/dist/utils/debug.d.ts.map +1 -0
  153. package/dist/utils/debug.js +8 -0
  154. package/dist/utils/debug.js.map +1 -0
  155. package/dist/utils/deep-array.d.ts +3 -0
  156. package/dist/utils/deep-array.d.ts.map +1 -0
  157. package/dist/utils/deep-array.js +13 -0
  158. package/dist/utils/deep-array.js.map +1 -0
  159. package/dist/utils/deep-array.test.d.ts +2 -0
  160. package/dist/utils/deep-array.test.d.ts.map +1 -0
  161. package/dist/utils/deep-array.test.js +23 -0
  162. package/dist/utils/deep-array.test.js.map +1 -0
  163. package/dist/utils/function.d.ts +4 -0
  164. package/dist/utils/function.d.ts.map +1 -0
  165. package/dist/utils/function.js +43 -0
  166. package/dist/utils/function.js.map +1 -0
  167. package/dist/utils/function.test.d.ts +2 -0
  168. package/dist/utils/function.test.d.ts.map +1 -0
  169. package/dist/utils/function.test.js +34 -0
  170. package/dist/utils/function.test.js.map +1 -0
  171. package/dist/utils/indent.d.ts +2 -0
  172. package/dist/utils/indent.d.ts.map +1 -0
  173. package/dist/utils/indent.js +8 -0
  174. package/dist/utils/indent.js.map +1 -0
  175. package/dist/utils/is-nullish.d.ts +2 -0
  176. package/dist/utils/is-nullish.d.ts.map +1 -0
  177. package/dist/utils/is-nullish.js +8 -0
  178. package/dist/utils/is-nullish.js.map +1 -0
  179. package/dist/utils/is-nullish.test.d.ts +2 -0
  180. package/dist/utils/is-nullish.test.d.ts.map +1 -0
  181. package/dist/utils/is-nullish.test.js +17 -0
  182. package/dist/utils/is-nullish.test.js.map +1 -0
  183. package/dist/utils/is-value-type.d.ts +3 -0
  184. package/dist/utils/is-value-type.d.ts.map +1 -0
  185. package/dist/utils/is-value-type.js +8 -0
  186. package/dist/utils/is-value-type.js.map +1 -0
  187. package/dist/utils/itemize.d.ts +3 -0
  188. package/dist/utils/itemize.d.ts.map +1 -0
  189. package/dist/utils/itemize.js +18 -0
  190. package/dist/utils/itemize.js.map +1 -0
  191. package/dist/utils/log.d.ts +4 -0
  192. package/dist/utils/log.d.ts.map +1 -0
  193. package/dist/utils/log.js +35 -0
  194. package/dist/utils/log.js.map +1 -0
  195. package/dist/utils/make-non-enumerable.d.ts +2 -0
  196. package/dist/utils/make-non-enumerable.d.ts.map +1 -0
  197. package/dist/utils/make-non-enumerable.js +9 -0
  198. package/dist/utils/make-non-enumerable.js.map +1 -0
  199. package/dist/utils/map-values.d.ts +2 -0
  200. package/dist/utils/map-values.d.ts.map +1 -0
  201. package/dist/utils/map-values.js +12 -0
  202. package/dist/utils/map-values.js.map +1 -0
  203. package/dist/utils/parse-type-id.d.ts +9 -0
  204. package/dist/utils/parse-type-id.d.ts.map +1 -0
  205. package/dist/utils/parse-type-id.js +92 -0
  206. package/dist/utils/parse-type-id.js.map +1 -0
  207. package/dist/utils/parse-type-id.test.d.ts +2 -0
  208. package/dist/utils/parse-type-id.test.d.ts.map +1 -0
  209. package/dist/utils/parse-type-id.test.js +25 -0
  210. package/dist/utils/parse-type-id.test.js.map +1 -0
  211. package/dist/utils/pick.d.ts +2 -0
  212. package/dist/utils/pick.d.ts.map +1 -0
  213. package/dist/utils/pick.js +12 -0
  214. package/dist/utils/pick.js.map +1 -0
  215. package/dist/utils/type-id.d.ts +4 -0
  216. package/dist/utils/type-id.d.ts.map +1 -0
  217. package/dist/utils/type-id.js +65 -0
  218. package/dist/utils/type-id.js.map +1 -0
  219. package/dist/validate/compat.d.ts +6 -0
  220. package/dist/validate/compat.d.ts.map +1 -0
  221. package/dist/validate/compat.js +4 -0
  222. package/dist/validate/compat.js.map +1 -0
  223. package/dist/validate/data.d.ts +14 -0
  224. package/dist/validate/data.d.ts.map +1 -0
  225. package/dist/validate/data.js +50 -0
  226. package/dist/validate/data.js.map +1 -0
  227. package/dist/validate/error.d.ts +7 -0
  228. package/dist/validate/error.d.ts.map +1 -0
  229. package/dist/validate/error.js +78 -0
  230. package/dist/validate/error.js.map +1 -0
  231. package/dist/validate/index.d.ts +8 -0
  232. package/dist/validate/index.d.ts.map +1 -0
  233. package/dist/validate/index.js +24 -0
  234. package/dist/validate/index.js.map +1 -0
  235. package/dist/validate/overrides.d.ts +14 -0
  236. package/dist/validate/overrides.d.ts.map +1 -0
  237. package/dist/validate/overrides.js +72 -0
  238. package/dist/validate/overrides.js.map +1 -0
  239. package/dist/validate/query.d.ts +15 -0
  240. package/dist/validate/query.d.ts.map +1 -0
  241. package/dist/validate/query.js +111 -0
  242. package/dist/validate/query.js.map +1 -0
  243. package/dist/validate/query.test.d.ts +2 -0
  244. package/dist/validate/query.test.d.ts.map +1 -0
  245. package/dist/validate/query.test.js +48 -0
  246. package/dist/validate/query.test.js.map +1 -0
  247. package/dist/validate/run.d.ts +39 -0
  248. package/dist/validate/run.d.ts.map +1 -0
  249. package/dist/validate/run.js +199 -0
  250. package/dist/validate/run.js.map +1 -0
  251. package/dist/validate.test.d.ts +2 -0
  252. package/dist/validate.test.d.ts.map +1 -0
  253. package/dist/validate.test.js +116 -0
  254. package/dist/validate.test.js.map +1 -0
  255. package/dist/version.d.ts +9 -0
  256. package/dist/version.d.ts.map +1 -0
  257. package/dist/version.js +66 -0
  258. package/dist/version.js.map +1 -0
  259. package/dist/version.test.d.ts +2 -0
  260. package/dist/version.test.d.ts.map +1 -0
  261. package/dist/version.test.js +53 -0
  262. package/dist/version.test.js.map +1 -0
  263. package/package.json +58 -0
  264. package/src/ast-dereferencer.ts +42 -0
  265. package/src/deployment.test.ts +98 -0
  266. package/src/deployment.ts +122 -0
  267. package/src/eip-1967.ts +77 -0
  268. package/src/error.ts +26 -0
  269. package/src/impl-store.test.ts +59 -0
  270. package/src/impl-store.ts +124 -0
  271. package/src/index.ts +18 -0
  272. package/src/levenshtein.test.ts +91 -0
  273. package/src/levenshtein.ts +116 -0
  274. package/src/link-refs.test.ts +77 -0
  275. package/src/link-refs.ts +41 -0
  276. package/src/manifest-storage-layout.test.ts +118 -0
  277. package/src/manifest-storage-layout.ts +107 -0
  278. package/src/manifest.test.ts +13 -0
  279. package/src/manifest.ts +178 -0
  280. package/src/provider.test.ts +43 -0
  281. package/src/provider.ts +103 -0
  282. package/src/scripts/migratable-manifest.test.json +175 -0
  283. package/src/scripts/migrate-oz-cli-project.test.ts +70 -0
  284. package/src/scripts/migrate-oz-cli-project.test.ts.md +146 -0
  285. package/src/scripts/migrate-oz-cli-project.test.ts.snap +0 -0
  286. package/src/scripts/migrate-oz-cli-project.ts +484 -0
  287. package/src/scripts/project-file.test.json +25 -0
  288. package/src/set-proxy-kind.ts +27 -0
  289. package/src/solc-api.ts +42 -0
  290. package/src/src-decoder.test.ts +30 -0
  291. package/src/src-decoder.ts +37 -0
  292. package/src/storage/compare.ts +249 -0
  293. package/src/storage/compat.ts +3 -0
  294. package/src/storage/extract.ts +110 -0
  295. package/src/storage/index.ts +73 -0
  296. package/src/storage/layout.ts +88 -0
  297. package/src/storage/report.test.ts +95 -0
  298. package/src/storage/report.test.ts.md +154 -0
  299. package/src/storage/report.test.ts.snap +0 -0
  300. package/src/storage/report.ts +215 -0
  301. package/src/storage.test.ts +479 -0
  302. package/src/storage.test.ts.md +643 -0
  303. package/src/storage.test.ts.snap +0 -0
  304. package/src/stub-provider.ts +120 -0
  305. package/src/utils/assert.ts +9 -0
  306. package/src/utils/curry.ts +17 -0
  307. package/src/utils/debug.ts +3 -0
  308. package/src/utils/deep-array.test.ts +21 -0
  309. package/src/utils/deep-array.ts +9 -0
  310. package/src/utils/function.test.ts +37 -0
  311. package/src/utils/function.ts +53 -0
  312. package/src/utils/indent.ts +3 -0
  313. package/src/utils/is-nullish.test.ts +15 -0
  314. package/src/utils/is-nullish.ts +3 -0
  315. package/src/utils/is-value-type.ts +5 -0
  316. package/src/utils/itemize.ts +16 -0
  317. package/src/utils/log.ts +34 -0
  318. package/src/utils/make-non-enumerable.ts +4 -0
  319. package/src/utils/map-values.ts +7 -0
  320. package/src/utils/parse-type-id.test.ts +22 -0
  321. package/src/utils/parse-type-id.test.ts.md +264 -0
  322. package/src/utils/parse-type-id.test.ts.snap +0 -0
  323. package/src/utils/parse-type-id.ts +104 -0
  324. package/src/utils/pick.ts +7 -0
  325. package/src/utils/type-id.ts +57 -0
  326. package/src/validate/compat.ts +9 -0
  327. package/src/validate/data.ts +55 -0
  328. package/src/validate/error.ts +75 -0
  329. package/src/validate/index.ts +17 -0
  330. package/src/validate/overrides.ts +93 -0
  331. package/src/validate/query.test.ts +48 -0
  332. package/src/validate/query.ts +127 -0
  333. package/src/validate/run.ts +278 -0
  334. package/src/validate.test.ts +133 -0
  335. package/src/version.test.ts +59 -0
  336. package/src/version.ts +71 -0
@@ -0,0 +1,160 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ProxyAdmin",
4
+ "sourceName": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "previousOwner",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "address",
18
+ "name": "newOwner",
19
+ "type": "address"
20
+ }
21
+ ],
22
+ "name": "OwnershipTransferred",
23
+ "type": "event"
24
+ },
25
+ {
26
+ "inputs": [
27
+ {
28
+ "internalType": "contract TransparentUpgradeableProxy",
29
+ "name": "proxy",
30
+ "type": "address"
31
+ },
32
+ {
33
+ "internalType": "address",
34
+ "name": "newAdmin",
35
+ "type": "address"
36
+ }
37
+ ],
38
+ "name": "changeProxyAdmin",
39
+ "outputs": [],
40
+ "stateMutability": "nonpayable",
41
+ "type": "function"
42
+ },
43
+ {
44
+ "inputs": [
45
+ {
46
+ "internalType": "contract TransparentUpgradeableProxy",
47
+ "name": "proxy",
48
+ "type": "address"
49
+ }
50
+ ],
51
+ "name": "getProxyAdmin",
52
+ "outputs": [
53
+ {
54
+ "internalType": "address",
55
+ "name": "",
56
+ "type": "address"
57
+ }
58
+ ],
59
+ "stateMutability": "view",
60
+ "type": "function"
61
+ },
62
+ {
63
+ "inputs": [
64
+ {
65
+ "internalType": "contract TransparentUpgradeableProxy",
66
+ "name": "proxy",
67
+ "type": "address"
68
+ }
69
+ ],
70
+ "name": "getProxyImplementation",
71
+ "outputs": [
72
+ {
73
+ "internalType": "address",
74
+ "name": "",
75
+ "type": "address"
76
+ }
77
+ ],
78
+ "stateMutability": "view",
79
+ "type": "function"
80
+ },
81
+ {
82
+ "inputs": [],
83
+ "name": "owner",
84
+ "outputs": [
85
+ {
86
+ "internalType": "address",
87
+ "name": "",
88
+ "type": "address"
89
+ }
90
+ ],
91
+ "stateMutability": "view",
92
+ "type": "function"
93
+ },
94
+ {
95
+ "inputs": [],
96
+ "name": "renounceOwnership",
97
+ "outputs": [],
98
+ "stateMutability": "nonpayable",
99
+ "type": "function"
100
+ },
101
+ {
102
+ "inputs": [
103
+ {
104
+ "internalType": "address",
105
+ "name": "newOwner",
106
+ "type": "address"
107
+ }
108
+ ],
109
+ "name": "transferOwnership",
110
+ "outputs": [],
111
+ "stateMutability": "nonpayable",
112
+ "type": "function"
113
+ },
114
+ {
115
+ "inputs": [
116
+ {
117
+ "internalType": "contract TransparentUpgradeableProxy",
118
+ "name": "proxy",
119
+ "type": "address"
120
+ },
121
+ {
122
+ "internalType": "address",
123
+ "name": "implementation",
124
+ "type": "address"
125
+ }
126
+ ],
127
+ "name": "upgrade",
128
+ "outputs": [],
129
+ "stateMutability": "nonpayable",
130
+ "type": "function"
131
+ },
132
+ {
133
+ "inputs": [
134
+ {
135
+ "internalType": "contract TransparentUpgradeableProxy",
136
+ "name": "proxy",
137
+ "type": "address"
138
+ },
139
+ {
140
+ "internalType": "address",
141
+ "name": "implementation",
142
+ "type": "address"
143
+ },
144
+ {
145
+ "internalType": "bytes",
146
+ "name": "data",
147
+ "type": "bytes"
148
+ }
149
+ ],
150
+ "name": "upgradeAndCall",
151
+ "outputs": [],
152
+ "stateMutability": "payable",
153
+ "type": "function"
154
+ }
155
+ ],
156
+ "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610759806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033",
157
+ "deployedBytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033",
158
+ "linkReferences": {},
159
+ "deployedLinkReferences": {}
160
+ }
@@ -0,0 +1,64 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.4.24 <0.7.0;
4
+
5
+
6
+ /**
7
+ * @title Initializable
8
+ *
9
+ * @dev Helper contract to support initializer functions. To use it, replace
10
+ * the constructor with a function that has the `initializer` modifier.
11
+ * WARNING: Unlike constructors, initializer functions must be manually
12
+ * invoked. This applies both to deploying an Initializable contract, as well
13
+ * as extending an Initializable contract via inheritance.
14
+ * WARNING: When used with inheritance, manual care must be taken to not invoke
15
+ * a parent initializer twice, or ensure that all initializers are idempotent,
16
+ * because this is not dealt with automatically as with constructors.
17
+ */
18
+ contract Initializable {
19
+
20
+ /**
21
+ * @dev Indicates that the contract has been initialized.
22
+ */
23
+ bool private initialized;
24
+
25
+ /**
26
+ * @dev Indicates that the contract is in the process of being initialized.
27
+ */
28
+ bool private initializing;
29
+
30
+ /**
31
+ * @dev Modifier to use in the initializer function of a contract.
32
+ */
33
+ modifier initializer() {
34
+ require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");
35
+
36
+ bool isTopLevelCall = !initializing;
37
+ if (isTopLevelCall) {
38
+ initializing = true;
39
+ initialized = true;
40
+ }
41
+
42
+ _;
43
+
44
+ if (isTopLevelCall) {
45
+ initializing = false;
46
+ }
47
+ }
48
+
49
+ /// @dev Returns true if and only if the function is running in the constructor
50
+ function isConstructor() private view returns (bool) {
51
+ // extcodesize checks the size of the code stored in an address, and
52
+ // address returns the current address. Since the code is still not
53
+ // deployed when running a constructor, any checks on its code size will
54
+ // yield zero, making it an effective way to detect if a contract is
55
+ // under construction or not.
56
+ address self = address(this);
57
+ uint256 cs;
58
+ assembly { cs := extcodesize(self) }
59
+ return cs == 0;
60
+ }
61
+
62
+ // Reserved storage space to allow for layout changes in the future.
63
+ uint256[50] private ______gap;
64
+ }
@@ -0,0 +1,8 @@
1
+ import type { NodeType, NodeTypeMap } from 'solidity-ast/node';
2
+ import type { SolcOutput } from './solc-api';
3
+ export interface ASTDereferencer {
4
+ <T extends NodeType>(nodeTypes: T[]): (id: number) => NodeTypeMap[T];
5
+ <T extends NodeType>(nodeTypes: T[], id: number): NodeTypeMap[T];
6
+ }
7
+ export declare function astDereferencer(solcOutput: SolcOutput): ASTDereferencer;
8
+ //# sourceMappingURL=ast-dereferencer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-dereferencer.d.ts","sourceRoot":"","sources":["../src/ast-dereferencer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,MAAM,WAAW,eAAe;IAC9B,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAClE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CA0BvE"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.astDereferencer = void 0;
4
+ const utils_1 = require("solidity-ast/utils");
5
+ const curry_1 = require("./utils/curry");
6
+ function astDereferencer(solcOutput) {
7
+ const asts = Array.from(Object.values(solcOutput.sources), s => s.ast);
8
+ const cache = new Map();
9
+ function deref(nodeTypes, id) {
10
+ const cached = cache.get(id);
11
+ if (cached) {
12
+ if (nodeTypes.includes(cached.nodeType)) {
13
+ return cached;
14
+ }
15
+ }
16
+ for (const ast of asts) {
17
+ for (const node of utils_1.findAll(nodeTypes, ast)) {
18
+ if (node.id === id) {
19
+ cache.set(id, node);
20
+ return node;
21
+ }
22
+ }
23
+ }
24
+ throw new Error(`No node with id ${id} of type ${nodeTypes}`);
25
+ }
26
+ return curry_1.curry2(deref);
27
+ }
28
+ exports.astDereferencer = astDereferencer;
29
+ //# sourceMappingURL=ast-dereferencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-dereferencer.js","sourceRoot":"","sources":["../src/ast-dereferencer.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAG7C,yCAAuC;AAYvC,SAAgB,eAAe,CAAC,UAAsB;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,SAAS,KAAK,CAAqB,SAAc,EAAE,EAAU;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,MAAM,EAAE;YACV,IAAK,SAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACvD,OAAO,MAAwB,CAAC;aACjC;SACF;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,KAAK,MAAM,IAAI,IAAI,eAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;gBAC1C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;oBAClB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACpB,OAAO,IAAI,CAAC;iBACb;aACF;SACF;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,cAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AA1BD,0CA0BC"}
@@ -0,0 +1,18 @@
1
+ import { EthereumProvider } from './provider';
2
+ export interface Deployment {
3
+ address: string;
4
+ txHash?: string;
5
+ }
6
+ export declare function resumeOrDeploy<T extends Deployment>(provider: EthereumProvider, cached: T | undefined, deploy: () => Promise<T>): Promise<T>;
7
+ export declare function waitAndValidateDeployment(provider: EthereumProvider, deployment: Deployment): Promise<void>;
8
+ export declare class TransactionMinedTimeout extends Error {
9
+ readonly deployment: Deployment;
10
+ constructor(deployment: Deployment);
11
+ }
12
+ export declare class InvalidDeployment extends Error {
13
+ readonly deployment: Deployment;
14
+ removed: boolean;
15
+ constructor(deployment: Deployment);
16
+ get message(): string;
17
+ }
18
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAMjB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,UAAU,EACvD,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,CAAC,GAAG,SAAS,EACrB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CjH;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU;gBAAtB,UAAU,EAAE,UAAU;CAG5C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAG9B,QAAQ,CAAC,UAAU,EAAE,UAAU;IAF3C,OAAO,UAAS;gBAEK,UAAU,EAAE,UAAU;IAO3C,IAAI,OAAO,IAAI,MAAM,CAMpB;CACF"}
@@ -0,0 +1,110 @@
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.InvalidDeployment = exports.TransactionMinedTimeout = exports.waitAndValidateDeployment = exports.resumeOrDeploy = void 0;
7
+ const util_1 = require("util");
8
+ const debug_1 = __importDefault(require("./utils/debug"));
9
+ const make_non_enumerable_1 = require("./utils/make-non-enumerable");
10
+ const provider_1 = require("./provider");
11
+ const sleep = util_1.promisify(setTimeout);
12
+ async function resumeOrDeploy(provider, cached, deploy) {
13
+ if (cached !== undefined) {
14
+ const { txHash } = cached;
15
+ if (txHash === undefined) {
16
+ // Nothing to do here without a txHash.
17
+ // This is the case for deployments migrated from OpenZeppelin CLI.
18
+ return cached;
19
+ }
20
+ // If there is a deployment with txHash stored, we look its transaction up. If the
21
+ // transaction is found, the deployment is reused.
22
+ debug_1.default('found previous deployment', txHash);
23
+ const tx = await provider_1.getTransactionByHash(provider, txHash);
24
+ if (tx !== null) {
25
+ debug_1.default('resuming previous deployment', txHash);
26
+ return cached;
27
+ }
28
+ else if (!(await provider_1.isDevelopmentNetwork(provider))) {
29
+ // If the transaction is not found we throw an error, except if we're in
30
+ // a development network then we simply silently redeploy.
31
+ throw new InvalidDeployment(cached);
32
+ }
33
+ else {
34
+ debug_1.default('ignoring invalid deployment in development network', txHash);
35
+ }
36
+ }
37
+ const deployment = await deploy();
38
+ debug_1.default('initiated deployment', deployment.txHash);
39
+ return deployment;
40
+ }
41
+ exports.resumeOrDeploy = resumeOrDeploy;
42
+ async function waitAndValidateDeployment(provider, deployment) {
43
+ const { txHash, address } = deployment;
44
+ // Poll for 60 seconds with a 5 second poll interval.
45
+ // TODO: Make these parameters configurable.
46
+ const pollTimeout = 60e3;
47
+ const pollInterval = 5e3;
48
+ if (txHash !== undefined) {
49
+ const startTime = Date.now();
50
+ // eslint-disable-next-line no-constant-condition
51
+ while (true) {
52
+ const elapsedTime = Date.now() - startTime;
53
+ if (elapsedTime >= pollTimeout) {
54
+ // A timeout is NOT an InvalidDeployment
55
+ throw new TransactionMinedTimeout(deployment);
56
+ }
57
+ debug_1.default('verifying deployment tx mined', txHash);
58
+ const receipt = await provider_1.getTransactionReceipt(provider, txHash);
59
+ if (receipt && provider_1.isReceiptSuccessful(receipt)) {
60
+ debug_1.default('succeeded verifying deployment tx mined', txHash);
61
+ break;
62
+ }
63
+ else if (receipt) {
64
+ debug_1.default('tx was reverted', txHash);
65
+ throw new InvalidDeployment(deployment);
66
+ }
67
+ else {
68
+ debug_1.default('waiting for deployment tx mined', txHash);
69
+ await sleep(pollInterval);
70
+ }
71
+ }
72
+ }
73
+ debug_1.default('verifying code in target address', address);
74
+ const startTime = Date.now();
75
+ while (!(await provider_1.hasCode(provider, address))) {
76
+ const elapsedTime = Date.now() - startTime;
77
+ if (elapsedTime >= pollTimeout || txHash === undefined) {
78
+ throw new InvalidDeployment(deployment);
79
+ }
80
+ await sleep(pollInterval);
81
+ }
82
+ debug_1.default('code in target address found', address);
83
+ }
84
+ exports.waitAndValidateDeployment = waitAndValidateDeployment;
85
+ class TransactionMinedTimeout extends Error {
86
+ constructor(deployment) {
87
+ super(`Timed out waiting for transaction ${deployment.txHash}`);
88
+ this.deployment = deployment;
89
+ }
90
+ }
91
+ exports.TransactionMinedTimeout = TransactionMinedTimeout;
92
+ class InvalidDeployment extends Error {
93
+ constructor(deployment) {
94
+ super();
95
+ this.deployment = deployment;
96
+ this.removed = false;
97
+ // This hides the properties from the error when it's printed.
98
+ make_non_enumerable_1.makeNonEnumerable(this, 'removed');
99
+ make_non_enumerable_1.makeNonEnumerable(this, 'deployment');
100
+ }
101
+ get message() {
102
+ let msg = `No contract at address ${this.deployment.address}`;
103
+ if (this.removed) {
104
+ msg += ' (Removed from manifest)';
105
+ }
106
+ return msg;
107
+ }
108
+ }
109
+ exports.InvalidDeployment = InvalidDeployment;
110
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deployment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.test.d.ts","sourceRoot":"","sources":["../src/deployment.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
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
+ const ava_1 = __importDefault(require("ava"));
7
+ const util_1 = require("util");
8
+ const deployment_1 = require("./deployment");
9
+ const stub_provider_1 = require("./stub-provider");
10
+ const sleep = util_1.promisify(setTimeout);
11
+ ava_1.default('deploys new contract', async (t) => {
12
+ const provider = stub_provider_1.stubProvider();
13
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deploy);
14
+ t.true(provider.isContract(deployment.address));
15
+ t.is(provider.deployCount, 1);
16
+ });
17
+ ava_1.default('resumes existing deployment with txHash', async (t) => {
18
+ const provider = stub_provider_1.stubProvider();
19
+ const first = await deployment_1.resumeOrDeploy(provider, undefined, provider.deployPending);
20
+ const second = await deployment_1.resumeOrDeploy(provider, first, provider.deployPending);
21
+ t.is(first, second);
22
+ t.is(provider.deployCount, 1);
23
+ });
24
+ ava_1.default('resumes existing deployment without txHash', async (t) => {
25
+ const provider = stub_provider_1.stubProvider();
26
+ const first = await provider.deploy();
27
+ delete first.txHash;
28
+ const second = await deployment_1.resumeOrDeploy(provider, first, provider.deployPending);
29
+ t.is(first, second);
30
+ t.is(provider.deployCount, 1);
31
+ });
32
+ ava_1.default('errors if tx is not found', async (t) => {
33
+ const provider = stub_provider_1.stubProvider();
34
+ const fakeDeployment = {
35
+ address: '0x1aec6468218510f19bb19f52c4767996895ce711',
36
+ txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
37
+ };
38
+ await t.throwsAsync(deployment_1.resumeOrDeploy(provider, fakeDeployment, provider.deploy));
39
+ });
40
+ ava_1.default('redeploys if tx is not found on dev network', async (t) => {
41
+ // 31337 = Hardhat Network chainId
42
+ const provider = stub_provider_1.stubProvider(31337, 'HardhatNetwork/2.2.1/@ethereumjs/vm/5.3.2');
43
+ const fakeDeployment = {
44
+ address: '0x1aec6468218510f19bb19f52c4767996895ce711',
45
+ txHash: '0xc48e21ac9c051922f5ccf1b47b62000f567ef9bbc108d274848b44351a6872cb',
46
+ };
47
+ const deployment = await deployment_1.resumeOrDeploy(provider, fakeDeployment, provider.deploy);
48
+ t.true(provider.isContract(deployment.address));
49
+ t.is(provider.deployCount, 1);
50
+ });
51
+ ava_1.default('validates a mined deployment with txHash', async (t) => {
52
+ const provider = stub_provider_1.stubProvider();
53
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deploy);
54
+ await deployment_1.waitAndValidateDeployment(provider, deployment);
55
+ t.is(provider.getMethodCount('eth_getTransactionReceipt'), 1);
56
+ t.is(provider.getMethodCount('eth_getCode'), 1);
57
+ });
58
+ ava_1.default('validates a mined deployment without txHash', async (t) => {
59
+ const provider = stub_provider_1.stubProvider();
60
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deploy);
61
+ delete deployment.txHash;
62
+ await deployment_1.waitAndValidateDeployment(provider, deployment);
63
+ t.is(provider.getMethodCount('eth_getTransactionReceipt'), 0);
64
+ t.is(provider.getMethodCount('eth_getCode'), 1);
65
+ });
66
+ ava_1.default('waits for a deployment to mine', async (t) => {
67
+ const timeout = Symbol('timeout');
68
+ const provider = stub_provider_1.stubProvider();
69
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deployPending);
70
+ const result = await Promise.race([deployment_1.waitAndValidateDeployment(provider, deployment), sleep(100).then(() => timeout)]);
71
+ t.is(result, timeout);
72
+ provider.mine();
73
+ await deployment_1.waitAndValidateDeployment(provider, deployment);
74
+ });
75
+ ava_1.default('fails deployment fast if tx reverts', async (t) => {
76
+ const provider = stub_provider_1.stubProvider();
77
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deploy);
78
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
79
+ provider.failTx(deployment.txHash);
80
+ await t.throwsAsync(deployment_1.waitAndValidateDeployment(provider, deployment));
81
+ });
82
+ ava_1.default('waits for a deployment to return contract code', async (t) => {
83
+ const timeout = Symbol('timeout');
84
+ const provider = stub_provider_1.stubProvider();
85
+ const deployment = await deployment_1.resumeOrDeploy(provider, undefined, provider.deploy);
86
+ provider.removeContract(deployment.address);
87
+ const result = await Promise.race([deployment_1.waitAndValidateDeployment(provider, deployment), sleep(100).then(() => timeout)]);
88
+ t.is(result, timeout);
89
+ provider.addContract(deployment.address);
90
+ await deployment_1.waitAndValidateDeployment(provider, deployment);
91
+ });
92
+ //# sourceMappingURL=deployment.test.js.map