From 304317657a1be8fa53f0b3bd09de6a95090cef4a Mon Sep 17 00:00:00 2001 From: andreivladbrg Date: Thu, 16 Nov 2023 19:29:49 +0300 Subject: [PATCH 1/7] build: include test utils in package build: install prb test as npm package build: install forge as npm package build: remove gitmodules ci: install node js dependencies in build and test job chore: update remappings accordingly --- .github/workflows/ci.yml | 36 +++++++++++++++++++++------ .gitmodules | 8 ------ lib/forge-std | 1 - lib/prb-test | 1 - package.json | 7 ++++++ pnpm-lock.yaml | 16 ++++++++++++ remappings.txt | 4 +-- script/Base.s.sol | 2 +- test/Base.t.sol | 6 ++--- test/proxy/execute/execute.t.sol | 2 +- test/proxy/run-plugin/runPlugin.t.sol | 2 +- test/utils/Assertions.sol | 2 +- 12 files changed, 60 insertions(+), 27 deletions(-) delete mode 100644 .gitmodules delete mode 160000 lib/forge-std delete mode 160000 lib/prb-test diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0e5926..44a21fe 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,6 @@ jobs: steps: - name: "Check out the repo" uses: "actions/checkout@v3" - with: - submodules: "recursive" - 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/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..5cd1101 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,15 @@ "url": "https://github.com/PaulRBerg/prb-proxy/issues" }, "devDependencies": { + "@forge/std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", + "@prb/test": "0.6.4", "prettier": "^2.8.8", "solhint-community": "^3.5.2" }, "files": [ "artifacts", "src", + "test/utils", "CHANGELOG.md" ], "homepage": "https://github.com/PaulRBerg/prb-proxy#readme", @@ -29,6 +32,10 @@ "solidity" ], "license": "MIT", + "peerDependencies": { + "@forge/std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", + "@prb/test": "0.6.4" + }, "publishConfig": { "access": "public" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abcc75f..da2a697 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,12 @@ settings: excludeLinksFromLockfile: false devDependencies: + '@forge/std': + specifier: github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e + version: github.com/foundry-rs/forge-std/e8a047e3f40f13fa37af6fe14e6e06283d9a060e + '@prb/test': + specifier: 0.6.4 + version: 0.6.4 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..74d71cd 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,2 +1,2 @@ -@prb/test/=lib/prb-test/src/ -forge-std/=lib/forge-std/src/ +@forge-std/=node_modules/@forge/std/ +@prb/test/=node_modules/@prb/test \ No newline at end of file diff --git a/script/Base.s.sol b/script/Base.s.sol index 2a106d7..39b2069 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/test/Base.t.sol b/test/Base.t.sol index 73cdf3d..d56e69e 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..ee356ce 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..b8f218c 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"; From 627d23327beead9dce48ef8dbd36c974cc686db1 Mon Sep 17 00:00:00 2001 From: andreivladbrg Date: Wed, 29 Nov 2023 15:38:25 +0200 Subject: [PATCH 2/7] build: remove peer dependencies --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index 5cd1101..7991920 100644 --- a/package.json +++ b/package.json @@ -32,10 +32,6 @@ "solidity" ], "license": "MIT", - "peerDependencies": { - "@forge/std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", - "@prb/test": "0.6.4" - }, "publishConfig": { "access": "public" }, From 6eecf2f06e4671ef3ca45b12c70cb3559b3d108a Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Mon, 4 Dec 2023 14:00:46 +0200 Subject: [PATCH 3/7] chore: change "@forge-std" to "forge-std" --- package.json | 2 +- pnpm-lock.yaml | 6 +++--- remappings.txt | 4 ++-- script/Base.s.sol | 2 +- test/Base.t.sol | 4 ++-- test/proxy/execute/execute.t.sol | 2 +- test/proxy/run-plugin/runPlugin.t.sol | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 7991920..db777b7 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "url": "https://github.com/PaulRBerg/prb-proxy/issues" }, "devDependencies": { - "@forge/std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", "@prb/test": "0.6.4", + "forge-std": "github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", "prettier": "^2.8.8", "solhint-community": "^3.5.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da2a697..dfa83cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,12 @@ settings: excludeLinksFromLockfile: false devDependencies: - '@forge/std': - specifier: github:foundry-rs/forge-std#e8a047e3f40f13fa37af6fe14e6e06283d9a060e - version: github.com/foundry-rs/forge-std/e8a047e3f40f13fa37af6fe14e6e06283d9a060e '@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 diff --git a/remappings.txt b/remappings.txt index 74d71cd..0ee4e2a 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,2 +1,2 @@ -@forge-std/=node_modules/@forge/std/ -@prb/test/=node_modules/@prb/test \ No newline at end of file +@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 39b2069..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/src/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/test/Base.t.sol b/test/Base.t.sol index d56e69e..874c98c 100644 --- a/test/Base.t.sol +++ b/test/Base.t.sol @@ -2,8 +2,8 @@ pragma solidity >=0.8.19 <=0.9.0; 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 { 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 ee356ce..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/src/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 b8f218c..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/src/StdError.sol"; +import { stdError } from "forge-std/src/StdError.sol"; import { IPRBProxy } from "src/interfaces/IPRBProxy.sol"; From 9a5296d92966d15ed7ef63cfbb62ea26808a954d Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Mon, 4 Dec 2023 14:03:36 +0200 Subject: [PATCH 4/7] chore: update Slither config --- slither.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)" } From 9f22b653cd3837c7f696f60f7726042f205e164a Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Mon, 4 Dec 2023 14:31:38 +0200 Subject: [PATCH 5/7] ci: install Node.js in Slither job --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44a21fe..94c5b3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,6 +178,20 @@ jobs: - 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: + cache: "pnpm" + node-version: "lts/*" + + - name: "Install the Node.js dependencies" + run: "pnpm install" + - name: "Run Slither" uses: "crytic/slither-action@v0.3.0" id: "slither-run" From 2a958f10acbfcb20d1212eceef8dd7b38d81cbe4 Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Mon, 4 Dec 2023 16:11:50 +0200 Subject: [PATCH 6/7] chore: remove "lib" references --- .gitattributes | 1 - .prettierignore | 1 - .vscode/settings.json | 1 - foundry.toml | 1 - 4 files changed, 4 deletions(-) delete mode 100644 .gitattributes 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/.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/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" From 9ca10952b16120a1356960c7c79a09b27f678288 Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Mon, 4 Dec 2023 16:12:03 +0200 Subject: [PATCH 7/7] docs: update installation instructions --- README.md | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) 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