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.
- package/package.json +1 -1
- package/templates/vanilla/package.json +1 -1
- package/templates/vanilla/src/components/App.js +22 -35
- package/templates/vanilla/src/components/Card.js +5 -12
- package/templates/vanilla/src/components/Hero.js +6 -8
- package/templates/vanilla/src/components/InteractiveDemo.js +34 -32
- package/templates/vanilla/src/main.js +2 -6
- package/templates/web3/contracts/.gitmodules +3 -0
- package/templates/web3/contracts/foundry.lock +8 -0
- package/templates/web3/contracts/lib/forge-std/.gitattributes +1 -0
- package/templates/web3/contracts/lib/forge-std/.github/CODEOWNERS +1 -0
- package/templates/web3/contracts/lib/forge-std/.github/dependabot.yml +6 -0
- package/templates/web3/contracts/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/templates/web3/contracts/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/templates/web3/contracts/lib/forge-std/CONTRIBUTING.md +193 -0
- package/templates/web3/contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/templates/web3/contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/templates/web3/contracts/lib/forge-std/README.md +268 -0
- package/templates/web3/contracts/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/templates/web3/contracts/lib/forge-std/foundry.toml +18 -0
- package/templates/web3/contracts/lib/forge-std/package.json +16 -0
- package/templates/web3/contracts/lib/forge-std/scripts/vm.py +636 -0
- package/templates/web3/contracts/lib/forge-std/src/Base.sol +48 -0
- package/templates/web3/contracts/lib/forge-std/src/Config.sol +60 -0
- package/templates/web3/contracts/lib/forge-std/src/LibVariable.sol +477 -0
- package/templates/web3/contracts/lib/forge-std/src/Script.sol +28 -0
- package/templates/web3/contracts/lib/forge-std/src/StdAssertions.sol +779 -0
- package/templates/web3/contracts/lib/forge-std/src/StdChains.sol +295 -0
- package/templates/web3/contracts/lib/forge-std/src/StdCheats.sol +825 -0
- package/templates/web3/contracts/lib/forge-std/src/StdConfig.sol +632 -0
- package/templates/web3/contracts/lib/forge-std/src/StdConstants.sol +30 -0
- package/templates/web3/contracts/lib/forge-std/src/StdError.sol +15 -0
- package/templates/web3/contracts/lib/forge-std/src/StdInvariant.sol +120 -0
- package/templates/web3/contracts/lib/forge-std/src/StdJson.sol +275 -0
- package/templates/web3/contracts/lib/forge-std/src/StdMath.sol +47 -0
- package/templates/web3/contracts/lib/forge-std/src/StdStorage.sol +475 -0
- package/templates/web3/contracts/lib/forge-std/src/StdStyle.sol +333 -0
- package/templates/web3/contracts/lib/forge-std/src/StdToml.sol +275 -0
- package/templates/web3/contracts/lib/forge-std/src/StdUtils.sol +200 -0
- package/templates/web3/contracts/lib/forge-std/src/Test.sol +32 -0
- package/templates/web3/contracts/lib/forge-std/src/Vm.sol +2500 -0
- package/templates/web3/contracts/lib/forge-std/src/console.sol +1551 -0
- package/templates/web3/contracts/lib/forge-std/src/console2.sol +4 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
- package/templates/web3/contracts/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
- package/templates/web3/contracts/lib/forge-std/src/safeconsole.sol +13248 -0
- package/templates/web3/contracts/lib/forge-std/test/CommonBase.t.sol +44 -0
- package/templates/web3/contracts/lib/forge-std/test/Config.t.sol +381 -0
- package/templates/web3/contracts/lib/forge-std/test/LibVariable.t.sol +452 -0
- package/templates/web3/contracts/lib/forge-std/test/StdAssertions.t.sol +141 -0
- package/templates/web3/contracts/lib/forge-std/test/StdChains.t.sol +227 -0
- package/templates/web3/contracts/lib/forge-std/test/StdCheats.t.sol +638 -0
- package/templates/web3/contracts/lib/forge-std/test/StdConstants.t.sol +38 -0
- package/templates/web3/contracts/lib/forge-std/test/StdError.t.sol +119 -0
- package/templates/web3/contracts/lib/forge-std/test/StdJson.t.sol +49 -0
- package/templates/web3/contracts/lib/forge-std/test/StdMath.t.sol +202 -0
- package/templates/web3/contracts/lib/forge-std/test/StdStorage.t.sol +485 -0
- package/templates/web3/contracts/lib/forge-std/test/StdStyle.t.sol +110 -0
- package/templates/web3/contracts/lib/forge-std/test/StdToml.t.sol +49 -0
- package/templates/web3/contracts/lib/forge-std/test/StdUtils.t.sol +342 -0
- package/templates/web3/contracts/lib/forge-std/test/Vm.t.sol +18 -0
- package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
- package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
- package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
- package/templates/web3/contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
- package/templates/web3/contracts/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/templates/web3/contracts/lib/forge-std/test/fixtures/config.toml +81 -0
- package/templates/web3/contracts/lib/forge-std/test/fixtures/test.json +8 -0
- package/templates/web3/contracts/lib/forge-std/test/fixtures/test.toml +6 -0
- package/templates/web3/package.json +1 -1
- package/templates/web3/src/components/App.js +23 -36
- package/templates/web3/src/components/CounterCard.js +45 -45
- package/templates/web3/src/main.js +5 -7
- package/templates/vanilla/node_modules/.package-lock.json +0 -207
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/README.md +0 -3
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/package.json +0 -17
- package/templates/vanilla/node_modules/@monygroupcorp/microact/README.md +0 -154
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js +0 -1749
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js.map +0 -1
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js +0 -1743
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js.map +0 -1
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js +0 -2
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js.map +0 -1
- package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.html +0 -13
- package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.js +0 -63
- package/templates/vanilla/node_modules/@monygroupcorp/microact/package.json +0 -38
- package/templates/vanilla/node_modules/@monygroupcorp/microact/rollup.config.cjs +0 -30
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Component.js +0 -831
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/DOMUpdater.js +0 -320
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/EventBus.js +0 -123
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Router.js +0 -253
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/UpdateScheduler.js +0 -218
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/index.js +0 -6
- package/templates/vanilla/node_modules/esbuild/LICENSE.md +0 -21
- package/templates/vanilla/node_modules/esbuild/README.md +0 -3
- package/templates/vanilla/node_modules/esbuild/bin/esbuild +0 -0
- package/templates/vanilla/node_modules/esbuild/install.js +0 -287
- package/templates/vanilla/node_modules/esbuild/lib/main.d.ts +0 -660
- package/templates/vanilla/node_modules/esbuild/lib/main.js +0 -2393
- package/templates/vanilla/node_modules/esbuild/package.json +0 -42
- package/templates/vanilla/node_modules/nanoid/LICENSE +0 -20
- package/templates/vanilla/node_modules/nanoid/README.md +0 -39
- package/templates/vanilla/node_modules/nanoid/async/index.browser.cjs +0 -69
- package/templates/vanilla/node_modules/nanoid/async/index.browser.js +0 -34
- package/templates/vanilla/node_modules/nanoid/async/index.cjs +0 -71
- package/templates/vanilla/node_modules/nanoid/async/index.d.ts +0 -56
- package/templates/vanilla/node_modules/nanoid/async/index.js +0 -35
- package/templates/vanilla/node_modules/nanoid/async/index.native.js +0 -26
- package/templates/vanilla/node_modules/nanoid/async/package.json +0 -12
- package/templates/vanilla/node_modules/nanoid/bin/nanoid.cjs +0 -55
- package/templates/vanilla/node_modules/nanoid/index.browser.cjs +0 -72
- package/templates/vanilla/node_modules/nanoid/index.browser.js +0 -34
- package/templates/vanilla/node_modules/nanoid/index.cjs +0 -85
- package/templates/vanilla/node_modules/nanoid/index.d.cts +0 -91
- package/templates/vanilla/node_modules/nanoid/index.d.ts +0 -91
- package/templates/vanilla/node_modules/nanoid/index.js +0 -45
- package/templates/vanilla/node_modules/nanoid/nanoid.js +0 -1
- package/templates/vanilla/node_modules/nanoid/non-secure/index.cjs +0 -34
- package/templates/vanilla/node_modules/nanoid/non-secure/index.d.ts +0 -33
- package/templates/vanilla/node_modules/nanoid/non-secure/index.js +0 -21
- package/templates/vanilla/node_modules/nanoid/non-secure/package.json +0 -6
- package/templates/vanilla/node_modules/nanoid/package.json +0 -89
- package/templates/vanilla/node_modules/nanoid/url-alphabet/index.cjs +0 -7
- package/templates/vanilla/node_modules/nanoid/url-alphabet/index.js +0 -3
- package/templates/vanilla/node_modules/nanoid/url-alphabet/package.json +0 -6
- package/templates/vanilla/node_modules/picocolors/LICENSE +0 -15
- package/templates/vanilla/node_modules/picocolors/README.md +0 -21
- package/templates/vanilla/node_modules/picocolors/package.json +0 -25
- package/templates/vanilla/node_modules/picocolors/picocolors.browser.js +0 -4
- package/templates/vanilla/node_modules/picocolors/picocolors.d.ts +0 -5
- package/templates/vanilla/node_modules/picocolors/picocolors.js +0 -75
- package/templates/vanilla/node_modules/picocolors/types.d.ts +0 -51
- package/templates/vanilla/node_modules/postcss/LICENSE +0 -20
- package/templates/vanilla/node_modules/postcss/README.md +0 -29
- package/templates/vanilla/node_modules/postcss/lib/at-rule.d.ts +0 -140
- package/templates/vanilla/node_modules/postcss/lib/at-rule.js +0 -25
- package/templates/vanilla/node_modules/postcss/lib/comment.d.ts +0 -68
- package/templates/vanilla/node_modules/postcss/lib/comment.js +0 -13
- package/templates/vanilla/node_modules/postcss/lib/container.d.ts +0 -483
- package/templates/vanilla/node_modules/postcss/lib/container.js +0 -447
- package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts +0 -248
- package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.js +0 -133
- package/templates/vanilla/node_modules/postcss/lib/declaration.d.ts +0 -151
- package/templates/vanilla/node_modules/postcss/lib/declaration.js +0 -24
- package/templates/vanilla/node_modules/postcss/lib/document.d.ts +0 -69
- package/templates/vanilla/node_modules/postcss/lib/document.js +0 -33
- package/templates/vanilla/node_modules/postcss/lib/fromJSON.d.ts +0 -9
- package/templates/vanilla/node_modules/postcss/lib/fromJSON.js +0 -54
- package/templates/vanilla/node_modules/postcss/lib/input.d.ts +0 -227
- package/templates/vanilla/node_modules/postcss/lib/input.js +0 -265
- package/templates/vanilla/node_modules/postcss/lib/lazy-result.d.ts +0 -190
- package/templates/vanilla/node_modules/postcss/lib/lazy-result.js +0 -550
- package/templates/vanilla/node_modules/postcss/lib/list.d.ts +0 -60
- package/templates/vanilla/node_modules/postcss/lib/list.js +0 -58
- package/templates/vanilla/node_modules/postcss/lib/map-generator.js +0 -368
- package/templates/vanilla/node_modules/postcss/lib/no-work-result.d.ts +0 -46
- package/templates/vanilla/node_modules/postcss/lib/no-work-result.js +0 -138
- package/templates/vanilla/node_modules/postcss/lib/node.d.ts +0 -556
- package/templates/vanilla/node_modules/postcss/lib/node.js +0 -449
- package/templates/vanilla/node_modules/postcss/lib/parse.d.ts +0 -9
- package/templates/vanilla/node_modules/postcss/lib/parse.js +0 -42
- package/templates/vanilla/node_modules/postcss/lib/parser.js +0 -611
- package/templates/vanilla/node_modules/postcss/lib/postcss.d.mts +0 -69
- package/templates/vanilla/node_modules/postcss/lib/postcss.d.ts +0 -458
- package/templates/vanilla/node_modules/postcss/lib/postcss.js +0 -101
- package/templates/vanilla/node_modules/postcss/lib/postcss.mjs +0 -30
- package/templates/vanilla/node_modules/postcss/lib/previous-map.d.ts +0 -81
- package/templates/vanilla/node_modules/postcss/lib/previous-map.js +0 -144
- package/templates/vanilla/node_modules/postcss/lib/processor.d.ts +0 -115
- package/templates/vanilla/node_modules/postcss/lib/processor.js +0 -67
- package/templates/vanilla/node_modules/postcss/lib/result.d.ts +0 -205
- package/templates/vanilla/node_modules/postcss/lib/result.js +0 -42
- package/templates/vanilla/node_modules/postcss/lib/root.d.ts +0 -87
- package/templates/vanilla/node_modules/postcss/lib/root.js +0 -61
- package/templates/vanilla/node_modules/postcss/lib/rule.d.ts +0 -126
- package/templates/vanilla/node_modules/postcss/lib/rule.js +0 -27
- package/templates/vanilla/node_modules/postcss/lib/stringifier.d.ts +0 -46
- package/templates/vanilla/node_modules/postcss/lib/stringifier.js +0 -353
- package/templates/vanilla/node_modules/postcss/lib/stringify.d.ts +0 -9
- package/templates/vanilla/node_modules/postcss/lib/stringify.js +0 -11
- package/templates/vanilla/node_modules/postcss/lib/symbols.js +0 -5
- package/templates/vanilla/node_modules/postcss/lib/terminal-highlight.js +0 -70
- package/templates/vanilla/node_modules/postcss/lib/tokenize.js +0 -266
- package/templates/vanilla/node_modules/postcss/lib/warn-once.js +0 -13
- package/templates/vanilla/node_modules/postcss/lib/warning.d.ts +0 -147
- package/templates/vanilla/node_modules/postcss/lib/warning.js +0 -37
- package/templates/vanilla/node_modules/postcss/package.json +0 -88
- package/templates/vanilla/node_modules/rollup/LICENSE.md +0 -695
- package/templates/vanilla/node_modules/rollup/README.md +0 -125
- package/templates/vanilla/node_modules/rollup/dist/bin/rollup +0 -1715
- package/templates/vanilla/node_modules/rollup/dist/es/getLogFilter.js +0 -64
- package/templates/vanilla/node_modules/rollup/dist/es/package.json +0 -1
- package/templates/vanilla/node_modules/rollup/dist/es/rollup.js +0 -17
- package/templates/vanilla/node_modules/rollup/dist/es/shared/node-entry.js +0 -27273
- package/templates/vanilla/node_modules/rollup/dist/es/shared/watch.js +0 -4857
- package/templates/vanilla/node_modules/rollup/dist/getLogFilter.d.ts +0 -5
- package/templates/vanilla/node_modules/rollup/dist/getLogFilter.js +0 -69
- package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.d.ts +0 -20
- package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.js +0 -29
- package/templates/vanilla/node_modules/rollup/dist/rollup.d.ts +0 -1012
- package/templates/vanilla/node_modules/rollup/dist/rollup.js +0 -31
- package/templates/vanilla/node_modules/rollup/dist/shared/fsevents-importer.js +0 -37
- package/templates/vanilla/node_modules/rollup/dist/shared/index.js +0 -4571
- package/templates/vanilla/node_modules/rollup/dist/shared/loadConfigFile.js +0 -546
- package/templates/vanilla/node_modules/rollup/dist/shared/rollup.js +0 -27351
- package/templates/vanilla/node_modules/rollup/dist/shared/watch-cli.js +0 -561
- package/templates/vanilla/node_modules/rollup/dist/shared/watch-proxy.js +0 -87
- package/templates/vanilla/node_modules/rollup/dist/shared/watch.js +0 -316
- package/templates/vanilla/node_modules/rollup/package.json +0 -181
- package/templates/vanilla/node_modules/source-map-js/LICENSE +0 -28
- package/templates/vanilla/node_modules/source-map-js/README.md +0 -765
- package/templates/vanilla/node_modules/source-map-js/lib/array-set.js +0 -121
- package/templates/vanilla/node_modules/source-map-js/lib/base64-vlq.js +0 -140
- package/templates/vanilla/node_modules/source-map-js/lib/base64.js +0 -67
- package/templates/vanilla/node_modules/source-map-js/lib/binary-search.js +0 -111
- package/templates/vanilla/node_modules/source-map-js/lib/mapping-list.js +0 -79
- package/templates/vanilla/node_modules/source-map-js/lib/quick-sort.js +0 -132
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.d.ts +0 -1
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.d.ts +0 -1
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.js +0 -444
- package/templates/vanilla/node_modules/source-map-js/lib/source-node.d.ts +0 -1
- package/templates/vanilla/node_modules/source-map-js/lib/source-node.js +0 -413
- package/templates/vanilla/node_modules/source-map-js/lib/util.js +0 -594
- package/templates/vanilla/node_modules/source-map-js/package.json +0 -71
- package/templates/vanilla/node_modules/source-map-js/source-map.d.ts +0 -104
- package/templates/vanilla/node_modules/source-map-js/source-map.js +0 -8
- package/templates/vanilla/node_modules/vite/LICENSE.md +0 -3396
- package/templates/vanilla/node_modules/vite/README.md +0 -20
- package/templates/vanilla/node_modules/vite/bin/openChrome.applescript +0 -95
- package/templates/vanilla/node_modules/vite/bin/vite.js +0 -61
- package/templates/vanilla/node_modules/vite/client.d.ts +0 -281
- package/templates/vanilla/node_modules/vite/dist/client/client.mjs +0 -725
- package/templates/vanilla/node_modules/vite/dist/client/client.mjs.map +0 -1
- package/templates/vanilla/node_modules/vite/dist/client/env.mjs +0 -30
- package/templates/vanilla/node_modules/vite/dist/client/env.mjs.map +0 -1
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-7ec6f216.js +0 -914
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-827b23df.js +0 -66713
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-c423598f.js +0 -561
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js +0 -7930
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f1e8587f.js +0 -7646
- package/templates/vanilla/node_modules/vite/dist/node/cli.js +0 -929
- package/templates/vanilla/node_modules/vite/dist/node/constants.js +0 -130
- package/templates/vanilla/node_modules/vite/dist/node/index.d.ts +0 -3548
- package/templates/vanilla/node_modules/vite/dist/node/index.js +0 -158
- package/templates/vanilla/node_modules/vite/dist/node-cjs/publicUtils.cjs +0 -4555
- package/templates/vanilla/node_modules/vite/index.cjs +0 -34
- package/templates/vanilla/node_modules/vite/package.json +0 -173
- package/templates/vanilla/node_modules/vite/types/customEvent.d.ts +0 -35
- package/templates/vanilla/node_modules/vite/types/hmrPayload.d.ts +0 -61
- package/templates/vanilla/node_modules/vite/types/hot.d.ts +0 -32
- package/templates/vanilla/node_modules/vite/types/importGlob.d.ts +0 -97
- package/templates/vanilla/node_modules/vite/types/importMeta.d.ts +0 -26
- package/templates/vanilla/node_modules/vite/types/metadata.d.ts +0 -10
- package/templates/vanilla/node_modules/vite/types/package.json +0 -4
- 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
|
+
}
|