Skip to content

Commit de52d9e

Browse files
authored
Merge pull request #19 from dadadave80/chore/rename-and-refactor-libs
Chore/rename and refactor libs
2 parents 17d61e1 + c0748b9 commit de52d9e

17 files changed

Lines changed: 264 additions & 286 deletions

script/DeployDiamond.s.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {FacetCut, FacetCutAction} from "@diamond-storage/DiamondStorage.sol";
54
import {GetSelectors} from "@diamond-test/helpers/GetSelectors.sol";
65
import {MockDiamond} from "@diamond-test/mocks/MockDiamond.sol";
76
import {DiamondCutFacet} from "@diamond/facets/DiamondCutFacet.sol";
87
import {DiamondLoupeFacet} from "@diamond/facets/DiamondLoupeFacet.sol";
98
import {OwnableRolesFacet} from "@diamond/facets/OwnableRolesFacet.sol";
109
import {DiamondInit} from "@diamond/initializers/DiamondInit.sol";
11-
import {LibContext} from "@diamond/libraries/LibContext.sol";
10+
import {ContextLib} from "@diamond/libraries/ContextLib.sol";
11+
import {FacetCut, FacetCutAction} from "@diamond/libraries/DiamondLib.sol";
1212
import {Script} from "forge-std/Script.sol";
1313

1414
/// @title DeployDiamond
@@ -57,7 +57,7 @@ contract DeployDiamond is Script, GetSelectors {
5757

5858
// Deploy the Diamond contract with the facets and initialization args
5959
MockDiamond diamond =
60-
new MockDiamond(cut, diamondInit, abi.encodeWithSignature("initDiamond(address)", LibContext._msgSender()));
60+
new MockDiamond(cut, diamondInit, abi.encodeWithSignature("initDiamond(address)", ContextLib.msgSender()));
6161
diamond_ = address(diamond);
6262
vm.stopBroadcast();
6363
}

src/Diamond.sol

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {FacetCut, LibDiamond} from "@diamond/libraries/LibDiamond.sol";
4+
import {DiamondLib, FacetCut} from "@diamond/libraries/DiamondLib.sol";
55

