diff --git a/.changeset/sour-bats-compare.md b/.changeset/sour-bats-compare.md new file mode 100644 index 0000000000..f61f0ddaa2 --- /dev/null +++ b/.changeset/sour-bats-compare.md @@ -0,0 +1,5 @@ +--- +"@latticexyz/store": patch +--- + +Added an `unwrap` function to the `ResourceIdInstance` library to make it easier to unwrap a `ResourceId` with `resourceId.unwrap()`. diff --git a/docs/pages/store/reference/misc.mdx b/docs/pages/store/reference/misc.mdx index abae9a77b9..ea3c6ff629 100644 --- a/docs/pages/store/reference/misc.mdx +++ b/docs/pages/store/reference/misc.mdx @@ -1870,6 +1870,26 @@ function getResourceName(ResourceId resourceId) internal pure returns (bytes30); | -------- | --------- | --------------- | | `` | `bytes30` | A 30-byte name. | +#### unwrap + +Unwrap a resource ID into a bytes32. + +```solidity +function unwrap(ResourceId resourceId) internal pure returns (bytes32); +``` + +**Parameters** + +| Name | Type | Description | +| ------------ | ------------ | ---------------- | +| `resourceId` | `ResourceId` | The resource ID. | + +**Returns** + +| Name | Type | Description | +| -------- | --------- | ----------------------- | +| `` | `bytes32` | The underlying bytes32. | + ## ResourceIdLib [Git Source](https://github.com/latticexyz/mud/blob/main/packages/store/src/ResourceId.sol) diff --git a/packages/store/src/ResourceId.sol b/packages/store/src/ResourceId.sol index 03cf8c7c0a..903fa27f69 100644 --- a/packages/store/src/ResourceId.sol +++ b/packages/store/src/ResourceId.sol @@ -54,4 +54,13 @@ library ResourceIdInstance { function getResourceName(ResourceId resourceId) internal pure returns (bytes30) { return bytes30(ResourceId.unwrap(resourceId) << (TYPE_BITS)); } + + /** + * @notice Unwrap a resource ID into a bytes32. + * @param resourceId The resource ID. + * @return The underlying bytes32. + */ + function unwrap(ResourceId resourceId) internal pure returns (bytes32) { + return ResourceId.unwrap(resourceId); + } } diff --git a/packages/store/test/ResourceId.t.sol b/packages/store/test/ResourceId.t.sol index 18c3d6b51d..432e7e6cf3 100644 --- a/packages/store/test/ResourceId.t.sol +++ b/packages/store/test/ResourceId.t.sol @@ -26,6 +26,12 @@ contract ResourceIdTest is Test, GasReporter { assertEq(resourceType, RESOURCE_TABLE); } + function testUnwrap() public { + bytes32 underlying = keccak256("test"); + ResourceId id = ResourceId.wrap(underlying); + assertEq(id.unwrap(), ResourceId.unwrap(id)); + } + function testFuzz(bytes30 name, bytes2 resourceType) public { ResourceId tableId = ResourceIdLib.encode({ typeId: resourceType, name: name }); assertEq(tableId.getType(), resourceType);