From 25dc30c5aa06c8a7bfa14be48aa9f4fc782037d6 Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 12:19:15 -0700 Subject: [PATCH 01/11] merge pr only when checks pass --- scripts/publish-to-npm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index 596852c026..12d6a77205 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -106,7 +106,7 @@ while true; do done # Merge the pull request -gh pr merge "${BRANCH_NAME}" --squash --delete-branch +gh pr merge "${BRANCH_NAME}" --squash --delete-branch --auto exit_status=$? if [ $exit_status -ne 0 ]; then From 7f538c669c769af6495b62ea1bf5ee79c1c977f3 Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 12:30:27 -0700 Subject: [PATCH 02/11] add code to check when pr is merged prior to proceeding --- scripts/publish-to-npm.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index 12d6a77205..71ae95d3e1 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -108,12 +108,22 @@ done # Merge the pull request gh pr merge "${BRANCH_NAME}" --squash --delete-branch --auto -exit_status=$? -if [ $exit_status -ne 0 ]; then - play_failure_sound - echo "Failed to merge pull request." - exit $exit_status -fi +TIMEOUT=2100 # 35 minutes in seconds +START_TIME=$(date +%s) + +while gh pr status --json number -q ".currentBranch.number" > /dev/null 2>&1; do + CURRENT_TIME=$(date +%s) + ELAPSED_TIME=$(($CURRENT_TIME - $START_TIME)) + + if [ $ELAPSED_TIME -ge $TIMEOUT ]; then + echo "Error: Timed out waiting for PR to merge after 35 minutes" + exit 1 + fi + + echo "Waiting for PR to be merged..." + sleep 10 +done +echo "PR has been merged" # Pull the changes to local main git pull --rebase From 923fe77f77f66cb84f216e746ace625e4fdc3830 Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 13:06:29 -0700 Subject: [PATCH 03/11] checkout current branch --- .github/workflows/Publish_npm_packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Publish_npm_packages.yml b/.github/workflows/Publish_npm_packages.yml index 0e44ef4d38..e003f4a662 100644 --- a/.github/workflows/Publish_npm_packages.yml +++ b/.github/workflows/Publish_npm_packages.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 with: - ref: main + ref: ${{ github.event_name == 'schedule' && 'main' || github.ref }} - name: Install GPG run: | From 3d5796a1a08a07b0cb2a6dc3dae2b093c8172d5e Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 13:12:49 -0700 Subject: [PATCH 04/11] temp allow running on branch --- scripts/publish-to-npm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index 71ae95d3e1..c947bd36a9 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -17,7 +17,7 @@ if [[ "$(git status --porcelain)" != "" ]]; then exit 1 elif [[ "$(parse_git_branch)" != "main" ]]; then echo "You must be on the main branch to run this script." - exit 1 + # exit 1 fi # get the current git hash From 741797a97ef91b581fd44246a378d4fa51058bcd Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 14:30:51 -0700 Subject: [PATCH 05/11] check pr created in script --- scripts/publish-to-npm.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index c947bd36a9..fb43883d75 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -69,7 +69,8 @@ npx lerna version patch --yes --force-publish --no-private --tag-version-prefix PR_DESCRIPTION="$(make_pr_description)" -gh pr create --base main --head "${BRANCH_NAME}" --title "${PR_TITLE}" --body "${PR_DESCRIPTION}" +# Create PR and capture the PR number +PR_NUMBER=$(gh pr create --base main --head "${BRANCH_NAME}" --title "${PR_TITLE}" --body "${PR_DESCRIPTION}" --json number -q .number) while true; do WAIT_TIME=5 @@ -105,25 +106,23 @@ while true; do fi done -# Merge the pull request -gh pr merge "${BRANCH_NAME}" --squash --delete-branch --auto - +# Wait for PR to be merged using the specific PR number TIMEOUT=2100 # 35 minutes in seconds START_TIME=$(date +%s) -while gh pr status --json number -q ".currentBranch.number" > /dev/null 2>&1; do +while gh pr view "$PR_NUMBER" --json state -q ".state" | grep -q "OPEN"; do CURRENT_TIME=$(date +%s) ELAPSED_TIME=$(($CURRENT_TIME - $START_TIME)) if [ $ELAPSED_TIME -ge $TIMEOUT ]; then - echo "Error: Timed out waiting for PR to merge after 35 minutes" + echo "Error: Timed out waiting for PR #${PR_NUMBER} to merge after 35 minutes" exit 1 fi - echo "Waiting for PR to be merged..." + echo "Waiting for PR #${PR_NUMBER} to be merged..." sleep 10 done -echo "PR has been merged" +echo "PR #${PR_NUMBER} has been merged" # Pull the changes to local main git pull --rebase From 8f96600e68391f619a3c8ed5301b9a2d33d3451d Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 16:17:03 -0700 Subject: [PATCH 06/11] fix pr num extraction --- scripts/publish-to-npm.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index fb43883d75..9e50c0fb78 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -70,7 +70,14 @@ npx lerna version patch --yes --force-publish --no-private --tag-version-prefix PR_DESCRIPTION="$(make_pr_description)" # Create PR and capture the PR number -PR_NUMBER=$(gh pr create --base main --head "${BRANCH_NAME}" --title "${PR_TITLE}" --body "${PR_DESCRIPTION}" --json number -q .number) +PR_URL=$(gh pr create --base main --head "${BRANCH_NAME}" --title "${PR_TITLE}" --body "${PR_DESCRIPTION}") +if [ $? -ne 0 ]; then + echo "Failed to create PR" + exit 1 +fi +PR_NUMBER=$(echo $PR_URL | rev | cut -d'/' -f1 | rev) + +echo "Created PR #${PR_NUMBER}" while true; do WAIT_TIME=5 From 983cbe059f811345f673f0d6fed64846b2b9dd0a Mon Sep 17 00:00:00 2001 From: John Terzis Date: Fri, 7 Feb 2025 17:13:17 -0700 Subject: [PATCH 07/11] merge only after checks pass --- scripts/publish-to-npm.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index 9e50c0fb78..969b8e03fa 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -77,6 +77,9 @@ if [ $? -ne 0 ]; then fi PR_NUMBER=$(echo $PR_URL | rev | cut -d'/' -f1 | rev) +# Enable auto-merge +gh pr merge "${PR_NUMBER}" --auto --merge --squash + echo "Created PR #${PR_NUMBER}" while true; do From 147e5db121a45cc4ad6eb02c6f797682e4080c6e Mon Sep 17 00:00:00 2001 From: John Terzis Date: Sat, 8 Feb 2025 08:26:05 -0700 Subject: [PATCH 08/11] fix merge cli command --- scripts/get_paginated_streams.sh | 34 ++++++++++++++++++ scripts/is_entitled_input.json | 7 ++++ scripts/is_entitled_script.sh | 58 +++++++++++++++++++++++++++++++ scripts/publish-to-npm.sh | 4 +-- scripts/verify-facets-basescan.sh | 27 ++++++++++++++ 5 files changed, 128 insertions(+), 2 deletions(-) create mode 100755 scripts/get_paginated_streams.sh create mode 100644 scripts/is_entitled_input.json create mode 100755 scripts/is_entitled_script.sh create mode 100644 scripts/verify-facets-basescan.sh diff --git a/scripts/get_paginated_streams.sh b/scripts/get_paginated_streams.sh new file mode 100755 index 0000000000..eb74cfcbd3 --- /dev/null +++ b/scripts/get_paginated_streams.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Initialize variables +start=0 +page_size=5000 +is_last_page=false + +while [ "$is_last_page" = false ]; do + echo "Fetching streams from $start to $((start + page_size))" + + # Make the cast call + result=$(cast call $RIVER_REGISTRY_CONTRACT \ + "getPaginatedStreams(uint256,uint256)((bytes32,(bytes32,uint64,uint64,uint64,address[]))[],bool)" \ + $start $((start + page_size)) \ + --rpc-url $RIVER_RPC_URL) + + # Print the result + # echo "$result" + + # Extract is_last_page value from the last line of the result + is_last_page=$(echo "$result" | tail -n 1) + + # Move to next page + start=$((start + page_size)) + + # Add a 100ms delay between calls + sleep 0.1 + + # Break if we just processed the last page + if [ "$is_last_page" = true ]; then + echo "Reached last page. Exiting..." + break + fi +done \ No newline at end of file diff --git a/scripts/is_entitled_input.json b/scripts/is_entitled_input.json new file mode 100644 index 0000000000..b298a41fa4 --- /dev/null +++ b/scripts/is_entitled_input.json @@ -0,0 +1,7 @@ +{ + "channelId": "0x207ce9312cf40ce89426e8262de3f6701b0e27d822f2e4b86c478928c2742315", + "wallets": [ + "0xeb59fF9fF1384eC05f3dFBee403d6640635d19bb" + ], + "permission": "0x1234567890123456789012345678901234567890123456789012345678901234" +} \ No newline at end of file diff --git a/scripts/is_entitled_script.sh b/scripts/is_entitled_script.sh new file mode 100755 index 0000000000..a28ea89979 --- /dev/null +++ b/scripts/is_entitled_script.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Configuration variables +RPC_URL="${BASE_RPC_URL}" # Change this to your RPC endpoint +CONTRACT_ADDRESS="0x7Ce9312Cf40CE89426E8262De3F6701b0E27d822" # Change this to your deployed contract address +# Function to read and validate JSON input +check_json() { + if ! jq empty "$1" 2>/dev/null; then + echo "Error: Invalid JSON file" + exit 1 + fi +} + +# Check if JSON file is provided as argument +if [ $# -ne 1 ]; then + echo "Usage: $0 " + echo "Expected JSON format:" + echo '{ + "channelId": "0x...", + "wallets": ["0x...", "0x..."], + "permission": "0x..." + }' + exit 1 +fi + +INPUT_FILE=$1 + +# Validate JSON file +check_json "$INPUT_FILE" + +# Read values from JSON +CHANNEL_ID=$(jq -r '.channelId' "$INPUT_FILE") +PERMISSION=$(jq -r '.permission' "$INPUT_FILE") + +# Convert wallets array to ABI-encoded format +# First, create the array encoding +WALLETS_ARRAY=$(jq -r '.wallets | join(",")' "$INPUT_FILE") + +echo "Making cast call with arguments:" +echo "RPC URL: $RPC_URL" +echo "Contract: $CONTRACT_ADDRESS" +echo "Channel ID: $CHANNEL_ID" +echo "Wallets: $WALLETS_ARRAY" +echo "Permission: $PERMISSION" +echo "---" + +# Construct the call data +# Function signature: isEntitled(bytes32,address,bytes32) +RESULT=$(cast call \ + --rpc-url "$RPC_URL" \ + "$CONTRACT_ADDRESS" \ + "isEntitledToChannel(bytes32,address,bytes32)(bool)" \ + "$CHANNEL_ID" \ + "$WALLETS_ARRAY" \ + "$PERMISSION") + +# Output the result +echo "$RESULT" \ No newline at end of file diff --git a/scripts/publish-to-npm.sh b/scripts/publish-to-npm.sh index 969b8e03fa..801f79b150 100755 --- a/scripts/publish-to-npm.sh +++ b/scripts/publish-to-npm.sh @@ -78,7 +78,7 @@ fi PR_NUMBER=$(echo $PR_URL | rev | cut -d'/' -f1 | rev) # Enable auto-merge -gh pr merge "${PR_NUMBER}" --auto --merge --squash +gh pr merge "${PR_NUMBER}" --auto --squash echo "Created PR #${PR_NUMBER}" @@ -130,7 +130,7 @@ while gh pr view "$PR_NUMBER" --json state -q ".state" | grep -q "OPEN"; do fi echo "Waiting for PR #${PR_NUMBER} to be merged..." - sleep 10 + sleep 30 done echo "PR #${PR_NUMBER} has been merged" diff --git a/scripts/verify-facets-basescan.sh b/scripts/verify-facets-basescan.sh new file mode 100644 index 0000000000..86a2ff5030 --- /dev/null +++ b/scripts/verify-facets-basescan.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Check if input file is provided +if [ -z "$1" ]; then + echo "Usage: ./verify_facets.sh " + exit 1 +fi + +SOURCE_DIFF_YAML=$1 +BASESCAN_SEPOLIA_URL=${BASESCAN_SEPOLIA_URL:-'https://api-sepolia.basescan.org/api'} +BASESCAN_SEPOLIA_API_KEY=${BASESCAN_SEPOLIA_API_KEY:-'your_api_key_here'} +echo "Source diff yaml: ${SOURCE_DIFF_YAML}" + +# Read the updated facets from the YAML file and verify each one +yq e '.updated[].facets[]' "${SOURCE_DIFF_YAML}" | while read -r facet; do + FACET_NAME=$(echo "$facet" | yq e '.facetName' -) + DEPLOYED_ADDRESS=$(echo "$facet" | yq e '.deployedAddress' -) + + echo "Verifying $FACET_NAME at $DEPLOYED_ADDRESS" + + make explicit-verify-any \ + rpc=base-sepolia \ + verifier="${BASESCAN_SEPOLIA_URL}" \ + etherscan="${BASESCAN_SEPOLIA_API_KEY}" \ + address="${DEPLOYED_ADDRESS}" \ + contract="${FACET_NAME}" +done \ No newline at end of file From 22285ebdb748d2a0e1222c7f7d0a7467852e5869 Mon Sep 17 00:00:00 2001 From: John Terzis Date: Sat, 8 Feb 2025 08:58:11 -0700 Subject: [PATCH 09/11] fix --- scripts/is_entitled_input.json | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 scripts/is_entitled_input.json diff --git a/scripts/is_entitled_input.json b/scripts/is_entitled_input.json deleted file mode 100644 index b298a41fa4..0000000000 --- a/scripts/is_entitled_input.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "channelId": "0x207ce9312cf40ce89426e8262de3f6701b0e27d822f2e4b86c478928c2742315", - "wallets": [ - "0xeb59fF9fF1384eC05f3dFBee403d6640635d19bb" - ], - "permission": "0x1234567890123456789012345678901234567890123456789012345678901234" -} \ No newline at end of file From 2f5dcc0686457fce3010d7d7eb92120b1dab1a10 Mon Sep 17 00:00:00 2001 From: John Terzis Date: Sat, 8 Feb 2025 12:14:31 -0700 Subject: [PATCH 10/11] add version to xchain monitor package --- packages/xchain-monitor/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/xchain-monitor/package.json b/packages/xchain-monitor/package.json index 324ae1f2ae..517dfbe953 100644 --- a/packages/xchain-monitor/package.json +++ b/packages/xchain-monitor/package.json @@ -1,6 +1,7 @@ { "name": "@river-build/xchain-monitor", "type": "module", + "version": "0.0.1", "packageManager": "yarn@3.8.0", "main": "dist/index.js", "dependencies": { From 63b7288b88c10cdb57edde2a4a4ad6ec4896a141 Mon Sep 17 00:00:00 2001 From: GitHub Action Bot Date: Sat, 8 Feb 2025 19:21:18 +0000 Subject: [PATCH 11/11] sdk-3a414d3-0.0.160 --- lerna.json | 2 +- packages/create-river-build-app/package.json | 2 +- packages/dlog/package.json | 2 +- packages/encryption/package.json | 2 +- packages/eslint-config/package.json | 2 +- packages/generated/package.json | 2 +- packages/prettier-config/package.json | 2 +- packages/proto/package.json | 2 +- packages/react-sdk/package.json | 2 +- packages/sdk/package.json | 2 +- packages/web3/package.json | 2 +- packages/xchain-monitor/package.json | 2 +- protocol/package.json | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index e4972d0638..835257580f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "0.0.159", + "version": "0.0.160", "packages": ["packages/*", "protocol"], "npmClient": "yarn" } diff --git a/packages/create-river-build-app/package.json b/packages/create-river-build-app/package.json index 368012a1f2..aa91c0ddf1 100644 --- a/packages/create-river-build-app/package.json +++ b/packages/create-river-build-app/package.json @@ -1,6 +1,6 @@ { "name": "create-river-build-app", - "version": "0.0.159", + "version": "0.0.160", "bin": "index.js", "engines": { "node": "^18.0.0 || >=20.0.0" diff --git a/packages/dlog/package.json b/packages/dlog/package.json index d6f9252794..70a12b90a6 100644 --- a/packages/dlog/package.json +++ b/packages/dlog/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/dlog", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "type": "module", "main": "dist/index.js", diff --git a/packages/encryption/package.json b/packages/encryption/package.json index 7d3f7da4fe..d3f64b559f 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/encryption", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "type": "module", "main": "dist/index.js", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index e5b9efdfd9..4ba4ad71d4 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/eslint-config", - "version": "0.0.159", + "version": "0.0.160", "license": "MIT", "main": "typescript.js" } diff --git a/packages/generated/package.json b/packages/generated/package.json index 973f95fd86..890d9155a7 100644 --- a/packages/generated/package.json +++ b/packages/generated/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/generated", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "scripts": { "build": "yarn make-config", diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index 0da22d9ebe..2a640aacd1 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/prettier-config", - "version": "0.0.159", + "version": "0.0.160", "license": "MIT", "main": "config.js", "peerDependencies": { diff --git a/packages/proto/package.json b/packages/proto/package.json index ecdc5dbaf5..a72ba5294c 100644 --- a/packages/proto/package.json +++ b/packages/proto/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/proto", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "type": "module", "main": "dist/index.js", diff --git a/packages/react-sdk/package.json b/packages/react-sdk/package.json index 270340a57f..da28f2971a 100644 --- a/packages/react-sdk/package.json +++ b/packages/react-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@river-build/react-sdk", "description": "React Hooks for River SDK", - "version": "0.0.159", + "version": "0.0.160", "type": "module", "main": "./dist/esm/index.js", "types": "./dist/types/index.d.ts", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 8aa5f2f2cb..812bb1daaa 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/sdk", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "type": "module", "main": "dist/index.js", diff --git a/packages/web3/package.json b/packages/web3/package.json index 2666c0d4ec..8d37a1c667 100644 --- a/packages/web3/package.json +++ b/packages/web3/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/web3", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "type": "module", "main": "dist/index.js", diff --git a/packages/xchain-monitor/package.json b/packages/xchain-monitor/package.json index 517dfbe953..aac1e4c73d 100644 --- a/packages/xchain-monitor/package.json +++ b/packages/xchain-monitor/package.json @@ -1,7 +1,7 @@ { "name": "@river-build/xchain-monitor", "type": "module", - "version": "0.0.1", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "main": "dist/index.js", "dependencies": { diff --git a/protocol/package.json b/protocol/package.json index bfa381b1d3..76ec9f0179 100644 --- a/protocol/package.json +++ b/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@river-build/proto-source", - "version": "0.0.159", + "version": "0.0.160", "packageManager": "yarn@3.8.0", "files": [ "*.proto"