create-microact-app 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/package.json +1 -1
  2. package/templates/vanilla/package.json +1 -1
  3. package/templates/vanilla/src/components/App.js +22 -35
  4. package/templates/vanilla/src/components/Card.js +5 -12
  5. package/templates/vanilla/src/components/Hero.js +6 -8
  6. package/templates/vanilla/src/components/InteractiveDemo.js +34 -32
  7. package/templates/vanilla/src/main.js +2 -6
  8. package/templates/web3/contracts/.gitmodules +3 -0
  9. package/templates/web3/contracts/foundry.lock +8 -0
  10. package/templates/web3/contracts/lib/forge-std/.gitattributes +1 -0
  11. package/templates/web3/contracts/lib/forge-std/.github/CODEOWNERS +1 -0
  12. package/templates/web3/contracts/lib/forge-std/.github/dependabot.yml +6 -0
  13. package/templates/web3/contracts/lib/forge-std/.github/workflows/ci.yml +125 -0
  14. package/templates/web3/contracts/lib/forge-std/.github/workflows/sync.yml +36 -0
  15. package/templates/web3/contracts/lib/forge-std/CONTRIBUTING.md +193 -0
  16. package/templates/web3/contracts/lib/forge-std/LICENSE-APACHE +203 -0
  17. package/templates/web3/contracts/lib/forge-std/LICENSE-MIT +25 -0
  18. package/templates/web3/contracts/lib/forge-std/README.md +268 -0
  19. package/templates/web3/contracts/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  20. package/templates/web3/contracts/lib/forge-std/foundry.toml +18 -0
  21. package/templates/web3/contracts/lib/forge-std/package.json +16 -0
  22. package/templates/web3/contracts/lib/forge-std/scripts/vm.py +636 -0
  23. package/templates/web3/contracts/lib/forge-std/src/Base.sol +48 -0
  24. package/templates/web3/contracts/lib/forge-std/src/Config.sol +60 -0
  25. package/templates/web3/contracts/lib/forge-std/src/LibVariable.sol +477 -0
  26. package/templates/web3/contracts/lib/forge-std/src/Script.sol +28 -0
  27. package/templates/web3/contracts/lib/forge-std/src/StdAssertions.sol +779 -0
  28. package/templates/web3/contracts/lib/forge-std/src/StdChains.sol +295 -0
  29. package/templates/web3/contracts/lib/forge-std/src/StdCheats.sol +825 -0
  30. package/templates/web3/contracts/lib/forge-std/src/StdConfig.sol +632 -0
  31. package/templates/web3/contracts/lib/forge-std/src/StdConstants.sol +30 -0
  32. package/templates/web3/contracts/lib/forge-std/src/StdError.sol +15 -0
  33. package/templates/web3/contracts/lib/forge-std/src/StdInvariant.sol +120 -0
  34. package/templates/web3/contracts/lib/forge-std/src/StdJson.sol +275 -0
  35. package/templates/web3/contracts/lib/forge-std/src/StdMath.sol +47 -0
  36. package/templates/web3/contracts/lib/forge-std/src/StdStorage.sol +475 -0
  37. package/templates/web3/contracts/lib/forge-std/src/StdStyle.sol +333 -0
  38. package/templates/web3/contracts/lib/forge-std/src/StdToml.sol +275 -0
  39. package/templates/web3/contracts/lib/forge-std/src/StdUtils.sol +200 -0
  40. package/templates/web3/contracts/lib/forge-std/src/Test.sol +32 -0
  41. package/templates/web3/contracts/lib/forge-std/src/Vm.sol +2500 -0
  42. package/templates/web3/contracts/lib/forge-std/src/console.sol +1551 -0
  43. package/templates/web3/contracts/lib/forge-std/src/console2.sol +4 -0
  44. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
  45. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC165.sol +12 -0
  46. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC20.sol +43 -0
  47. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
  48. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
  49. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC721.sol +164 -0
  50. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
  51. package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
  52. package/templates/web3/contracts/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
  53. package/templates/web3/contracts/lib/forge-std/src/safeconsole.sol +13248 -0
  54. package/templates/web3/contracts/lib/forge-std/test/CommonBase.t.sol +44 -0
  55. package/templates/web3/contracts/lib/forge-std/test/Config.t.sol +381 -0
  56. package/templates/web3/contracts/lib/forge-std/test/LibVariable.t.sol +452 -0
  57. package/templates/web3/contracts/lib/forge-std/test/StdAssertions.t.sol +141 -0
  58. package/templates/web3/contracts/lib/forge-std/test/StdChains.t.sol +227 -0
  59. package/templates/web3/contracts/lib/forge-std/test/StdCheats.t.sol +638 -0
  60. package/templates/web3/contracts/lib/forge-std/test/StdConstants.t.sol +38 -0
  61. package/templates/web3/contracts/lib/forge-std/test/StdError.t.sol +119 -0
  62. package/templates/web3/contracts/lib/forge-std/test/StdJson.t.sol +49 -0
  63. package/templates/web3/contracts/lib/forge-std/test/StdMath.t.sol +202 -0
  64. package/templates/web3/contracts/lib/forge-std/test/StdStorage.t.sol +485 -0
  65. package/templates/web3/contracts/lib/forge-std/test/StdStyle.t.sol +110 -0
  66. package/templates/web3/contracts/lib/forge-std/test/StdToml.t.sol +49 -0
  67. package/templates/web3/contracts/lib/forge-std/test/StdUtils.t.sol +342 -0
  68. package/templates/web3/contracts/lib/forge-std/test/Vm.t.sol +18 -0
  69. package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
  70. package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
  71. package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
  72. package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
  73. package/templates/web3/contracts/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
  74. package/templates/web3/contracts/lib/forge-std/test/fixtures/config.toml +81 -0
  75. package/templates/web3/contracts/lib/forge-std/test/fixtures/test.json +8 -0
  76. package/templates/web3/contracts/lib/forge-std/test/fixtures/test.toml +6 -0
  77. package/templates/web3/package.json +1 -1
  78. package/templates/web3/src/components/App.js +23 -36
  79. package/templates/web3/src/components/CounterCard.js +45 -45
  80. package/templates/web3/src/main.js +5 -7
  81. package/templates/vanilla/node_modules/.package-lock.json +0 -207
  82. package/templates/vanilla/node_modules/@esbuild/darwin-x64/README.md +0 -3
  83. package/templates/vanilla/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
  84. package/templates/vanilla/node_modules/@esbuild/darwin-x64/package.json +0 -17
  85. package/templates/vanilla/node_modules/@monygroupcorp/microact/README.md +0 -154
  86. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js +0 -1749
  87. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js.map +0 -1
  88. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js +0 -1743
  89. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js.map +0 -1
  90. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js +0 -2
  91. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js.map +0 -1
  92. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.html +0 -13
  93. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.js +0 -63
  94. package/templates/vanilla/node_modules/@monygroupcorp/microact/package.json +0 -38
  95. package/templates/vanilla/node_modules/@monygroupcorp/microact/rollup.config.cjs +0 -30
  96. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Component.js +0 -831
  97. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/DOMUpdater.js +0 -320
  98. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/EventBus.js +0 -123
  99. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Router.js +0 -253
  100. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/UpdateScheduler.js +0 -218
  101. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/index.js +0 -6
  102. package/templates/vanilla/node_modules/esbuild/LICENSE.md +0 -21
  103. package/templates/vanilla/node_modules/esbuild/README.md +0 -3
  104. package/templates/vanilla/node_modules/esbuild/bin/esbuild +0 -0
  105. package/templates/vanilla/node_modules/esbuild/install.js +0 -287
  106. package/templates/vanilla/node_modules/esbuild/lib/main.d.ts +0 -660
  107. package/templates/vanilla/node_modules/esbuild/lib/main.js +0 -2393
  108. package/templates/vanilla/node_modules/esbuild/package.json +0 -42
  109. package/templates/vanilla/node_modules/nanoid/LICENSE +0 -20
  110. package/templates/vanilla/node_modules/nanoid/README.md +0 -39
  111. package/templates/vanilla/node_modules/nanoid/async/index.browser.cjs +0 -69
  112. package/templates/vanilla/node_modules/nanoid/async/index.browser.js +0 -34
  113. package/templates/vanilla/node_modules/nanoid/async/index.cjs +0 -71
  114. package/templates/vanilla/node_modules/nanoid/async/index.d.ts +0 -56
  115. package/templates/vanilla/node_modules/nanoid/async/index.js +0 -35
  116. package/templates/vanilla/node_modules/nanoid/async/index.native.js +0 -26
  117. package/templates/vanilla/node_modules/nanoid/async/package.json +0 -12
  118. package/templates/vanilla/node_modules/nanoid/bin/nanoid.cjs +0 -55
  119. package/templates/vanilla/node_modules/nanoid/index.browser.cjs +0 -72
  120. package/templates/vanilla/node_modules/nanoid/index.browser.js +0 -34
  121. package/templates/vanilla/node_modules/nanoid/index.cjs +0 -85
  122. package/templates/vanilla/node_modules/nanoid/index.d.cts +0 -91
  123. package/templates/vanilla/node_modules/nanoid/index.d.ts +0 -91
  124. package/templates/vanilla/node_modules/nanoid/index.js +0 -45
  125. package/templates/vanilla/node_modules/nanoid/nanoid.js +0 -1
  126. package/templates/vanilla/node_modules/nanoid/non-secure/index.cjs +0 -34
  127. package/templates/vanilla/node_modules/nanoid/non-secure/index.d.ts +0 -33
  128. package/templates/vanilla/node_modules/nanoid/non-secure/index.js +0 -21
  129. package/templates/vanilla/node_modules/nanoid/non-secure/package.json +0 -6
  130. package/templates/vanilla/node_modules/nanoid/package.json +0 -89
  131. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.cjs +0 -7
  132. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.js +0 -3
  133. package/templates/vanilla/node_modules/nanoid/url-alphabet/package.json +0 -6
  134. package/templates/vanilla/node_modules/picocolors/LICENSE +0 -15
  135. package/templates/vanilla/node_modules/picocolors/README.md +0 -21
  136. package/templates/vanilla/node_modules/picocolors/package.json +0 -25
  137. package/templates/vanilla/node_modules/picocolors/picocolors.browser.js +0 -4
  138. package/templates/vanilla/node_modules/picocolors/picocolors.d.ts +0 -5
  139. package/templates/vanilla/node_modules/picocolors/picocolors.js +0 -75
  140. package/templates/vanilla/node_modules/picocolors/types.d.ts +0 -51
  141. package/templates/vanilla/node_modules/postcss/LICENSE +0 -20
  142. package/templates/vanilla/node_modules/postcss/README.md +0 -29
  143. package/templates/vanilla/node_modules/postcss/lib/at-rule.d.ts +0 -140
  144. package/templates/vanilla/node_modules/postcss/lib/at-rule.js +0 -25
  145. package/templates/vanilla/node_modules/postcss/lib/comment.d.ts +0 -68
  146. package/templates/vanilla/node_modules/postcss/lib/comment.js +0 -13
  147. package/templates/vanilla/node_modules/postcss/lib/container.d.ts +0 -483
  148. package/templates/vanilla/node_modules/postcss/lib/container.js +0 -447
  149. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts +0 -248
  150. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.js +0 -133
  151. package/templates/vanilla/node_modules/postcss/lib/declaration.d.ts +0 -151
  152. package/templates/vanilla/node_modules/postcss/lib/declaration.js +0 -24
  153. package/templates/vanilla/node_modules/postcss/lib/document.d.ts +0 -69
  154. package/templates/vanilla/node_modules/postcss/lib/document.js +0 -33
  155. package/templates/vanilla/node_modules/postcss/lib/fromJSON.d.ts +0 -9
  156. package/templates/vanilla/node_modules/postcss/lib/fromJSON.js +0 -54
  157. package/templates/vanilla/node_modules/postcss/lib/input.d.ts +0 -227
  158. package/templates/vanilla/node_modules/postcss/lib/input.js +0 -265
  159. package/templates/vanilla/node_modules/postcss/lib/lazy-result.d.ts +0 -190
  160. package/templates/vanilla/node_modules/postcss/lib/lazy-result.js +0 -550
  161. package/templates/vanilla/node_modules/postcss/lib/list.d.ts +0 -60
  162. package/templates/vanilla/node_modules/postcss/lib/list.js +0 -58
  163. package/templates/vanilla/node_modules/postcss/lib/map-generator.js +0 -368
  164. package/templates/vanilla/node_modules/postcss/lib/no-work-result.d.ts +0 -46
  165. package/templates/vanilla/node_modules/postcss/lib/no-work-result.js +0 -138
  166. package/templates/vanilla/node_modules/postcss/lib/node.d.ts +0 -556
  167. package/templates/vanilla/node_modules/postcss/lib/node.js +0 -449
  168. package/templates/vanilla/node_modules/postcss/lib/parse.d.ts +0 -9
  169. package/templates/vanilla/node_modules/postcss/lib/parse.js +0 -42
  170. package/templates/vanilla/node_modules/postcss/lib/parser.js +0 -611
  171. package/templates/vanilla/node_modules/postcss/lib/postcss.d.mts +0 -69
  172. package/templates/vanilla/node_modules/postcss/lib/postcss.d.ts +0 -458
  173. package/templates/vanilla/node_modules/postcss/lib/postcss.js +0 -101
  174. package/templates/vanilla/node_modules/postcss/lib/postcss.mjs +0 -30
  175. package/templates/vanilla/node_modules/postcss/lib/previous-map.d.ts +0 -81
  176. package/templates/vanilla/node_modules/postcss/lib/previous-map.js +0 -144
  177. package/templates/vanilla/node_modules/postcss/lib/processor.d.ts +0 -115
  178. package/templates/vanilla/node_modules/postcss/lib/processor.js +0 -67
  179. package/templates/vanilla/node_modules/postcss/lib/result.d.ts +0 -205
  180. package/templates/vanilla/node_modules/postcss/lib/result.js +0 -42
  181. package/templates/vanilla/node_modules/postcss/lib/root.d.ts +0 -87
  182. package/templates/vanilla/node_modules/postcss/lib/root.js +0 -61
  183. package/templates/vanilla/node_modules/postcss/lib/rule.d.ts +0 -126
  184. package/templates/vanilla/node_modules/postcss/lib/rule.js +0 -27
  185. package/templates/vanilla/node_modules/postcss/lib/stringifier.d.ts +0 -46
  186. package/templates/vanilla/node_modules/postcss/lib/stringifier.js +0 -353
  187. package/templates/vanilla/node_modules/postcss/lib/stringify.d.ts +0 -9
  188. package/templates/vanilla/node_modules/postcss/lib/stringify.js +0 -11
  189. package/templates/vanilla/node_modules/postcss/lib/symbols.js +0 -5
  190. package/templates/vanilla/node_modules/postcss/lib/terminal-highlight.js +0 -70
  191. package/templates/vanilla/node_modules/postcss/lib/tokenize.js +0 -266
  192. package/templates/vanilla/node_modules/postcss/lib/warn-once.js +0 -13
  193. package/templates/vanilla/node_modules/postcss/lib/warning.d.ts +0 -147
  194. package/templates/vanilla/node_modules/postcss/lib/warning.js +0 -37
  195. package/templates/vanilla/node_modules/postcss/package.json +0 -88
  196. package/templates/vanilla/node_modules/rollup/LICENSE.md +0 -695
  197. package/templates/vanilla/node_modules/rollup/README.md +0 -125
  198. package/templates/vanilla/node_modules/rollup/dist/bin/rollup +0 -1715
  199. package/templates/vanilla/node_modules/rollup/dist/es/getLogFilter.js +0 -64
  200. package/templates/vanilla/node_modules/rollup/dist/es/package.json +0 -1
  201. package/templates/vanilla/node_modules/rollup/dist/es/rollup.js +0 -17
  202. package/templates/vanilla/node_modules/rollup/dist/es/shared/node-entry.js +0 -27273
  203. package/templates/vanilla/node_modules/rollup/dist/es/shared/watch.js +0 -4857
  204. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.d.ts +0 -5
  205. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.js +0 -69
  206. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.d.ts +0 -20
  207. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.js +0 -29
  208. package/templates/vanilla/node_modules/rollup/dist/rollup.d.ts +0 -1012
  209. package/templates/vanilla/node_modules/rollup/dist/rollup.js +0 -31
  210. package/templates/vanilla/node_modules/rollup/dist/shared/fsevents-importer.js +0 -37
  211. package/templates/vanilla/node_modules/rollup/dist/shared/index.js +0 -4571
  212. package/templates/vanilla/node_modules/rollup/dist/shared/loadConfigFile.js +0 -546
  213. package/templates/vanilla/node_modules/rollup/dist/shared/rollup.js +0 -27351
  214. package/templates/vanilla/node_modules/rollup/dist/shared/watch-cli.js +0 -561
  215. package/templates/vanilla/node_modules/rollup/dist/shared/watch-proxy.js +0 -87
  216. package/templates/vanilla/node_modules/rollup/dist/shared/watch.js +0 -316
  217. package/templates/vanilla/node_modules/rollup/package.json +0 -181
  218. package/templates/vanilla/node_modules/source-map-js/LICENSE +0 -28
  219. package/templates/vanilla/node_modules/source-map-js/README.md +0 -765
  220. package/templates/vanilla/node_modules/source-map-js/lib/array-set.js +0 -121
  221. package/templates/vanilla/node_modules/source-map-js/lib/base64-vlq.js +0 -140
  222. package/templates/vanilla/node_modules/source-map-js/lib/base64.js +0 -67
  223. package/templates/vanilla/node_modules/source-map-js/lib/binary-search.js +0 -111
  224. package/templates/vanilla/node_modules/source-map-js/lib/mapping-list.js +0 -79
  225. package/templates/vanilla/node_modules/source-map-js/lib/quick-sort.js +0 -132
  226. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.d.ts +0 -1
  227. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
  228. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.d.ts +0 -1
  229. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.js +0 -444
  230. package/templates/vanilla/node_modules/source-map-js/lib/source-node.d.ts +0 -1
  231. package/templates/vanilla/node_modules/source-map-js/lib/source-node.js +0 -413
  232. package/templates/vanilla/node_modules/source-map-js/lib/util.js +0 -594
  233. package/templates/vanilla/node_modules/source-map-js/package.json +0 -71
  234. package/templates/vanilla/node_modules/source-map-js/source-map.d.ts +0 -104
  235. package/templates/vanilla/node_modules/source-map-js/source-map.js +0 -8
  236. package/templates/vanilla/node_modules/vite/LICENSE.md +0 -3396
  237. package/templates/vanilla/node_modules/vite/README.md +0 -20
  238. package/templates/vanilla/node_modules/vite/bin/openChrome.applescript +0 -95
  239. package/templates/vanilla/node_modules/vite/bin/vite.js +0 -61
  240. package/templates/vanilla/node_modules/vite/client.d.ts +0 -281
  241. package/templates/vanilla/node_modules/vite/dist/client/client.mjs +0 -725
  242. package/templates/vanilla/node_modules/vite/dist/client/client.mjs.map +0 -1
  243. package/templates/vanilla/node_modules/vite/dist/client/env.mjs +0 -30
  244. package/templates/vanilla/node_modules/vite/dist/client/env.mjs.map +0 -1
  245. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-7ec6f216.js +0 -914
  246. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-827b23df.js +0 -66713
  247. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-c423598f.js +0 -561
  248. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js +0 -7930
  249. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f1e8587f.js +0 -7646
  250. package/templates/vanilla/node_modules/vite/dist/node/cli.js +0 -929
  251. package/templates/vanilla/node_modules/vite/dist/node/constants.js +0 -130
  252. package/templates/vanilla/node_modules/vite/dist/node/index.d.ts +0 -3548
  253. package/templates/vanilla/node_modules/vite/dist/node/index.js +0 -158
  254. package/templates/vanilla/node_modules/vite/dist/node-cjs/publicUtils.cjs +0 -4555
  255. package/templates/vanilla/node_modules/vite/index.cjs +0 -34
  256. package/templates/vanilla/node_modules/vite/package.json +0 -173
  257. package/templates/vanilla/node_modules/vite/types/customEvent.d.ts +0 -35
  258. package/templates/vanilla/node_modules/vite/types/hmrPayload.d.ts +0 -61
  259. package/templates/vanilla/node_modules/vite/types/hot.d.ts +0 -32
  260. package/templates/vanilla/node_modules/vite/types/importGlob.d.ts +0 -97
  261. package/templates/vanilla/node_modules/vite/types/importMeta.d.ts +0 -26
  262. package/templates/vanilla/node_modules/vite/types/metadata.d.ts +0 -10
  263. package/templates/vanilla/node_modules/vite/types/package.json +0 -4
  264. package/templates/vanilla/package-lock.json +0 -589
