diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index d5e5d27..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -lib/** linguist-vendored diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0e5926..94c5b3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,8 +52,6 @@ jobs: steps: - name: "Check out the repo" uses: "actions/checkout@v3" - with: - submodules: "recursive" - name: "Install Foundry" uses: "foundry-rs/foundry-toolchain@v1" @@ -103,8 +101,6 @@ jobs: steps: - name: "Check out the repo" uses: "actions/checkout@v3" - with: - submodules: "recursive" - name: "Install Foundry" uses: "foundry-rs/foundry-toolchain@v1" @@ -116,6 +112,20 @@ jobs: key: "foundry-build-${{ github.sha }}" path: "out-optimized" + - name: "Install Pnpm" + uses: "pnpm/action-setup@v2" + with: + version: "8" + + - name: "Install Node.js" + uses: "actions/setup-node@v3" + with: + cache: "pnpm" + node-version: "lts/*" + + - name: "Install the Node.js dependencies" + run: "pnpm install" + - name: "Run the tests against the optimized build" run: "FOUNDRY_PROFILE=test-optimized forge test" @@ -130,12 +140,24 @@ jobs: steps: - name: "Check out the repo" uses: "actions/checkout@v3" - with: - submodules: "recursive" - name: "Install Foundry" uses: "foundry-rs/foundry-toolchain@v1" + - name: "Install Pnpm" + uses: "pnpm/action-setup@v2" + with: + version: "8" + + - name: "Install Node.js" + uses: "actions/setup-node@v3" + with: + cache: "pnpm" + node-version: "lts/*" + + - name: "Install the Node.js dependencies" + run: "pnpm install" + - name: "Run the tests and generate the coverage report" run: "forge coverage --report lcov" @@ -155,8 +177,20 @@ jobs: steps: - name: "Check out the repo" uses: "actions/checkout@v3" + + - name: "Install Pnpm" + uses: "pnpm/action-setup@v2" + with: + version: "8" + + - name: "Install Node.js" + uses: "actions/setup-node@v3" with: - submodules: "recursive" + cache: "pnpm" + node-version: "lts/*" + + - name: "Install the Node.js dependencies" + run: "pnpm install" - name: "Run Slither" uses: "crytic/slither-action@v0.3.0" diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 92e4318..0000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "lib/forge-std"] - branch = "v1" - path = "lib/forge-std" - url = "https://github.com/foundry-rs/forge-std" -[submodule "lib/prb-test"] - branch = "release-v0" - path = "lib/prb-test" - url = "https://github.com/PaulRBerg/prb-test" diff --git a/.prettierignore b/.prettierignore index 23f07c7..d07963d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,7 +2,6 @@ broadcast cache coverage -lib node_modules out-optimized out diff --git a/.vscode/settings.json b/.vscode/settings.json index a83e0bb..fa100fc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,5 @@ ".gas-snapshot": "julia" }, "editor.formatOnSave": true, - "npm.exclude": "**/lib/**", "solidity.formatter": "forge" } diff --git a/README.md b/README.md index d0edcdc..5947c31 100644 --- a/README.md +++ b/README.md @@ -79,35 +79,20 @@ Alternatively, you can: You can get access to the Solidity code and the ABIs programmatically. -### Foundry - -First, run the install step: +All users are recommended to install PRBProxy as a Node.js package: ```sh -forge install PaulRBerg/prb-proxy@release-v4 +pnpm add @prb/math ``` -Your `.gitmodules` file should now contain the following entry: +This example uses Pnpm, but using Yarn or Npm is also possible. -```toml -[submodule "lib/prb-proxy"] - branch = "release-v4" - path = "lib/prb-proxy" - url = "https://github.com/PaulRBerg/prb-proxy" -``` +### Foundry -Finally, add this to your `remappings.txt` file: +If you're using Foundry, you have to add this to your `remappings.txt` file: ```text -prb-proxy/=lib/prb-proxy/ -``` - -### Hardhat - -PRBProxy is available as an npm package: - -```sh -pnpm add @prb/proxy +@prb/proxy/=node_modules/@prb/proxy/ ``` ## Usage diff --git a/foundry.toml b/foundry.toml index 27807d7..a3876bb 100644 --- a/foundry.toml +++ b/foundry.toml @@ -8,7 +8,6 @@ ignored_error_codes = [ 5159, # ignore selfdestruct warning ] - libs = ["lib"] optimizer = true optimizer_runs = 200 out = "out" diff --git a/lib/forge-std b/lib/forge-std deleted file mode 160000 index 73d44ec..0000000 --- a/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 73d44ec7d124e3831bc5f832267889ffb6f9bc3f diff --git a/lib/prb-test b/lib/prb-test deleted file mode 160000 index cfc05f0..0000000 --- a/lib/prb-test +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cfc05f091f406651816405826a19972f12efe150 diff --git a/package.json b/package.json index 8ad8fbf..db777b7 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,15 @@ "url": "https://github.com/PaulRBerg/prb-proxy/issues" }, "devDependencies": { + "@prb/test": "0.6.4", + "forge-std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", "prettier": "^2.8.8", "solhint-community": "^3.5.2" }, "files": [ "artifacts", "src", + "test/utils", "CHANGELOG.md" ], "homepage": "https://github.com/PaulRBerg/prb-proxy#readme", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abcc75f..dfa83cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,12 @@ settings: excludeLinksFromLockfile: false devDependencies: + '@prb/test': + specifier: 0.6.4 + version: 0.6.4 + forge-std: + specifier: github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e + version: github.com/foundry-rs/forge-std/e8a047e3f40f13fa37af6fe14e6e06283d9a060e prettier: specifier: ^2.8.8 version: 2.8.8 @@ -35,6 +41,10 @@ packages: js-tokens: 4.0.0 dev: true + /@prb/test@0.6.4: + resolution: {integrity: sha512-P0tTMsB6XQ0Wp61EYdXJYFhsOVGyZvcOFub2y9yk0sF+GYDusctR7DzEI+vOP0SILm3knFkEJASjewHEBppdRQ==} + dev: true + /@solidity-parser/parser@0.16.0: resolution: {integrity: sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==} dependencies: @@ -442,3 +452,9 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + + github.com/foundry-rs/forge-std/e8a047e3f40f13fa37af6fe14e6e06283d9a060e: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/e8a047e3f40f13fa37af6fe14e6e06283d9a060e} + name: forge-std + version: 1.5.6 + dev: true diff --git a/remappings.txt b/remappings.txt index 853e434..0ee4e2a 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,2 +1,2 @@ -@prb/test/=lib/prb-test/src/ -forge-std/=lib/forge-std/src/ +@prb/test/=node_modules/@prb/test +forge-std/=node_modules/forge-std/ diff --git a/script/Base.s.sol b/script/Base.s.sol index 2a106d7..b872423 100644 --- a/script/Base.s.sol +++ b/script/Base.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.19 <=0.9.0; -import { Script } from "forge-std/Script.sol"; +import { Script } from "forge-std/src/Script.sol"; abstract contract BaseScript is Script { /// @dev Included to enable compilation of the script without a $MNEMONIC environment variable. diff --git a/slither.config.json b/slither.config.json index be892fe..ce210a4 100644 --- a/slither.config.json +++ b/slither.config.json @@ -1,4 +1,4 @@ { "detectors_to_exclude": "low-level-calls,naming-convention,reentrancy-events,solc-version", - "filter_paths": "(lib|test)" + "filter_paths": "(test)" } diff --git a/test/Base.t.sol b/test/Base.t.sol index 73cdf3d..874c98c 100644 --- a/test/Base.t.sol +++ b/test/Base.t.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.19 <=0.9.0; -import { eqString } from "@prb/test/Helpers.sol"; -import { StdCheats } from "forge-std/StdCheats.sol"; -import { StdUtils } from "forge-std/StdUtils.sol"; +import { eqString } from "@prb/test/src/Helpers.sol"; +import { StdCheats } from "forge-std/src/StdCheats.sol"; +import { StdUtils } from "forge-std/src/StdUtils.sol"; import { IPRBProxy } from "../src/interfaces/IPRBProxy.sol"; import { IPRBProxyRegistry } from "../src/interfaces/IPRBProxyRegistry.sol"; diff --git a/test/proxy/execute/execute.t.sol b/test/proxy/execute/execute.t.sol index caee1e8..5a7264a 100644 --- a/test/proxy/execute/execute.t.sol +++ b/test/proxy/execute/execute.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.19 <=0.9.0; -import { stdError } from "forge-std/StdError.sol"; +import { stdError } from "forge-std/src/StdError.sol"; import { IPRBProxy } from "src/interfaces/IPRBProxy.sol"; diff --git a/test/proxy/run-plugin/runPlugin.t.sol b/test/proxy/run-plugin/runPlugin.t.sol index 322961c..c1942ef 100644 --- a/test/proxy/run-plugin/runPlugin.t.sol +++ b/test/proxy/run-plugin/runPlugin.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.18 <0.9.0; -import { stdError } from "forge-std/StdError.sol"; +import { stdError } from "forge-std/src/StdError.sol"; import { IPRBProxy } from "src/interfaces/IPRBProxy.sol"; diff --git a/test/utils/Assertions.sol b/test/utils/Assertions.sol index 18493d6..0b108a5 100644 --- a/test/utils/Assertions.sol +++ b/test/utils/Assertions.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.18; -import { PRBTest } from "@prb/test/PRBTest.sol"; +import { PRBTest } from "@prb/test/src/PRBTest.sol"; import { IPRBProxyPlugin } from "../../src/interfaces/IPRBProxyPlugin.sol";