66
/*
77
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀
@@ -64,14 +64,18 @@ abstract contract Diamond {
6464

6565
// Revert or return based on the result
6666
switch result
67-
case 0 { revert(0, returndatasize()) }
68-
default { return(0, returndatasize()) }
67+
case 0 {
68+
revert(0, returndatasize())
69+
}
70+
default {
71+
return(0, returndatasize())
72+
}
6973
}
7074
}
7175

7276
/// @notice Internal function to perform a diamond cut
7377
function _diamondCut(FacetCut[] memory _facetCuts, address _init, bytes memory _calldata) internal virtual {
74-
LibDiamond._diamondCut(_facetCuts, _init, _calldata);
78+
DiamondLib.diamondCut(_facetCuts, _init, _calldata);
7579
}
7680

7781
/// @notice Internal hook function to run before a delegatecall to the facet
@@ -81,6 +85,6 @@ abstract contract Diamond {
8185
/// @notice Retrieves the implementation address for the current function call
8286
/// @dev A Facet is one of many implementations in a Diamond Proxy
8387
function _facet() internal view virtual returns (address) {
84-
return LibDiamond._selectorToFacet(msg.sig);
88+
return DiamondLib.selectorToFacet(msg.sig);
8589
}
8690
}

src/facets/DiamondCutFacet.sol

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {FacetCut} from "@diamond-storage/DiamondStorage.sol";
54
import {IDiamondCut} from "@diamond/interfaces/IDiamondCut.sol";
6-
import {LibDiamond} from "@diamond/libraries/LibDiamond.sol";
7-
import {LibOwnableRoles} from "@diamond/libraries/LibOwnableRoles.sol";
5+
import {DiamondLib, FacetCut} from "@diamond/libraries/DiamondLib.sol";
6+
import {OwnableRolesLib} from "@diamond/libraries/OwnableRolesLib.sol";
87

98
/// @title DiamondCutFacet
109
/// @notice Simple single owner and multiroles authorization mixin.
@@ -23,8 +22,8 @@ contract DiamondCutFacet is IDiamondCut {
2322
/// _calldata is executed with delegatecall on _init
2423
function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external payable {
2524
// Check that the caller is the owner
26-
LibOwnableRoles._checkOwner();
25+
OwnableRolesLib._checkOwner();
2726
// Call the diamond cut function from the library
28-
LibDiamond._diamondCutCalldata(_diamondCut, _init, _calldata);
27+
DiamondLib.diamondCutCalldata(_diamondCut, _init, _calldata);
2928
}
3029
}

src/facets/DiamondLoupeFacet.sol

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {Facet} from "@diamond-storage/DiamondStorage.sol";
54
import {IDiamondLoupe} from "@diamond/interfaces/IDiamondLoupe.sol";
6-
import {DiamondStorage, LibDiamond} from "@diamond/libraries/LibDiamond.sol";
5+
import {Facet} from "@diamond/libraries/DiamondLib.sol";
6+
import {DiamondLib, DiamondStorage} from "@diamond/libraries/DiamondLib.sol";
77

88
/// @title DiamondLoupeFacet
99
/// @notice Provides read-only functions to inspect the state of a Diamond proxy, including facets, function selectors, and supported interfaces
@@ -15,7 +15,7 @@ contract DiamondLoupeFacet is IDiamondLoupe {
1515
/// @notice Gets all facet addresses and their function selectors.
1616
/// @return facets_ Facet
1717
function facets() external view returns (Facet[] memory facets_) {
18-
DiamondStorage storage ds = LibDiamond._diamondStorage();
18+
DiamondStorage storage ds = DiamondLib.diamondStorage();
1919
uint256 facetCount = ds.facetAddresses.length;
2020
facets_ = new Facet[](facetCount);
2121
for (uint256 i; i < facetCount; ++i) {
@@ -34,21 +34,21 @@ contract DiamondLoupeFacet is IDiamondLoupe {
3434
override
3535
returns (bytes4[] memory facetFunctionSelectors_)
3636
{
37-
facetFunctionSelectors_ = LibDiamond._diamondStorage().facetToSelectorsAndPosition[_facet].functionSelectors;
37+
facetFunctionSelectors_ = DiamondLib.diamondStorage().facetToSelectorsAndPosition[_facet].functionSelectors;
3838
}
3939

4040
/// @notice Get all the facet addresses used by a diamond.
4141
/// @return facetAddresses_
4242
function facetAddresses() external view override returns (address[] memory facetAddresses_) {
43-
facetAddresses_ = LibDiamond._diamondStorage().facetAddresses;
43+
facetAddresses_ = DiamondLib.diamondStorage().facetAddresses;
4444
}
4545

4646
/// @notice Gets the facet that supports the given selector.
4747
/// @dev If facet is not found return address(0).
4848
/// @param _functionSelector The function selector.
4949
/// @return facetAddress_ The facet address.
5050
function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) {
51-
facetAddress_ = LibDiamond._diamondStorage().selectorToFacetAndPosition[_functionSelector].facetAddress;
51+
facetAddress_ = DiamondLib.diamondStorage().selectorToFacetAndPosition[_functionSelector].facetAddress;
5252
}
5353

5454
/// @notice Query if a contract implements an interface
@@ -58,6 +58,6 @@ contract DiamondLoupeFacet is IDiamondLoupe {
5858
/// @return `true` if the contract implements `interfaceID` and
5959
/// `interfaceID` is not 0xffffffff, `false` otherwise
6060
function supportsInterface(bytes4 _interfaceId) external view returns (bool) {
61-
return LibDiamond._diamondStorage().supportedInterfaces[_interfaceId];
61+
return DiamondLib.diamondStorage().supportedInterfaces[_interfaceId];
6262
}
6363
}

src/facets/OwnableRolesFacet.sol

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {LibOwnableRoles} from "@diamond/libraries/LibOwnableRoles.sol";
4+
import {OwnableRolesLib} from "@diamond/libraries/OwnableRolesLib.sol";
55

66
/// @title OwnableRolesFacet
77
/// @notice Simple single owner and multiroles authorization mixin.
@@ -16,7 +16,7 @@ import {LibOwnableRoles} from "@diamond/libraries/LibOwnableRoles.sol";
1616
/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,
1717
/// the nomenclature for the 2-step ownership handover may be unique to this codebase.
1818
contract OwnableRolesFacet {
19-
using LibOwnableRoles for *;
19+
using OwnableRolesLib for *;
2020

2121
/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
2222
/* PUBLIC UPDATE FUNCTIONS */
@@ -29,18 +29,18 @@ contract OwnableRolesFacet {
2929

3030
/// @dev Allows the owner to renounce their ownership.
3131
function renounceOwnership() public onlyOwner {
32-
LibOwnableRoles._renounceOwnership();
32+
OwnableRolesLib._renounceOwnership();
3333
}
3434

3535
/// @dev Request a two-step ownership handover to the caller.
3636
/// The request will automatically expire in 48 hours (172800 seconds) by default.
3737
function requestOwnershipHandover() public {
38-
LibOwnableRoles._requestOwnershipHandover();
38+
OwnableRolesLib._requestOwnershipHandover();
3939
}
4040

4141
/// @dev Cancels the two-step ownership handover to the caller, if any.
4242
function cancelOwnershipHandover() public {
43-
LibOwnableRoles._cancelOwnershipHandover();
43+
OwnableRolesLib._cancelOwnershipHandover();
4444
}
4545

4646
/// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.
@@ -73,7 +73,7 @@ contract OwnableRolesFacet {
7373

7474
/// @dev Returns the owner of the contract.
7575
function owner() public view returns (address) {
76-
return LibOwnableRoles._owner();
76+
return OwnableRolesLib._owner();
7777
}
7878

7979
/// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.
@@ -116,27 +116,27 @@ contract OwnableRolesFacet {
116116

117117
/// @dev Marks a function as only callable by the owner.
118118
modifier onlyOwner() {
119-
LibOwnableRoles._checkOwner();
119+
OwnableRolesLib._checkOwner();
120120
_;
121121
}
122122

123123
/// @dev Marks a function as only callable by an account with `roles`.
124124
modifier onlyRoles(uint256 _roles) {
125-
LibOwnableRoles._checkRoles(_roles);
125+
OwnableRolesLib._checkRoles(_roles);
126126
_;
127127
}
128128

129129
/// @dev Marks a function as only callable by the owner or by an account
130130
/// with `roles`. Checks for ownership first, then lazily checks for roles.
131131
modifier onlyOwnerOrRoles(uint256 _roles) {
132-
LibOwnableRoles._checkOwnerOrRoles(_roles);
132+
OwnableRolesLib._checkOwnerOrRoles(_roles);
133133
_;
134134
}
135135

136136
/// @dev Marks a function as only callable by an account with `roles` or the owner.
137137
/// Checks for roles first, then lazily checks for ownership.
138138
modifier onlyRolesOrOwner(uint256 _roles) {
139-
LibOwnableRoles._checkRolesOrOwner(_roles);
139+
OwnableRolesLib._checkRolesOrOwner(_roles);
140140
_;
141141
}
142142
}

src/initializers/DiamondInit.sol

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {DiamondStorage, LibDiamond} from "@diamond/libraries/LibDiamond.sol";
5-
import {LibOwnableRoles} from "@diamond/libraries/LibOwnableRoles.sol";
4+
import {DiamondLib, DiamondStorage} from "@diamond/libraries/DiamondLib.sol";
5+
import {OwnableRolesLib} from "@diamond/libraries/OwnableRolesLib.sol";
66

77
/// @title DiamondInit
88
/// @notice Provides an initializer to register standard interface support (ERC-165, ERC-173, IDiamondCut, IDiamondLoupe)
@@ -16,9 +16,9 @@ contract DiamondInit {
1616
/// the initial state of the contract.
1717
function initDiamond(address _owner) public {
1818
// Initialize the owner
19-
LibOwnableRoles._initializeOwner(_owner);
19+
OwnableRolesLib._initializeOwner(_owner);
2020

21-
DiamondStorage storage ds = LibDiamond._diamondStorage();
21+
DiamondStorage storage ds = DiamondLib.diamondStorage();
2222
/// @dev type(ERC165).interfaceId
2323
ds.supportedInterfaces[0x01ffc9a7] = true;
2424
/// @dev type(IERC173).interfaceId

src/initializers/MultiInit.sol

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {LibDiamond} from "@diamond/libraries/LibDiamond.sol";
5-
import {AddressAndCalldataLengthMismatch} from "@diamond/libraries/errors/DiamondErrors.sol";
4+
import {DiamondLib} from "@diamond/libraries/DiamondLib.sol";
5+
6+
/// @notice Thrown when the length of the address array does not match the length of the calldata array.
7+
/// @dev Used in initializer logic to ensure one-to-one mapping between addresses and initialization calldata.
8+
error AddressAndCalldataLengthMismatch();
69

710
contract MultiInit {
8-
function multiInit(address[] memory _initAddresses, bytes[] memory _initData) public {
11+
function multiInit(address[] calldata _initAddresses, bytes[] calldata _initData) public {
912
uint256 initAddressesLength = _initAddresses.length;
10-
if (initAddressesLength != _initData.length) revert AddressAndCalldataLengthMismatch();
13+
if (initAddressesLength != _initData.length) {
14+
revert AddressAndCalldataLengthMismatch();
15+
}
1116

1217
for (uint256 i; i < initAddressesLength; ++i) {
13-
LibDiamond._initializeDiamondCut(_initAddresses[i], _initData[i]);
18+
DiamondLib.initializeDiamondCut(_initAddresses[i], _initData[i]);
1419
}
1520
}
1621
}

src/interfaces/IDiamondCut.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {FacetCut} from "@diamond-storage/DiamondStorage.sol";
4+
import {FacetCut} from "@diamond/libraries/DiamondLib.sol";
55

66
/// @title IDiamondCut
77
/// @notice Interface for diamond cut (facet add/replace/remove) functionality

src/interfaces/IDiamondLoupe.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.20;
33

4-
import {Facet} from "@diamond-storage/DiamondStorage.sol";
4+
import {Facet} from "@diamond/libraries/DiamondLib.sol";
55

66
/// @title IDiamondLoupe
77
/// @notice Interface for diamond loupe (facet information) functionality
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ pragma solidity ^0.8.20;
1212
*
1313
* This contract is only required for intermediate, library-like contracts.
1414
*/
15-
library LibContext {
16-
function _msgSender() internal view returns (address) {
15+
library ContextLib {
16+
function msgSender() internal view returns (address) {
1717
return msg.sender;
1818
}
1919

20-
function _msgData() internal pure returns (bytes calldata) {
20+
function msgData() internal pure returns (bytes calldata) {
2121
return msg.data;
2222
}
2323

24-
function _contextSuffixLength() internal pure returns (uint256) {
24+
function contextSuffixLength() internal pure returns (uint256) {
2525
return 0;
2626
}
2727
}

0 commit comments

Comments
 (0)