@@ -0,0 +1,120 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.13 <0.9.0;
3
+
4
+ abstract contract StdInvariant {
5
+ struct FuzzSelector {
6
+ address addr;
7
+ bytes4[] selectors;
8
+ }
9
+
10
+ struct FuzzArtifactSelector {
11
+ string artifact;
12
+ bytes4[] selectors;
13
+ }
14
+
15
+ struct FuzzInterface {
16
+ address addr;
17
+ string[] artifacts;
18
+ }
19
+
20
+ address[] private _excludedContracts;
21
+ address[] private _excludedSenders;
22
+ address[] private _targetedContracts;
23
+ address[] private _targetedSenders;
24
+
25
+ string[] private _excludedArtifacts;
26
+ string[] private _targetedArtifacts;
27
+
28
+ FuzzArtifactSelector[] private _targetedArtifactSelectors;
29
+
30
+ FuzzSelector[] private _excludedSelectors;
31
+ FuzzSelector[] private _targetedSelectors;
32
+
33
+ FuzzInterface[] private _targetedInterfaces;
34
+
35
+ // Functions for users:
36
+ // These are intended to be called in tests.
37
+
38
+ function excludeContract(address newExcludedContract_) internal {
39
+ _excludedContracts.push(newExcludedContract_);
40
+ }
41
+
42
+ function excludeSelector(FuzzSelector memory newExcludedSelector_) internal {
43
+ _excludedSelectors.push(newExcludedSelector_);
44
+ }
45
+
46
+ function excludeSender(address newExcludedSender_) internal {
47
+ _excludedSenders.push(newExcludedSender_);
48
+ }
49
+
50
+ function excludeArtifact(string memory newExcludedArtifact_) internal {
51
+ _excludedArtifacts.push(newExcludedArtifact_);
52
+ }
53
+
54
+ function targetArtifact(string memory newTargetedArtifact_) internal {
55
+ _targetedArtifacts.push(newTargetedArtifact_);
56
+ }
57
+
58
+ function targetArtifactSelector(FuzzArtifactSelector memory newTargetedArtifactSelector_) internal {
59
+ _targetedArtifactSelectors.push(newTargetedArtifactSelector_);
60
+ }
61
+
62
+ function targetContract(address newTargetedContract_) internal {
63
+ _targetedContracts.push(newTargetedContract_);
64
+ }
65
+
66
+ function targetSelector(FuzzSelector memory newTargetedSelector_) internal {
67
+ _targetedSelectors.push(newTargetedSelector_);
68
+ }
69
+
70
+ function targetSender(address newTargetedSender_) internal {
71
+ _targetedSenders.push(newTargetedSender_);
72
+ }
73
+
74
+ function targetInterface(FuzzInterface memory newTargetedInterface_) internal {
75
+ _targetedInterfaces.push(newTargetedInterface_);
76
+ }
77
+
78
+ // Functions for forge:
79
+ // These are called by forge to run invariant tests and don't need to be called in tests.
80
+
81
+ function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) {
82
+ excludedArtifacts_ = _excludedArtifacts;
83
+ }
84
+
85
+ function excludeContracts() public view returns (address[] memory excludedContracts_) {
86
+ excludedContracts_ = _excludedContracts;
87
+ }
88
+
89
+ function excludeSelectors() public view returns (FuzzSelector[] memory excludedSelectors_) {
90
+ excludedSelectors_ = _excludedSelectors;
91
+ }
92
+
93
+ function excludeSenders() public view returns (address[] memory excludedSenders_) {
94
+ excludedSenders_ = _excludedSenders;
95
+ }
96
+
97
+ function targetArtifacts() public view returns (string[] memory targetedArtifacts_) {
98
+ targetedArtifacts_ = _targetedArtifacts;
99
+ }
100
+
101
+ function targetArtifactSelectors() public view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_) {
102
+ targetedArtifactSelectors_ = _targetedArtifactSelectors;
103
+ }
104
+
105
+ function targetContracts() public view returns (address[] memory targetedContracts_) {
106
+ targetedContracts_ = _targetedContracts;
107
+ }
108
+
109
+ function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) {
110
+ targetedSelectors_ = _targetedSelectors;
111
+ }
112
+
113
+ function targetSenders() public view returns (address[] memory targetedSenders_) {
114
+ targetedSenders_ = _targetedSenders;
115
+ }
116
+
117
+ function targetInterfaces() public view returns (FuzzInterface[] memory targetedInterfaces_) {
118
+ targetedInterfaces_ = _targetedInterfaces;
119
+ }
120
+ }
@@ -0,0 +1,275 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.13 <0.9.0;
3
+
4
+ import {VmSafe} from "./Vm.sol";
5
+
6
+ // Helpers for parsing and writing JSON files
7
+ // To parse:
8
+ // ```
9
+ // using stdJson for string;
10
+ // string memory json = vm.readFile("<some_path>");
11
+ // json.readUint("<json_path>");
12
+ // ```
13
+ // To write:
14
+ // ```
15
+ // using stdJson for string;
16
+ // string memory json = "json";
17
+ // json.serialize("a", uint256(123));
18
+ // string memory semiFinal = json.serialize("b", string("test"));
19
+ // string memory finalJson = json.serialize("c", semiFinal);
20
+ // finalJson.write("<some_path>");
21
+ // ```
22
+
23
+ library stdJson {
24
+ VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code")))));
25
+
26
+ function keyExists(string memory json, string memory key) internal view returns (bool) {
27
+ return vm.keyExistsJson(json, key);
28
+ }
29
+
30
+ function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) {
31
+ return vm.parseJson(json, key);
32
+ }
33
+
34
+ function readUint(string memory json, string memory key) internal pure returns (uint256) {
35
+ return vm.parseJsonUint(json, key);
36
+ }
37
+
38
+ function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) {
39
+ return vm.parseJsonUintArray(json, key);
40
+ }
41
+
42
+ function readInt(string memory json, string memory key) internal pure returns (int256) {
43
+ return vm.parseJsonInt(json, key);
44
+ }
45
+
46
+ function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) {
47
+ return vm.parseJsonIntArray(json, key);
48
+ }
49
+
50
+ function readBytes32(string memory json, string memory key) internal pure returns (bytes32) {
51
+ return vm.parseJsonBytes32(json, key);
52
+ }
53
+
54
+ function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) {
55
+ return vm.parseJsonBytes32Array(json, key);
56
+ }
57
+
58
+ function readString(string memory json, string memory key) internal pure returns (string memory) {
59
+ return vm.parseJsonString(json, key);
60
+ }
61
+
62
+ function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) {
63
+ return vm.parseJsonStringArray(json, key);
64
+ }
65
+
66
+ function readAddress(string memory json, string memory key) internal pure returns (address) {
67
+ return vm.parseJsonAddress(json, key);
68
+ }
69
+
70
+ function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) {
71
+ return vm.parseJsonAddressArray(json, key);
72
+ }
73
+
74
+ function readBool(string memory json, string memory key) internal pure returns (bool) {
75
+ return vm.parseJsonBool(json, key);
76
+ }
77
+
78
+ function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) {
79
+ return vm.parseJsonBoolArray(json, key);
80
+ }
81
+
82
+ function readBytes(string memory json, string memory key) internal pure returns (bytes memory) {
83
+ return vm.parseJsonBytes(json, key);
84
+ }
85
+
86
+ function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) {
87
+ return vm.parseJsonBytesArray(json, key);
88
+ }
89
+
90
+ function readUintOr(string memory json, string memory key, uint256 defaultValue) internal view returns (uint256) {
91
+ return keyExists(json, key) ? readUint(json, key) : defaultValue;
92
+ }
93
+
94
+ function readUintArrayOr(string memory json, string memory key, uint256[] memory defaultValue)
95
+ internal
96
+ view
97
+ returns (uint256[] memory)
98
+ {
99
+ return keyExists(json, key) ? readUintArray(json, key) : defaultValue;
100
+ }
101
+
102
+ function readIntOr(string memory json, string memory key, int256 defaultValue) internal view returns (int256) {
103
+ return keyExists(json, key) ? readInt(json, key) : defaultValue;
104
+ }
105
+
106
+ function readIntArrayOr(string memory json, string memory key, int256[] memory defaultValue)
107
+ internal
108
+ view
109
+ returns (int256[] memory)
110
+ {
111
+ return keyExists(json, key) ? readIntArray(json, key) : defaultValue;
112
+ }
113
+
114
+ function readBytes32Or(string memory json, string memory key, bytes32 defaultValue)
115
+ internal
116
+ view
117
+ returns (bytes32)
118
+ {
119
+ return keyExists(json, key) ? readBytes32(json, key) : defaultValue;
120
+ }
121
+
122
+ function readBytes32ArrayOr(string memory json, string memory key, bytes32[] memory defaultValue)
123
+ internal
124
+ view
125
+ returns (bytes32[] memory)
126
+ {
127
+ return keyExists(json, key) ? readBytes32Array(json, key) : defaultValue;
128
+ }
129
+
130
+ function readStringOr(string memory json, string memory key, string memory defaultValue)
131
+ internal
132
+ view
133
+ returns (string memory)
134
+ {
135
+ return keyExists(json, key) ? readString(json, key) : defaultValue;
136
+ }
137
+
138
+ function readStringArrayOr(string memory json, string memory key, string[] memory defaultValue)
139
+ internal
140
+ view
141
+ returns (string[] memory)
142
+ {
143
+ return keyExists(json, key) ? readStringArray(json, key) : defaultValue;
144
+ }
145
+
146
+ function readAddressOr(string memory json, string memory key, address defaultValue)
147
+ internal
148
+ view
149
+ returns (address)
150
+ {
151
+ return keyExists(json, key) ? readAddress(json, key) : defaultValue;
152
+ }
153
+
154
+ function readAddressArrayOr(string memory json, string memory key, address[] memory defaultValue)
155
+ internal
156
+ view
157
+ returns (address[] memory)
158
+ {
159
+ return keyExists(json, key) ? readAddressArray(json, key) : defaultValue;
160
+ }
161
+
162
+ function readBoolOr(string memory json, string memory key, bool defaultValue) internal view returns (bool) {
163
+ return keyExists(json, key) ? readBool(json, key) : defaultValue;
164
+ }
165
+
166
+ function readBoolArrayOr(string memory json, string memory key, bool[] memory defaultValue)
167
+ internal
168
+ view
169
+ returns (bool[] memory)
170
+ {
171
+ return keyExists(json, key) ? readBoolArray(json, key) : defaultValue;
172
+ }
173
+
174
+ function readBytesOr(string memory json, string memory key, bytes memory defaultValue)
175
+ internal
176
+ view
177
+ returns (bytes memory)
178
+ {
179
+ return keyExists(json, key) ? readBytes(json, key) : defaultValue;
180
+ }
181
+
182
+ function readBytesArrayOr(string memory json, string memory key, bytes[] memory defaultValue)
183
+ internal
184
+ view
185
+ returns (bytes[] memory)
186
+ {
187
+ return keyExists(json, key) ? readBytesArray(json, key) : defaultValue;
188
+ }
189
+
190
+ function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) {
191
+ return vm.serializeJson(jsonKey, rootObject);
192
+ }
193
+
194
+ function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) {
195
+ return vm.serializeBool(jsonKey, key, value);
196
+ }
197
+
198
+ function serialize(string memory jsonKey, string memory key, bool[] memory value) internal returns (string memory) {
199
+ return vm.serializeBool(jsonKey, key, value);
200
+ }
201
+
202
+ function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) {
203
+ return vm.serializeUint(jsonKey, key, value);
204
+ }
205
+
206
+ function serialize(string memory jsonKey, string memory key, uint256[] memory value)
207
+ internal
208
+ returns (string memory)
209
+ {
210
+ return vm.serializeUint(jsonKey, key, value);
211
+ }
212
+
213
+ function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) {
214
+ return vm.serializeInt(jsonKey, key, value);
215
+ }
216
+
217
+ function serialize(string memory jsonKey, string memory key, int256[] memory value)
218
+ internal
219
+ returns (string memory)
220
+ {
221
+ return vm.serializeInt(jsonKey, key, value);
222
+ }
223
+
224
+ function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) {
225
+ return vm.serializeAddress(jsonKey, key, value);
226
+ }
227
+
228
+ function serialize(string memory jsonKey, string memory key, address[] memory value)
229
+ internal
230
+ returns (string memory)
231
+ {
232
+ return vm.serializeAddress(jsonKey, key, value);
233
+ }
234
+
235
+ function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) {
236
+ return vm.serializeBytes32(jsonKey, key, value);
237
+ }
238
+
239
+ function serialize(string memory jsonKey, string memory key, bytes32[] memory value)
240
+ internal
241
+ returns (string memory)
242
+ {
243
+ return vm.serializeBytes32(jsonKey, key, value);
244
+ }
245
+
246
+ function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) {
247
+ return vm.serializeBytes(jsonKey, key, value);
248
+ }
249
+
250
+ function serialize(string memory jsonKey, string memory key, bytes[] memory value)
251
+ internal
252
+ returns (string memory)
253
+ {
254
+ return vm.serializeBytes(jsonKey, key, value);
255
+ }
256
+
257
+ function serialize(string memory jsonKey, string memory key, string memory value) internal returns (string memory) {
258
+ return vm.serializeString(jsonKey, key, value);
259
+ }
260
+
261
+ function serialize(string memory jsonKey, string memory key, string[] memory value)
262
+ internal
263
+ returns (string memory)
264
+ {
265
+ return vm.serializeString(jsonKey, key, value);
266
+ }
267
+
268
+ function write(string memory jsonKey, string memory path) internal {
269
+ vm.writeJson(jsonKey, path);
270
+ }
271
+
272
+ function write(string memory jsonKey, string memory path, string memory valueKey) internal {
273
+ vm.writeJson(jsonKey, path, valueKey);
274
+ }
275
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.13 <0.9.0;
3
+
4
+ library stdMath {
5
+ int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968;
6
+
7
+ function abs(int256 a) internal pure returns (uint256) {
8
+ // Required or it will fail when `a = type(int256).min`
9
+ if (a == INT256_MIN) {
10
+ return 57896044618658097711785492504343953926634992332820282019728792003956564819968;
11
+ }
12
+
13
+ return uint256(a > 0 ? a : -a);
14
+ }
15
+
16
+ function delta(uint256 a, uint256 b) internal pure returns (uint256) {
17
+ return a > b ? a - b : b - a;
18
+ }
19
+
20
+ function delta(int256 a, int256 b) internal pure returns (uint256) {
21
+ // a and b are of the same sign
22
+ // this works thanks to two's complement, the left-most bit is the sign bit
23
+ if ((a ^ b) > -1) {
24
+ return delta(abs(a), abs(b));
25
+ }
26
+
27
+ // a and b are of opposite signs
28
+ return abs(a) + abs(b);
29
+ }
30
+
31
+ function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) {
32
+ // Prevent division by zero
33
+ require(b != 0, "stdMath percentDelta(uint256,uint256): Divisor is zero");
34
+ uint256 absDelta = delta(a, b);
35
+
36
+ return absDelta * 1e18 / b;
37
+ }
38
+
39
+ function percentDelta(int256 a, int256 b) internal pure returns (uint256) {
40
+ uint256 absDelta = delta(a, b);
41
+ uint256 absB = abs(b);
42
+ // Prevent division by zero
43
+ require(absB != 0, "stdMath percentDelta(int256,int256): Divisor is zero");
44
+
45
+ return absDelta * 1e18 / absB;
46
+ }
47
+ }