diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..394d0de --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,92 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish to make via issue, +email, or any other method with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Process + +1. Ensure any install or build dependencies are removed before the end of the layer when doing a + build. +2. Update the README.md with details of changes to the interface, this includes new environment + variables, exposed ports, useful file locations and container parameters. +3. Increase the version numbers in any examples files and the README.md to the new version that this + Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). +4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you + do not have permission to do that, you may request the second reviewer to merge it for you. + +## Code of Conduct + +### Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +### Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +### Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +### Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +### Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at info@venly.io. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +### Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/.github/LICENSE b/.github/LICENSE new file mode 100644 index 0000000..99b1a04 --- /dev/null +++ b/.github/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Venly.io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/.github/actions/bump_version/action.yml b/.github/actions/bump_version/action.yml new file mode 100644 index 0000000..3237f45 --- /dev/null +++ b/.github/actions/bump_version/action.yml @@ -0,0 +1,51 @@ +name: ๐Ÿ”– Bump Build Version +description: "Bump Build Version" + +inputs: + token: + description: GitHub token for authentication + required: true + +outputs: + new_version: + description: "Bumped Version" + value: ${{ steps.bump_version.outputs.new_version }} + +runs: + using: "composite" + steps: + - uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + - name: ๐Ÿ”– Bump Version + id: bump_version + shell: bash + run: | + #!/bin/bash + set -x + new_version=$(npm version prerelease --preid=develop --git-tag-version=false) + new_version=${new_version#v} + echo "Version after bump: $(jq -r '.version' package.json)" + echo "new_version=$new_version" >> $GITHUB_ENV + echo "new_version=$new_version" >> $GITHUB_OUTPUT + + - name: Commit version bump + id: commit_version_bump + shell: bash + run: | + #!/bin/bash + set -x + git commit -a -m ${{ steps.bump_version.outputs.new_version }} + + - name: Push version bump + id: push_version_bump + shell: bash + run: | + #!/bin/bash + set -x + git push origin diff --git a/.github/actions/cleanup_npm_versions/action.yml b/.github/actions/cleanup_npm_versions/action.yml new file mode 100644 index 0000000..ff37fb5 --- /dev/null +++ b/.github/actions/cleanup_npm_versions/action.yml @@ -0,0 +1,45 @@ +name: ๐Ÿงน Cleanup Old Develop Versions +description: "Remove old develop pre-release versions from npm where the base version is <= the just-released version" + +runs: + using: "composite" + steps: + - name: ๐Ÿงน Cleanup old develop versions + shell: bash + run: | + #!/bin/bash + set -x + + package_name=$(jq -r '.name' package.json) + released_version="$published_version" + + if [[ -z "$released_version" ]]; then + echo "No published_version found, skipping cleanup" + exit 0 + fi + + echo "Released version: $released_version" + + # Set registry for @venly scope + npm config set @venly:registry https://registry.npmjs.org/ + + # Get all versions from npm + all_versions=$(npm view "$package_name" versions --json 2>/dev/null | jq -r '.[]') + + unpublished_count=0 + + for version in $all_versions; do + # Only target develop pre-release versions + if [[ "$version" =~ ^([0-9]+\.[0-9]+\.[0-9]+)-develop\.[0-9]+$ ]]; then + version_base="${BASH_REMATCH[1]}" + + # Check if version_base <= released_version (sort -V puts the higher version last) + higher=$(printf '%s\n%s' "$version_base" "$released_version" | sort -V | tail -1) + if [[ "$higher" == "$released_version" ]]; then + echo "Unpublishing ${package_name}@${version}" + npm unpublish "${package_name}@${version}" && ((unpublished_count++)) || echo "Failed to unpublish ${version}, continuing..." + fi + fi + done + + echo "Cleanup complete. Unpublished ${unpublished_count} old develop version(s)." diff --git a/.github/actions/get_version/action.yml b/.github/actions/get_version/action.yml new file mode 100644 index 0000000..7a4c861 --- /dev/null +++ b/.github/actions/get_version/action.yml @@ -0,0 +1,32 @@ +name: version +description: "Reads the version number from package.json" + +outputs: + version: + description: "Version from package.json" + value: ${{ steps.package-version.outputs.current_version }} + +runs: + using: "composite" + steps: + - name: โ” get-npm-version โ” + id: package-version + shell: bash + run: | + #!/bin/bash + set -x + PACKAGE_JSON_PATH="./package.json" + if [[ -f "$PACKAGE_JSON_PATH" ]]; then + VERSION=$(jq -r '.version' "$PACKAGE_JSON_PATH") + if [[ "$VERSION" == "null" || -z "$VERSION" ]]; then + echo "No version field found in $PACKAGE_JSON_PATH" + echo "current_version=0.0.0" >> $GITHUB_ENV + else + echo "Version in $PACKAGE_JSON_PATH is $VERSION" + echo "current_version=$VERSION" >> $GITHUB_ENV + echo "current_version=$VERSION" >> $GITHUB_OUTPUT + fi + else + echo "$PACKAGE_JSON_PATH not found" + echo "current_version=0.0.0" >> $GITHUB_ENV + fi diff --git a/.github/actions/hotfix_finish/README.md b/.github/actions/hotfix_finish/README.md new file mode 100644 index 0000000..03d5bbf --- /dev/null +++ b/.github/actions/hotfix_finish/README.md @@ -0,0 +1,47 @@ +# Hotfix Node Application Finish + +This GitHub Action concludes the hotfix process for a Node.js application. It finalizes the hotfix version, merges the hotfix into the production branch, tags the release, publishes the hotfix, and cleans up the hotfix branch. + +## Inputs + +| Input | Description | Required | +|--------|----------------------------------|----------| +| `token`| The VENLY_GITHUB_ACTIONS_TOKEN. | Yes | + +## Runs + +This action operates using the "composite" run type and carries out the steps outlined below: + +1. **Set HOME environment variable** to define a consistent workspace for the action. +2. **Setup Git Credentials** to ensure access to the repository for operations such as checkout, commit, and push. +3. **Determine Master or Main** to identify the production branch. +4. **Checkout production branch** to apply the hotfix. +5. **Setup Node.js environment** with the specified Node.js version (defaults to 16.x). +6. **Identify the hotfix branch** by fetching remote branches and filtering for the hotfix pattern. +7. **Switch to the hotfix branch** to finalize the version and prepare for merging. +8. **Bump Version and Create Tag** using npm to finalize the hotfix version and prepare for release. +9. **Get npm version for hotfix** to capture the new version number from `package.json`. +10. **Checkout and Merge to Production Branch** to apply the hotfix changes to the production codebase. +11. **Publish Hotfix** using GitHub Releases to distribute the hotfix version. +12. **Switch to Development Branch** to integrate the hotfix changes into the ongoing development work. +13. **Merge to Develop** to synchronize the development branch with the hotfix and production changes. +14. **Push Changes** to both develop and production branches to finalize the hotfix process. +15. **Cleanup Release Branch** by deleting the hotfix branch to clean up the repository. + +## Hotfix Flow Info + +This action also provides detailed information about the hotfix process, including the workflow name, actor, repository, reference, hotfix version, commit SHA, run ID, and run number. + +## Example Usage + +```yaml +jobs: + hotfix_finish_job: + runs-on: docker-runner + name: Finish Hotfix Node Application + steps: + - name: Hotfix Node App Finish + uses: Venly/venly-github-workflows/.github/actions/hotfix_java_start@main + with: + token: ${{ secrets.VENLY_GITHUB_ACTIONS_TOKEN }} +``` diff --git a/.github/actions/hotfix_finish/action.yml b/.github/actions/hotfix_finish/action.yml new file mode 100644 index 0000000..7a0e13a --- /dev/null +++ b/.github/actions/hotfix_finish/action.yml @@ -0,0 +1,224 @@ +name: "Hotfix Node Applicaton Finish" +description: "Hotfix Node Applicaton Finish" +inputs: + token: + description: GitHub token for authentication + required: true + node_version: + default: 18.x + description: Node Version to use +runs: + using: "composite" + steps: + - name: Set HOME environment variable ๐Ÿ  + shell: bash + run: | + echo "๐Ÿ  Setting HOME environment variable..." + echo "HOME=${{ github.workspace }}" >> $GITHUB_ENV + + - name: Setup Git Credentials ๐Ÿ”‘ + uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + # Checkout code to production branch + - name: Checkout production branch + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ” Make sure we are on the production Branch ๐Ÿ”" + git switch main + + - name: Setup Node.js ${{ inputs.node_version }} ๐Ÿ“ฆ + uses: actions/setup-node@v4 + id: node_setup + with: + node-version: ${{ inputs.node_version }} + + # ===================================================== + # Hotfix + # ===================================================== + # Get the Name of the Hotfix Branch + - name: Check for multiple hotfix branches + shell: bash + run: | + #!/bin/bash + set -x + # Fetch all branches from the remote + git fetch --all + + # Get a list of hotfix branches + hotfix_branches=$(git branch -r | grep -o 'origin/hotfix-[0-9]*\.[0-9]*\.[0-9]*') + + # Count the number of hotfix branches + branch_count=$(echo "$hotfix_branches" | wc -l) + + if [ "$branch_count" -gt 1 ]; then + echo "Error: Multiple hotfix branches found. Please resolve the following hotfix branches:" + echo "$hotfix_branches" | sort -V + exit 1 + elif [ "$branch_count" -eq 1 ]; then + echo "One hotfix branch found. Proceeding with the pipeline." + else + echo "No hotfix branch found. Proceeding with the pipeline." + fi + - name: ๐Ÿ” Get Hotfix Branch + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ”„ Fetching and identifying the hotfix branch..." + git fetch -p + HOTFIX_BRANCH=$(git branch -r | grep origin/hotfix- | sort -t. -k1,1n -k2,2n -k3,3n | head -n1 | cut -d '/' -f 2) + if [ -z "$HOTFIX_BRANCH" ]; then + echo "โŒ No hotfix branch found. Continuing without it." + else + echo "hotfix_branch=$HOTFIX_BRANCH" >> $GITHUB_ENV + echo "โœ… Hotfix Branch is: $HOTFIX_BRANCH" + fi + + # Switch to Hotfix Branch + - name: ๐Ÿ”€ Switch to hotfix branch ${{ env.hotfix_branch }} + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ”„ Switching to the hotfix branch..." + git checkout ${{ env.hotfix_branch }} + git status + + # Finalize version + - name: ๐Ÿท๏ธ Bump Version and Create Tag + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ”– Finalizing the version and creating a tag from the ${{ env.hotfix_branch }} branch" + # Remove all local tags + git tag -l | xargs -n 1 git tag -d + HOTFIX_VERSION=$(npm version patch --no-git-tag-version) + echo "npm_hotfix_version=$HOTFIX_VERSION" >> $GITHUB_ENV + git commit -am "Finalize version ${{ env.npm_hotfix_version }}" + + # Check if the tag already exists + if git rev-parse "$HOTFIX_VERSION" >/dev/null 2>&1; then + echo "Tag $HOTFIX_VERSION already exists. Please Remove the tag and try again..." + exit 1 + fi + + # Read package.json for version + - name: Read hotfix package version + uses: ./.github/actions/read_package_version + with: + env_var_name: hotfix_version + + # Merge to Production Branch + - name: ๐Ÿ”€ Checkout and Merge to Production Branch + shell: bash + run: | + set -x + echo "๐Ÿ”„ Fetching and switching to the production branch..." + git fetch origin + git checkout main + git pull origin main + + echo "๐Ÿ”„ Merging the hotfix branch..." + git merge ${{ env.hotfix_branch }} --no-commit --no-ff + MERGE_STATUS=$? + + if [ $MERGE_STATUS -ne 0 ]; then + echo "Merge conflict detected, listing conflicts..." + git diff --name-only --diff-filter=U + git diff --diff-filter=U + echo "Please resolve the above conflicts and push the changes manually." + exit 1 + else + echo "โœ… Merge successful. Committing the merge..." + git commit -m "Merge hotfix branch ${{ env.hotfix_branch }} into main" + git push origin main + fi + + # Publish Hotfix + - name: ๐Ÿš€ Publish Hotfix + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.npm_hotfix_version }} + token: ${{ inputs.token }} + append_body: true + + # Switch to Development Branch + - name: ๐Ÿ”€ Switch to Development Branch + shell: bash + run: | + echo "๐Ÿ”„ Switching to the development branch..." + git switch develop + git status + + # Read package.json for version + - name: Read develop package version + uses: ./.github/actions/read_package_version + with: + env_var_name: develop_version + + # Merge Back to develop + - name: ๐Ÿ”€ Merge To Develop + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ”„ Merging changes back to the develop branch..." + echo "I'm in ${{ github.ref }}" + # Step 1: Bump the version with npm + npm version ${{ env.hotfix_version }} --git-tag-version=false + + # Step 2: Commit changes for hotfix version + git commit -am "Update develop to hotfix version ${{ env.hotfix_version }} to avoid merge conflicts" + + # Step 3: Merge the production branch + MERGE_OUTPUT=$(git merge "main" 2>&1) + MERGE_STATUS=$? + echo "Merge Output: $MERGE_OUTPUT" + echo "Merge Status: $MERGE_STATUS" + + # Step 4: Bump the version of develop branch + npm version ${{ env.develop_version }} --git-tag-version=false + + # Step 5: Commit changes for develop version back to pre-merge state + git commit -am "Update develop version ${{ env.develop_version }} back to pre-merge state" + + # Push Changes + - name: โฌ†๏ธ Push Changes + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ“ค Pushing changes to develop and production branches..." + git push origin develop:refs/heads/develop + git push origin main:refs/heads/main + + # Cleanup Release Branch + - name: ๐Ÿงน Delete Hotfix Branch + uses: dawidd6/action-delete-branch@v3 + with: + github_token: ${{ inputs.token }} + branches: ${{ env.hotfix_branch }} + # ===================================================== + # Hotfix Flow Info + # ===================================================== + - name: โ„น๏ธ Display Hotfix Process Info + shell: bash + run: | + echo "๐Ÿš€ Hotfix Process Details ๐Ÿš€" + echo "โœจ Workflow Name: ${{ github.workflow }}" + echo "๐Ÿ‘ค Triggered by: ${{ github.actor }}" + echo "๐Ÿ“ฆ Repository: ${{ github.repository }}" + echo "๐Ÿ”– Reference: ${{ github.ref }}" + echo "๐Ÿท๏ธ Hotfix Version: ${{ env.npm_hotfix_version }}" + echo "๐Ÿ”‘ Commit SHA: ${{ github.sha }}" + echo "๐Ÿ”ข Run ID: ${{ github.run_id }}" + echo "๐Ÿ”ข Run Number: ${{ github.run_number }}" diff --git a/.github/actions/hotfix_start/README.md b/.github/actions/hotfix_start/README.md new file mode 100644 index 0000000..34d13a5 --- /dev/null +++ b/.github/actions/hotfix_start/README.md @@ -0,0 +1,43 @@ +# Hotfix Node Application Start + +This GitHub Action initiates the hotfix process for a Node.js application. It sets up the environment, configures Git credentials, determines the production branch, and prepares a new hotfix branch with a bumped version based on the semantic versioning from `package.json`. + +## Inputs + +| Input | Description | Required | +|--------|----------------------------------|----------| +| `token`| The VENLY_GITHUB_ACTIONS_TOKEN. | Yes | + +## Runs + +This action utilizes the "composite" run type to execute the following steps: + +1. **Set HOME environment variable** to help with tooling and scripts that might need a HOME directory. +2. **Setup Git Credentials** for subsequent Git operations within the action. +3. **Determine Master or Main** to find the production branch name (either `master` or `main`). +4. **Checkout production branch** to start the hotfix process from the current production codebase. +5. **Setup Node.js environment** using the specified Node.js version (defaults to 16.x). +6. **Bump the application version** in `package.json` to a new prepatch version with `SNAPSHOT` preid, without creating a Git tag. +7. **Extract the semantic version** from `package.json` and prepare it for use in branch naming and tagging. +8. **Create a Hotfix Branch** with the new version and push it to the remote repository. +9. **Switch to the development branch** to prepare for the merge back into the development branch after the hotfix is finalized. +10. **Merge the hotfix changes back into the development branch** after adjusting versioning to avoid merge conflicts. +11. **Display Hotfix Process Info** if the flow is set to 'finish', including workflow name, actor, repository, reference, hotfix branch, commit SHA, run ID, and run number. + +## Hotfix Flow Info + +At the end of the action, if the flow is set to 'finish', details of the hotfix process are displayed, providing visibility into the workflow execution and important references. + +## Example Usage + +```yaml +jobs: + hotfix_start_job: + runs-on: docker-runner + name: Start Hotfix Node Application + steps: + - name: Hotfix Node App Start + uses: Venly/venly-github-workflows/.github/actions/hotfix_node_start@main + with: + token: ${{ secrets.VENLY_GITHUB_ACTIONS_TOKEN }} +``` diff --git a/.github/actions/hotfix_start/action.yml b/.github/actions/hotfix_start/action.yml new file mode 100644 index 0000000..1560414 --- /dev/null +++ b/.github/actions/hotfix_start/action.yml @@ -0,0 +1,160 @@ +name: "Hotfix Node Applicaton Start" +description: "Hotfix Node Applicaton Start" +inputs: + token: + description: GitHub token for authentication + required: true + node_version: + default: 18.x + description: Node Version to use +runs: + using: "composite" + steps: + - name: Set HOME environment variable ๐Ÿ  + shell: bash + run: | + echo "๐Ÿ  Setting HOME environment variable..." + echo "HOME=${{ github.workspace }}" >> $GITHUB_ENV + + - name: Setup Git Credentials ๐Ÿ”‘ + uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + # Checkout code to production branch + - name: Checkout production branch + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ” Make sure we are on the production Branch ๐Ÿ”" + git switch main + + - name: Setup Node.js ${{ inputs.node_version }} ๐Ÿ“ฆ + uses: actions/setup-node@v4 + id: node_setup + with: + node-version: ${{ inputs.node_version }} + + # ===================================================== + # Hotfix + # ===================================================== + # Create hotfix version + - name: Bump Version + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿš€ Bumping the version..." + git fetch -p + git status + npm version prepatch --preid=SNAPSHOT --git-tag-version=false + + # Read package.json for version + - name: Read hotfix package version + uses: ./.github/actions/read_package_version + with: + env_var_name: hotfix_version_raw + + # Extract semantic version + - name: Extract semantic version + shell: bash + id: hotfix_version + run: | + #!/bin/bash + set -x + RAW_HOTFIX_VERSION=${{ env.hotfix_version_raw }} + HOTFIX_VERSION=$(echo $RAW_HOTFIX_VERSION | grep -oP "\d*\.\d*\.\d*") + if [ -n "$HOTFIX_VERSION" ]; then + echo "hotfix_version=$HOTFIX_VERSION" >> $GITHUB_ENV + echo "hotfix_version=$HOTFIX_VERSION" >> $GITHUB_OUTPUT + echo $HOTFIX_VERSION + else + echo "No version found" + fi + + - name: Check for existing hotfix branch + shell: bash + run: | + #!/bin/bash + set -x + # Fetch all branches from the remote + git fetch --all + + # Check if any branch contains the keyword "hotfix" + if git branch -r | grep -q "origin/hotfix"; then + echo "Error: A hotfix branch already exists. Please resolve or merge the existing hotfix branch before creating a new one." + exit 1 + else + echo "No existing hotfix branch found. Proceeding..." + fi + + - name: Create Hotfix Branch + shell: bash + run: | + #!/bin/bash + set -x + git checkout -b hotfix-${{ env.hotfix_version }} + git commit -am "Create hotfix version ${{ env.hotfix_version_raw }}" + git push origin HEAD:refs/heads/hotfix-${{ env.hotfix_version }} + + # Switch to Development Branch + - name: Switch to development branch + shell: bash + run: | + git switch develop + git status + + # Read package.json for version + - name: Read develop package version + uses: ./.github/actions/read_package_version + with: + env_var_name: current-version-develop + + # Merge Back to develop + - name: Merge To Develop Branch ๐Ÿ”„ + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ”„ Preparing to merge the hotfix branch into develop..." + # Checkout develop branch + git checkout develop + + # Bump version to match the hotfix version without creating a git tag + echo "๐Ÿ”– Bumping version to match hotfix version..." + npm version ${{ env.hotfix_version_raw }} --git-tag-version=false + git commit -am "Update develop to hotfix version ${{ env.hotfix_version_raw }} to avoid merge conflicts" + + # Merge the hotfix branch + echo "๐Ÿ”€ Merging hotfix-${{ env.hotfix_version }} into develop..." + git merge hotfix-${{ env.hotfix_version }} -m "Merge hotfix-${{ env.hotfix_version }} into develop" + + # Bump the develop version back to pre-merge state + echo "๐Ÿ”– Bumping develop version back to pre-merge state..." + npm version ${{ env.current-version-develop }} --git-tag-version=false + git commit -am "Update develop version back to pre-merge state" + + # Push changes to the develop branch + echo "๐Ÿ“ค Pushing changes to the develop branch..." + git push origin develop + + # ===================================================== + # Hotfix Flow Info + # ===================================================== + - name: โ„น๏ธ Display Hotfix Process Info + shell: bash + run: | + echo "๐Ÿš€ Hotfix Process Details ๐Ÿš€" + echo "โœจ Workflow Name: ${{ github.workflow }}" + echo "๐Ÿ‘ค Triggered by: ${{ github.actor }}" + echo "๐Ÿ“ฆ Repository: ${{ github.repository }}" + echo "๐Ÿ”– Reference: ${{ github.ref }}" + echo "๐Ÿท๏ธ Hotfix Branch: hotfix-${{ env.hotfix_version }}" + echo "๐Ÿ”‘ Commit SHA: ${{ github.sha }}" + echo "๐Ÿ”ข Run ID: ${{ github.run_id }}" + echo "๐Ÿ”ข Run Number: ${{ github.run_number }}" diff --git a/.github/actions/merge_back/README.md b/.github/actions/merge_back/README.md new file mode 100644 index 0000000..99dbaad --- /dev/null +++ b/.github/actions/merge_back/README.md @@ -0,0 +1,31 @@ +# Merge Back to Development Action + +## Description + +The "Merge Back to Development" Action automates the process of merging changes from a specified branch back into the development branch. This action is typically used in continuous integration workflows to ensure that feature branches or release branches are correctly merged back after completion. + +## Inputs + +| Input | Description | Required | +| --------- | ----------------------------------- | -------- | +| `branch` | The branch to merge into develop | Yes | +| `token` | The VENLY_GITHUB_ACTIONS_TOKEN | Yes | + +## Steps + +1. **Branch Identification**: Identifies and echoes the branch to be merged. +2. **Checkout Code**: Checks out the code from the specified branch. +3. **Git Credentials Setup**: Configures Git credentials for push operations. +4. **Merge Operation**: Performs the merge operation from the specified branch to the development branch. + +## Usage + +To use this action in your workflow, add the following step: + +```yaml +- name: Merge Back to Development + uses: Venly/venly-github-workflows/.github/actions/merge_back@main + with: + branch: "" + token: "" +``` diff --git a/.github/actions/merge_back/action.yml b/.github/actions/merge_back/action.yml new file mode 100644 index 0000000..cec23b4 --- /dev/null +++ b/.github/actions/merge_back/action.yml @@ -0,0 +1,66 @@ +name: "Merge Back to Development" +description: "Merge branch back to develop" +inputs: + branch: + description: The branch to Merge + required: true + token: + description: GitHub token for authentication + required: true +runs: + using: "composite" + steps: + - name: Branch to Build + shell: bash + run: echo -e "๐Ÿ”ง Merging ${{ github.sha }} back to develop ๐Ÿ”ง" + + - uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + - name: Merge back to develop + env: + GIT_USERNAME: ${{ github.actor }} + GITHUB_TOKEN: ${{ inputs.token }} + shell: bash + run: | + #!/bin/bash + set -x + + git fetch -p --unshallow + git reset --hard + git checkout ${{ github.sha }} + if [ -f "package.json" ]; then + # Read branch version + BRANCH_VERSION=$(jq -r '.version' package.json) + + # Fetch develop branch and checkout + git fetch --no-tags origin develop:develop + git checkout develop + + # Read develop version + DEVELOP_VERSION=$(jq -r '.version' package.json) + + # Update develop to branch version + npm version $BRANCH_VERSION --git-tag-version=false + git commit -am "Update develop to branch version to avoid merge conflicts" + + # Merge current commit into develop + git merge ${{ github.sha }} + + # Restore develop version + npm version $DEVELOP_VERSION --git-tag-version=false + git commit -am "Update develop version back to pre-merge state" + else + # If not a Node.js project, just merge + git fetch --no-tags origin develop:develop + git checkout develop + git merge ${{ github.sha }} + fi + + # Push changes back to develop branch + git push origin develop:develop diff --git a/.github/actions/publish_npm/action.yml b/.github/actions/publish_npm/action.yml new file mode 100644 index 0000000..3f006a7 --- /dev/null +++ b/.github/actions/publish_npm/action.yml @@ -0,0 +1,47 @@ +name: ๐Ÿš€ Publish +description: "Publish To Npm" + +outputs: + published_version: + description: "Published Version from package.json" + value: ${{ steps.publish.outputs.published_version }} + +runs: + using: "composite" + steps: + - name: ๐Ÿš€ Publish to npm + id: publish + shell: bash + run: | + #!/bin/bash + set -x + + # Get current version from package.json + current_version=$(jq -r '.version' package.json) + package_name=$(jq -r '.name' package.json) + + # Set registry for @venly scope + npm config set @venly:registry https://registry.npmjs.org/ + + # Check if version already exists + if npm view ${package_name}@${current_version} version &>/dev/null; then + echo "Version ${current_version} already exists in npm registry, skipping publish" + echo "published_version=${current_version}" >> $GITHUB_ENV + echo "published_version=${current_version}" >> $GITHUB_OUTPUT + exit 0 + fi + + # Publish the npm package (authenticated via OIDC trusted publishing) + if [ "${{ github.ref }}" == "refs/heads/main" ]; then + npm publish --verbose + else + npm publish --tag $(echo "${{ github.ref }}" | sed 's|refs/heads/||') --verbose + fi + + # Push tags + git push -f --tags origin HEAD:${{ github.ref_name }} + + # Output the version + echo "Published version: ${current_version}" + echo "published_version=${current_version}" >> $GITHUB_ENV + echo "published_version=${current_version}" >> $GITHUB_OUTPUT diff --git a/.github/actions/read_package_version/action.yml b/.github/actions/read_package_version/action.yml new file mode 100644 index 0000000..4e817e0 --- /dev/null +++ b/.github/actions/read_package_version/action.yml @@ -0,0 +1,22 @@ +name: "Read Package Version" +description: "Read version from package.json and set it as an environment variable" +inputs: + env_var_name: + description: Name of the environment variable to set with the version value + required: true +runs: + using: "composite" + steps: + - name: Read version from package.json + shell: bash + run: | + #!/bin/bash + set -x + VERSION=$(jq -r '.version' "./package.json") + if [[ "$VERSION" == "null" || -z "$VERSION" ]]; then + echo "No version field found in package.json" + echo "${{ inputs.env_var_name }}=0.0.0" >> $GITHUB_ENV + else + echo "Version in package.json is $VERSION" + echo "${{ inputs.env_var_name }}=$VERSION" >> $GITHUB_ENV + fi diff --git a/.github/actions/release_finish/README.md b/.github/actions/release_finish/README.md new file mode 100644 index 0000000..08e33d5 --- /dev/null +++ b/.github/actions/release_finish/README.md @@ -0,0 +1,34 @@ +# Release Node Application Action + +## Description + +The "Release Node Application" Action automates the release process for Node.js applications. It covers both starting and finishing release flows, incorporating version management, changelog generation, merging, and tagging. + +## Inputs + +| Input | Description | Required | +| ----------- | ----------------------------------- | -------- | +| `flow` | Release flow, can be 'start' or 'finish' | Yes | +| `token` | The VENLY_GITHUB_ACTIONS_TOKEN | Yes | + +## Steps + +1. **Checkout Code**: Checks out the code from the development branch. +2. **Setup Node.js**: Sets up the Node.js environment for the build process. +3. **Release Flow Start**: If the `flow` input is 'start', it initiates the release process by creating a new release branch and bumping the version. +4. **Release Flow Finish**: If the `flow` input is 'finish', it finalizes the release process, including merging changes to the production branch, creating a release, and updating the development branch. +5. **Build Changelog**: Generates a changelog for the release using the release-changelog-builder action. +6. **Publish Release**: Creates a GitHub release with the new version number and the generated changelog. +7. **Cleanup**: Deletes the release branch after the release is finished. + +## Usage + +To use this action in your workflow, add the following step: + +```yaml +- name: Release Node Application + uses: Venly/venly-github-workflows/.github/actions/release_node@main + with: + flow: "" + token: "" +``` diff --git a/.github/actions/release_finish/action.yml b/.github/actions/release_finish/action.yml new file mode 100644 index 0000000..4301b5d --- /dev/null +++ b/.github/actions/release_finish/action.yml @@ -0,0 +1,124 @@ +name: "Release Node Applicaton Finish" +description: "Release Node Applicaton Finish" +inputs: + token: + description: GitHub token for authentication + required: true + node_version: + default: 18.x + description: Node Version to use +runs: + using: "composite" + steps: + - name: Set HOME environment variable + shell: bash + run: echo "HOME=${{ github.workspace }}" >> $GITHUB_ENV + + - uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + - name: Use Node.js ${{ inputs.node_version }} + uses: actions/setup-node@v4.0.2 + id: node_setup + with: + node-version: ${{ inputs.node_version }} + check-latest: true + # ===================================================== + # Release + # ===================================================== + # Get the Name of the Release Branch + - name: Get Release Branch + shell: bash + run: | + #!/bin/bash + set -x + RELEASE_BRANCH=$(git branch -r | grep origin/release- | sort -t. -k1,1n -k2,2n -k3,3n | head -n1 | cut -d '/' -f 2) + if [ -z "$RELEASE_BRANCH" ]; then + echo "No release branch found. Continuing without it." + else + echo "Release branch found. Continuing..." + echo "release_branch=$RELEASE_BRANCH" >> $GITHUB_ENV + echo "Release branch found - $RELEASE_BRANCH. Continuing..." + fi + + # Finalize Version + - name: Finalise version + shell: bash + run: | + #!/bin/bash + set -x + git stash push -u -m "Temporarily stashing changes before switching branches" + git checkout ${{ env.release_branch }} + git config user.email "${{ github.actor }}@venly.io" + git config user.name "${{ github.actor }}" + npm version minor + RELEASE_VERSION=$(jq -r '.version' package.json) + echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV + + - name: Merge to main + shell: bash + run: | + #!/bin/bash + set -x + git switch main + git merge ${{ env.release_branch }} + + # Merge Back to develop + - name: Merge back to develop + shell: bash + run: | + #!/bin/bash + set -x + git reset --hard + git switch develop + # Remove all local tags + git tag -l | xargs -n 1 git tag -d + DEVELOP_VERSION=$(jq -r '.version' package.json) + + # Update npm version to release version to avoid merge conflicts + npm version ${{ env.RELEASE_VERSION }} --git-tag-version=false + git commit -am "Update develop to release version to avoid merge conflicts" + + # Merge the production branch in develop + git merge main + + # Update npm version back to the develop version + npm version $DEVELOP_VERSION --git-tag-version=false + git commit -am "Update develop version back to pre-merge state" + + # Push + - name: Push Changes + shell: bash + run: | + #!/bin/bash + set -x + git push --tags origin develop:refs/heads/develop + git push origin main:refs/heads/main + + # Cleanup Release Branch + - name: Delete branch in specific repository with a specific owner + uses: dawidd6/action-delete-branch@v3 + with: + github_token: ${{ inputs.token }} + branches: ${{ env.release_branch }} + + # ===================================================== + # Release Flow Info + # ===================================================== + - name: โ„น๏ธ Display Release Process Info + shell: bash + run: | + echo "๐Ÿš€ Release Process Details ๐Ÿš€" + echo "โœจ Workflow Name: ${{ github.workflow }}" + echo "๐Ÿ‘ค Triggered by: ${{ github.actor }}" + echo "๐Ÿ“ฆ Repository: ${{ github.repository }}" + echo "๐Ÿ”– Reference: ${{ github.ref }}" + echo "๐Ÿท๏ธ Release Version: ${{ env.RELEASE_VERSION }}" + echo "๐Ÿ”‘ Commit SHA: ${{ github.sha }}" + echo "๐Ÿ”ข Run ID: ${{ github.run_id }}" + echo "๐Ÿ”ข Run Number: ${{ github.run_number }}" diff --git a/.github/actions/release_start/README.md b/.github/actions/release_start/README.md new file mode 100644 index 0000000..08e33d5 --- /dev/null +++ b/.github/actions/release_start/README.md @@ -0,0 +1,34 @@ +# Release Node Application Action + +## Description + +The "Release Node Application" Action automates the release process for Node.js applications. It covers both starting and finishing release flows, incorporating version management, changelog generation, merging, and tagging. + +## Inputs + +| Input | Description | Required | +| ----------- | ----------------------------------- | -------- | +| `flow` | Release flow, can be 'start' or 'finish' | Yes | +| `token` | The VENLY_GITHUB_ACTIONS_TOKEN | Yes | + +## Steps + +1. **Checkout Code**: Checks out the code from the development branch. +2. **Setup Node.js**: Sets up the Node.js environment for the build process. +3. **Release Flow Start**: If the `flow` input is 'start', it initiates the release process by creating a new release branch and bumping the version. +4. **Release Flow Finish**: If the `flow` input is 'finish', it finalizes the release process, including merging changes to the production branch, creating a release, and updating the development branch. +5. **Build Changelog**: Generates a changelog for the release using the release-changelog-builder action. +6. **Publish Release**: Creates a GitHub release with the new version number and the generated changelog. +7. **Cleanup**: Deletes the release branch after the release is finished. + +## Usage + +To use this action in your workflow, add the following step: + +```yaml +- name: Release Node Application + uses: Venly/venly-github-workflows/.github/actions/release_node@main + with: + flow: "" + token: "" +``` diff --git a/.github/actions/release_start/action.yml b/.github/actions/release_start/action.yml new file mode 100644 index 0000000..708c348 --- /dev/null +++ b/.github/actions/release_start/action.yml @@ -0,0 +1,109 @@ +name: "Release Node Applicaton Start" +description: "Release Node Applicaton Start" +inputs: + token: + description: GitHub token for authentication + required: true + node_version: + default: 18.x + description: Node Version to use +runs: + using: "composite" + steps: + - name: Set HOME environment variable + shell: bash + run: echo "HOME=${{ github.workspace }}" >> $GITHUB_ENV + + - uses: oleksiyrudenko/gha-git-credentials@v2.1.1 + with: + global: false + name: ${{ github.actor }} + email: ${{ github.actor }}@venly.io + actor: ${{ github.actor }} + token: ${{ inputs.token }} + + - name: Use Node.js ${{ inputs.node_version }} + uses: actions/setup-node@v4.0.2 + id: node_setup + with: + node-version: ${{ inputs.node_version }} + check-latest: true + # ===================================================== + # Release + # ===================================================== + # Switch to develop version + - name: Switch to develop branch and check for updates + shell: bash + run: | + #!/bin/bash + set -x + echo "๐Ÿ” Make sure we are on the develop Branch ๐Ÿ”" + git switch develop + git fetch origin develop + CHANGED_FILES=$(git diff --name-only HEAD origin/develop) + if [[ -n "$CHANGED_FILES" ]]; then + echo "The following files differ from the remote 'develop' branch and might cause issues:" + echo "$CHANGED_FILES" + echo "Attempting to merge remote 'develop' into local 'develop' branch..." + git merge origin/develop --no-edit || (echo "Merge conflicts detected, manual resolution required." && exit 1) + else + echo "Local 'develop' branch is up-to-date with remote." + fi + + # Read package.json for version + - name: Read package version + uses: ./.github/actions/read_package_version + with: + env_var_name: release_version_raw + + - name: Extract semantic version + shell: bash + id: semantic-version + run: | + #!/bin/bash + set -x + RAW_RELEASE_VERSION=${{ env.release_version_raw }} + RELEASE_VERSION=$(echo $RAW_RELEASE_VERSION | grep -oP "\d*\.\d*\.\d*") + if [ -n "$RELEASE_VERSION" ]; then + echo "release_version=$RELEASE_VERSION" >> $GITHUB_ENV + echo "release_version=$RELEASE_VERSION" >> $GITHUB_OUTPUT + echo $RELEASE_VERSION + else + echo "No version found" + fi + + # Create Release Branch + - uses: peterjgrainger/action-create-branch@v2.4.0 + env: + GITHUB_TOKEN: ${{ inputs.token }} + with: + branch: release-${{ env.release_version }} + + # Bump npm minor version + - name: "Automated Version Bump" + shell: bash + run: | + #!/bin/bash + set -x + git switch develop + NEW_PRE_VERSION=$(npm version preminor --preid=SNAPSHOT --git-tag-version=false) + git add --all + git commit --allow-empty -m "bump develop version $NEW_PRE_VERSION" + git push origin HEAD:refs/heads/develop + echo "npm_new_pre_version=$NEW_PRE_VERSION" >> $GITHUB_ENV + + # ===================================================== + # Release Flow Info + # ===================================================== + - name: โ„น๏ธ Display Release Process Info + shell: bash + run: | + echo "๐Ÿš€ Release Process Details ๐Ÿš€" + echo "โœจ Workflow Name: ${{ github.workflow }}" + echo "๐Ÿ‘ค Triggered by: ${{ github.actor }}" + echo "๐Ÿ“ฆ Repository: ${{ github.repository }}" + echo "๐Ÿ”– Reference: ${{ github.ref }}" + echo "๐Ÿท๏ธ Release Branch: release-${{ env.release_version }}" + echo "๐Ÿ”‘ Commit SHA: ${{ github.sha }}" + echo "๐Ÿ”ข Run ID: ${{ github.run_id }}" + echo "๐Ÿ”ข Run Number: ${{ github.run_number }}" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..4d60edb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,73 @@ +name: ๐Ÿ—๏ธ Build +on: + push: + paths-ignore: + - ".github/**" + - "package.json" + - "package-lock.json" + pull_request: + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: write + actions: read + id-token: write + +run-name: ๐Ÿ—๏ธ Build ${{ github.ref_name }} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ”‘ Generate CI token + if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/heads/hotfix-') || startsWith(github.ref, 'refs/heads/release-')) + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.CI_BOT_APP_ID }} + private-key: ${{ secrets.CI_BOT_PRIVATE_KEY }} + + - name: โœ… Checkout + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token || github.token }} + + - name: ๐Ÿ” Get Version + uses: ./.github/actions/get_version + + - name: โฌ†๏ธ Bump Version + if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/hotfix-') || startsWith(github.ref, 'refs/heads/release-')) + uses: ./.github/actions/bump_version + with: + token: ${{ steps.app-token.outputs.token }} + + - name: ๐Ÿ› ๏ธ Setup Node.js + uses: actions/setup-node@v4 + id: node_setup + with: + node-version: 24.x + + - name: ๐Ÿ—๏ธ Build Node + run: | + #!/bin/bash + set -x + npm i + npm run build + + - name: ๐Ÿš€ Publish Npm + if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/heads/hotfix-') || startsWith(github.ref, 'refs/heads/release-')) + uses: ./.github/actions/publish_npm + + - name: ๐Ÿงน Cleanup Old Develop Versions + if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' + uses: ./.github/actions/cleanup_npm_versions + + - name: ๐Ÿ”„ Merge Back + if: startsWith(github.ref, 'refs/heads/hotfix-') || startsWith(github.ref, 'refs/heads/release-') + uses: ./.github/actions/merge_back + with: + branch: ${{ github.ref_name }} + token: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/hotfix_finish.yml b/.github/workflows/hotfix_finish.yml new file mode 100644 index 0000000..95fb900 --- /dev/null +++ b/.github/workflows/hotfix_finish.yml @@ -0,0 +1,25 @@ +name: ๐Ÿฉน Hotfix Finish +on: + workflow_dispatch: +permissions: + contents: write +run-name: ๐Ÿฉน hotfix-finish +jobs: + hotfix: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ”‘ Generate CI token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.CI_BOT_APP_ID }} + private-key: ${{ secrets.CI_BOT_PRIVATE_KEY }} + + - name: โœ… Checkout + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + fetch-depth: 0 + - uses: ./.github/actions/hotfix_finish + with: + token: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/hotfix_start.yml b/.github/workflows/hotfix_start.yml new file mode 100644 index 0000000..d3e8d3b --- /dev/null +++ b/.github/workflows/hotfix_start.yml @@ -0,0 +1,25 @@ +name: ๐Ÿค• Hotfix Start +on: + workflow_dispatch: +permissions: + contents: write +run-name: ๐Ÿค• hotfix-start +jobs: + hotfix: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ”‘ Generate CI token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.CI_BOT_APP_ID }} + private-key: ${{ secrets.CI_BOT_PRIVATE_KEY }} + + - name: โœ… Checkout + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + fetch-depth: 0 + - uses: ./.github/actions/hotfix_start + with: + token: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/release_finish.yml b/.github/workflows/release_finish.yml new file mode 100644 index 0000000..d5134b4 --- /dev/null +++ b/.github/workflows/release_finish.yml @@ -0,0 +1,25 @@ +name: ๐Ÿ›ฌ Release Finish +on: + workflow_dispatch: +permissions: + contents: write +run-name: ๐Ÿ›ฌ release-finish +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ”‘ Generate CI token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.CI_BOT_APP_ID }} + private-key: ${{ secrets.CI_BOT_PRIVATE_KEY }} + + - name: โœ… Checkout + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + fetch-depth: 0 + - uses: ./.github/actions/release_finish + with: + token: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/release_start.yml b/.github/workflows/release_start.yml new file mode 100644 index 0000000..997e0c8 --- /dev/null +++ b/.github/workflows/release_start.yml @@ -0,0 +1,25 @@ +name: ๐Ÿ›ซ Release Start +on: + workflow_dispatch: +permissions: + contents: write +run-name: ๐Ÿ›ซ release-start +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ”‘ Generate CI token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.CI_BOT_APP_ID }} + private-key: ${{ secrets.CI_BOT_PRIVATE_KEY }} + + - name: โœ… Checkout + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + fetch-depth: 0 + - uses: ./.github/actions/release_start + with: + token: ${{ steps.app-token.outputs.token }} diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 819de81..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,87 +0,0 @@ -pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage('Bump version') { - when { - anyOf { - branch 'develop' - branch 'hotfix-*' - branch 'release-*' - } - } - steps { - sh "git config --global user.email \"jenkins@venly.io\"" - sh "git config --global user.name \"Jenkins\"" - sh "npm version prerelease --preid=develop" - } - } - stage('Build') { - steps { - sh "npm i" - sh "npm run build" - } - } - stage('Publish to npmjs') { - environment { - NPM_KEY = credentials('NPM_KEY') - } - when { - anyOf { - branch 'develop' - branch 'hotfix-*' - branch 'release-*' - branch 'main' - } - } - steps { - sh "printf '//registry.npmjs.org/:_authToken=' > .npmrc && printf '${NPM_KEY}' >> .npmrc" - script { - if (env.BRANCH_NAME == 'main') { - sh 'npm publish' - } else { - sh 'npm publish --tag ${BRANCH_NAME}' - } - } - withCredentials([usernamePassword(credentialsId: 'GITHUB_CRED', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) { - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git HEAD:refs/heads/${BRANCH_NAME}' - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git --tags' - } - } - post { - always { - cleanWs(deleteDirs: true, patterns: [[pattern: '.npmrc', type: 'INCLUDE']]) - } - } - } - stage('Merge back to develop') { - when { - anyOf { - branch 'hotfix-*' - branch 'release-*' - } - } - steps { - withCredentials([usernamePassword(credentialsId: 'GITHUB_CRED', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) { - sh 'git remote add mergeBack https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git' - sh 'git fetch --no-tags mergeBack' - sh 'git reset --hard' - sh 'git checkout -b develop --track mergeBack/develop' - sh 'git merge ${GIT_COMMIT}' - sh 'git push mergeBack' - } - } - post { - always { - cleanWs(deleteDirs: true, patterns: [[pattern: '.git', type: 'INCLUDE']]) - } - } - } - } -} diff --git a/Jenkinsfile-Hotfix-finish b/Jenkinsfile-Hotfix-finish deleted file mode 100644 index 5c1ab05..0000000 --- a/Jenkinsfile-Hotfix-finish +++ /dev/null @@ -1,75 +0,0 @@ - pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage('Initialize env') { - steps { - sh "git config --global user.email \"jenkins@venly.io\"" - sh "git config --global user.name \"Jenkins\"" - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git fetch -p' - } - script { - env.HOTFIX_BRANCH = sh (script: 'git branch -a | grep origin/hotfix- | cut -d \'/\' -f 3', returnStdout: true).trim() - } - echo env.HOTFIX_BRANCH - } - } - stage('Finalise version') { - steps { - sh "git checkout ${HOTFIX_BRANCH}" - sh "npm version patch" - script { - def packageFile = readJSON file: 'package.json' - env.HOTFIX_VERSION = packageFile.version - } - } - } - stage('Merge to main') { - steps { - sh "git checkout main" - sh "git merge ${HOTFIX_BRANCH}" - } - } - stage('Merge back to develop') { - steps { - sh "git checkout develop" - script { - def packageFile = readJSON file: 'package.json' - env.DEVELOP_VERSION = packageFile.version - } - sh "npm version ${HOTFIX_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop to hotfix version to avoid merge conflicts"' - sh "git merge main" - sh "npm version ${DEVELOP_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop version back to pre-merge state"' - } - } - stage('Push to Github') { - steps { - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin develop:refs/heads/develop' - sh 'git push origin main:refs/heads/main' - } - } - } - stage('Cleanup hotfix branch') { - steps { - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin :refs/heads/${HOTFIX_BRANCH}' - } - } - } - } - post { - always { - cleanWs() - } - } -} diff --git a/Jenkinsfile-Hotfix-start b/Jenkinsfile-Hotfix-start deleted file mode 100644 index 640c81b..0000000 --- a/Jenkinsfile-Hotfix-start +++ /dev/null @@ -1,58 +0,0 @@ -pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage('Initialize env') { - steps { - sh "git config --global user.email \"jenkins@venly.io\"" - sh "git config --global user.name \"Jenkins\"" - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git fetch -p' - } - } - } - stage ('Create hotfix version + branch') { - steps { - sh 'npm version prepatch --preid=SNAPSHOT --git-tag-version=false' - script { - def packageFile = readJSON file: 'package.json' - env.RAW_HOTFIX_VERSION = packageFile.version - def versionMatcher = env.RAW_HOTFIX_VERSION =~ /(\d*\.\d*\.\d*)/ - if (versionMatcher.size() > 0) { - env.HOTFIX_VERSION = versionMatcher[0][0] - } - } - sh 'git checkout -b hotfix-${HOTFIX_VERSION}' - sh 'git commit -am "Create hotfix version"' - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin HEAD:refs/heads/hotfix-${HOTFIX_VERSION}' - } - } - } - stage('Merge hotfix-branch back to develop') { - steps { - sh 'git checkout develop' - script { - def packageFile = readJSON file: 'package.json' - env.DEVELOP_VERSION = packageFile.version - } - sh "npm version ${RAW_HOTFIX_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop to hotfix version to avoid merge conflicts"' - sh "git merge hotfix-${HOTFIX_VERSION}" - sh "npm version ${DEVELOP_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop version back to pre-merge state"' - } - } - } - post { - always { - cleanWs() - } - } -} diff --git a/Jenkinsfile-Release-finish b/Jenkinsfile-Release-finish deleted file mode 100644 index 7c0a65c..0000000 --- a/Jenkinsfile-Release-finish +++ /dev/null @@ -1,75 +0,0 @@ -pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage('Initialize env') { - steps { - sh "git config --global user.email \"jenkins@venly.io\"" - sh "git config --global user.name \"Jenkins\"" - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git fetch -p' - } - script { - env.RELEASE_BRANCH = sh (script: 'git branch -a | grep origin/release- | cut -d \'/\' -f 3', returnStdout: true).trim() - } - echo env.RELEASE_BRANCH - } - } - stage('Finalise version') { - steps { - sh "git checkout ${RELEASE_BRANCH}" - sh "npm version minor" - script { - def packageFile = readJSON file: 'package.json' - env.RELEASE_VERSION = packageFile.version - } - } - } - stage('Merge to main') { - steps { - sh "git checkout main" - sh "git merge ${RELEASE_BRANCH}" - } - } - stage('Merge back to develop') { - steps { - sh "git checkout develop" - script { - def packageFile = readJSON file: 'package.json' - env.DEVELOP_VERSION = packageFile.version - } - sh "npm version ${RELEASE_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop to release version to avoid merge conflicts"' - sh "git merge main" - sh "npm version ${DEVELOP_VERSION} --git-tag-version=false" - sh 'git commit -am "Update develop version back to pre-merge state"' - } - } - stage('Push to Github') { - steps { - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin develop:refs/heads/develop' - sh 'git push origin main:refs/heads/main' - } - } - } - stage('Cleanup release branch') { - steps { - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin :refs/heads/${RELEASE_BRANCH}' - } - } - } - } - post { - always { - cleanWs() - } - } -} diff --git a/Jenkinsfile-Release-start b/Jenkinsfile-Release-start deleted file mode 100644 index e902e5a..0000000 --- a/Jenkinsfile-Release-start +++ /dev/null @@ -1,50 +0,0 @@ -pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage('Initialize env') { - steps { - sh "git config --global user.email \"jenkins@venly.io\"" - sh "git config --global user.name \"Jenkins\"" - } - } - stage ('Create release branch') { - steps { - script { - def packageFile = readJSON file: 'package.json' - env.RAW_RELEASE_VERSION = packageFile.version - def versionMatcher = env.RAW_RELEASE_VERSION =~ /(\d*\.\d*\.\d*)/ - if (versionMatcher.size() > 0) { - env.RELEASE_VERSION = versionMatcher[0][0] - } - } - sh "git checkout develop" - sh "git checkout -b release-${RELEASE_VERSION}" - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin HEAD:refs/heads/release-${RELEASE_VERSION}' - } - } - } - stage ('Bump develop version') { - steps { - sh "git checkout develop" - sh "npm version preminor --preid=SNAPSHOT --git-tag-version=false" - sh 'git commit -am "bump develop version"' - withCredentials([gitUsernamePassword(credentialsId: 'GITHUB_CRED', gitToolName: 'Default')]) { - sh 'git push origin HEAD:refs/heads/develop' - } - } - } - } - post { - always { - cleanWs() - } - } -} diff --git a/Jenkinsfile-release b/Jenkinsfile-release deleted file mode 100644 index 738e95c..0000000 --- a/Jenkinsfile-release +++ /dev/null @@ -1,66 +0,0 @@ -pipeline { - agent any - environment { - GITHUB_CREDS = credentials('GITHUB_CRED') - RELEASE_BRANCH = "release-${env.BUILD_DATE}" - } - options { - disableConcurrentBuilds() - timeout(time: 15, unit: 'MINUTES') - } - stages { - stage ('release branch and set version') { - steps { - sh "git config --global user.email \"jenkins@arkane.network\"" - sh "git config --global user.name \"Jenkins\"" - sh "git checkout -b ${RELEASE_BRANCH}" - sh "npm version minor" - withCredentials([usernamePassword(credentialsId: 'GITHUB_CRED', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) { - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git HEAD:refs/heads/${RELEASE_BRANCH}' - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git --tags' - } - } - } - - stage ('merge and publish') { - environment { - NPM_KEY = credentials('NPM_KEY') - } - steps { - sh "git checkout master" - sh "git merge --no-ff ${RELEASE_BRANCH}" - sh "npm i" - sh "npm run build-ts" - sh "npm run build-js" - sh "printf '//registry.npmjs.org/:_authToken=' > .npmrc && printf '${NPM_KEY}' >> .npmrc" - sh 'npm publish' - withCredentials([usernamePassword(credentialsId: 'GITHUB_CRED', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) { - sh 'rm .npmrc' - sh 'git add .' - sh 'git commit --allow-empty -m "changes during ${RELEASE_BRANCH}"' - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git HEAD:refs/heads/master' - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git --tags' - } - } - } - - stage ('backmerge to develop and increase dev version') { - steps { - sh "git checkout develop" - sh "git merge --no-ff master" - sh "npm version preminor --preid=develop --git-tag-version=false" - sh 'git add .' - sh 'git commit -m "bump develop version after ${RELEASE_BRANCH}"' - withCredentials([usernamePassword(credentialsId: 'GITHUB_CRED', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) { - sh 'git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/ArkaneNetwork/web3-react-venly.git HEAD:refs/heads/develop' - } - } - } - } - - post { - always { - cleanWs() - } - } -} diff --git a/package-lock.json b/package-lock.json index c1ebd91..a498269 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "@venly/web3-react-venly", - "version": "1.2.1", - "lockfileVersion": 2, + "version": "1.2.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@venly/web3-react-venly", - "version": "1.2.1", + "version": "1.2.0", + "license": "MIT", "dependencies": { - "@venly/web3-provider": "^3.1.0", + "@venly/web3-provider": "^3.8.0", "@web3-react/types": "^8.1.2-beta.0" }, "devDependencies": { @@ -16,33 +17,21 @@ "typescript": "^5.0.4" } }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==" - }, - "node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "license": "MIT", "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" } }, "node_modules/@ethereumjs/rlp": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", "bin": { "rlp": "bin/rlp" }, @@ -50,23 +39,39 @@ "node": ">=14" } }, + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@ethereumjs/util": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.0.5.tgz", - "integrity": "sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", "dependencies": { - "@chainsafe/ssz": "0.9.4", "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^1.1.2" + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" }, "engines": { "node": ">=14" } }, "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", "dev": true, "funding": [ { @@ -78,18 +83,19 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", "funding": [ { "type": "individual", @@ -100,21 +106,17 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", "bn.js": "^5.2.1" } }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", "funding": [ { "type": "individual", @@ -125,14 +127,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", "dev": true, "funding": [ { @@ -144,15 +147,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", "funding": [ { "type": "individual", @@ -162,12 +166,13 @@ "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ] + ], + "license": "MIT" }, "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", "dev": true, "funding": [ { @@ -179,206 +184,437 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@metamask/abi-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", + "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "@metamask/superstruct": "^3.1.0", + "@metamask/utils": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-block-tracker": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-block-tracker/-/eth-block-tracker-9.0.3.tgz", + "integrity": "sha512-I29IwdhnSJtk/A05vFsiOV92ADXXtBymXfC0naSvHP9TYNNOryG9y2l0jmnSzBsP3+wefCkHJWEzEwF4YSKogw==", + "license": "MIT", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^5.0.0" + }, + "engines": { + "node": ">=16.20 || ^18.16" + } + }, + "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/json-rpc-engine": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", + "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", + "license": "ISC", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@metamask/eth-json-rpc-middleware": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-11.0.0.tgz", - "integrity": "sha512-QDEUZsoUdgZKwFnMS8XW/aQ8mJULaOssXjGnk9DocCs/p8rj69bovBsHtnlYawVHYuOy4Cual5GmAtvAZcrPxA==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-12.1.2.tgz", + "integrity": "sha512-qhaUq0SenE8P916yuYDj5dbdGRvl/qJDsjPGSlSJOi0QBASFDbKpo5k1st+ban6duJfRUQhrwzERCVyNbtil7w==", + "license": "ISC", + "dependencies": { + "@metamask/eth-block-tracker": "^9.0.3", + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/eth-sig-util": "^7.0.0", + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "klona": "^2.0.6", + "pify": "^5.0.0", + "safe-stable-stringify": "^2.4.3" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", "dependencies": { - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@metamask/eth-sig-util": "^5.0.0", - "@metamask/utils": "^3.0.3", - "clone": "^2.1.1", - "eth-block-tracker": "^7.0.0", - "eth-rpc-errors": "^4.0.3", - "json-rpc-engine": "^6.1.0", - "pify": "^3.0.0", - "safe-stable-stringify": "^2.3.2" + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@metamask/eth-json-rpc-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.0.tgz", - "integrity": "sha512-Bl9FbSNctgh1FRjUX0Gpoo4BwFXBKplcZ198y9/gysUhgOBD4MKqe3V4XzaYXuvB7VhVA9TNH0ZsaK1MnolpWg==", + "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/json-rpc-engine": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", + "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", + "license": "ISC", "dependencies": { - "@metamask/safe-event-emitter": "^2.0.0", - "json-rpc-engine": "^6.1.0" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-provider": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-2.3.2.tgz", + "integrity": "sha512-VaZx++3gfi85+j9zB5TvqSWLeZ6QpsNjIk56Nq6OMDp2U8iUEPgjdA8CybOtkyDb88EbpuOSzHZcdHEeIX3zPw==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^7.3.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@metamask/eth-sig-util": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz", - "integrity": "sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", + "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", + "license": "ISC", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "@metamask/abi-utils": "^2.0.4", + "@metamask/utils": "^9.0.0", + "@scure/base": "~1.1.3", + "ethereum-cryptography": "^2.1.2", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", "dependencies": { - "@ethereumjs/util": "^8.0.0", - "bn.js": "^4.11.8", - "ethereum-cryptography": "^1.1.2", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", + "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", + "license": "MIT", + "dependencies": { + "@metamask/utils": "^9.0.0", + "fast-safe-stringify": "^2.0.6" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@metamask/safe-event-emitter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", - "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", + "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", + "license": "ISC", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/superstruct": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", + "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } }, "node_modules/@metamask/utils": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", - "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", - "dependencies": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", "debug": "^4.3.4", - "semver": "^7.3.8", - "superstruct": "^1.0.3" + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" }, "node_modules/@venly/connect": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@venly/connect/-/connect-2.2.0.tgz", - "integrity": "sha512-fSG+loJ7q6Oy8FCIPPIba3z6Ss6TEJ4ZRGDSoQw7Od0JCaSPPJ1MOA9/4MplVIbj3eCqR/FS11tq0K1jpQZavQ==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@venly/connect/-/connect-2.11.0.tgz", + "integrity": "sha512-bBxeMGrGI4Ng5EcDH4WhYZsRQdYXcxGW9zGQykls2X4vYg2RRcVOuglLWcb/4AnmykqHZQBXLb6fUp/dutvOsA==", + "license": "MIT", "dependencies": { - "@types/node": "^12.7.1", - "es6-promise": "^4.2.8", - "keycloak-js": "11.0.2" + "keycloak-js": "11.0.2", + "tslib": "^2.8.0" } }, "node_modules/@venly/web3-provider": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@venly/web3-provider/-/web3-provider-3.1.0.tgz", - "integrity": "sha512-yPZJPGDTiwEq1YnEU2gL1NxjteQPFRGWeCKuvYd7sy3EH9fUcohwhkJbVuKipL5eGpAW5j4AyABjpkb79XZcxQ==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@venly/web3-provider/-/web3-provider-3.8.0.tgz", + "integrity": "sha512-Yhyr+X0MxZQ9uUD/oS91MGqReTGjZEXUVBrkxWdhTIUM1Npd+Pf44JgbiOFVB85gN0T2DcTHheDP9y7RYeqbyQ==", + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", - "@metamask/eth-json-rpc-middleware": "^11.0.0", - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@venly/connect": "^2.2.0", - "eth-block-tracker": "^7.0.0", - "eth-json-rpc-filters": "^6.0.0", - "json-rpc-engine": "^6.1.0" + "@metamask/eth-json-rpc-middleware": "^12.0.0", + "@metamask/eth-json-rpc-provider": "^2.1.0", + "@metamask/json-rpc-engine": "^7.1.1", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "@venly/connect": "^2.11.0", + "eth-block-tracker": "^8.0.0", + "eth-json-rpc-filters": "^6.0.1" } }, "node_modules/@web3-react/store": { - "version": "8.1.2-beta.0", - "resolved": "https://registry.npmjs.org/@web3-react/store/-/store-8.1.2-beta.0.tgz", - "integrity": "sha512-Xmogyl52zSYkPILwt+LjFIlTSlwrx25IrotrONglE37Pq263k/AAMii3AlblDuUF3CWSuxnq2YPuhZ4PODVaKA==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@web3-react/store/-/store-8.2.3.tgz", + "integrity": "sha512-qUJQ5pDsYYDra+/+glq2BmIS43HYAiEZ22sLLVh6E75WiZKRNOOqUxBDPe33KTIn718DLt51j+wd2FT+oT/kJQ==", "dev": true, + "license": "GPL-3.0-or-later", "dependencies": { "@ethersproject/address": "^5", - "@web3-react/types": "^8.1.2-beta.0", - "zustand": "^4.3.5" + "@web3-react/types": "^8.2.3", + "zustand": "4.4.0" } }, "node_modules/@web3-react/types": { - "version": "8.1.2-beta.0", - "resolved": "https://registry.npmjs.org/@web3-react/types/-/types-8.1.2-beta.0.tgz", - "integrity": "sha512-gvVJqRvGsABpoUZA7RWQQiOq5qv5exkUW6ouSjlO4Q5BkfCBgT4NlIUVQ91w3JnS5qkDpk/uKDMt+wDFw0Yssw==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@web3-react/types/-/types-8.2.3.tgz", + "integrity": "sha512-kSG90QkN+n7IOtp10nQ44oS8J7jzfH9EmqnruwBpCGybh1FM/ohyRvUKWYZNfNE4wsjTSpKsINR0/VdDsZMHyg==", + "license": "GPL-3.0-or-later", "dependencies": { - "zustand": "^4.3.5" + "zustand": "4.4.0" } }, "node_modules/async-mutex": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" } @@ -386,35 +622,34 @@ "node_modules/base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "license": "MIT" }, "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, "engines": { "node": ">=0.8" } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -425,32 +660,29 @@ } } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "node_modules/eth-block-tracker": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.0.0.tgz", - "integrity": "sha512-QDky41HSmiKpxpXbLBnojizCkeNH7N+imqhq5NWJASlIVDxY4h9dRwiLjRFMC8F7hHFxsOt/XaVK0CGkAwXlxg==", - "dependencies": { - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@metamask/safe-event-emitter": "^2.0.0", - "@metamask/utils": "^3.0.1", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-8.1.0.tgz", + "integrity": "sha512-cdP9GMtJV87d4yuj4A3WX7gHIoJP4T4eeGgVW1jLjC/H7xuJsjs9vtwy9DJZvcd2cpRYZNQ7eWsdoJriHfi67Q==", + "license": "MIT", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^2.1.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.1.0", "json-rpc-random-id": "^1.0.1", - "pify": "^3.0.0" + "pify": "^5.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.20 || ^18.16" } }, "node_modules/eth-json-rpc-filters": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.0.tgz", - "integrity": "sha512-7jm1Qm+uAdcYS2PDPuIMj6BM9kmLVCnRVRTvc5ZsUU+rMBRUg1vZ1qqtKa54AwMna7n7x3ZmUbFPGDUlqDN1AQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz", + "integrity": "sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==", + "license": "ISC", "dependencies": { - "@metamask/safe-event-emitter": "^2.0.0", + "@metamask/safe-event-emitter": "^3.0.0", "async-mutex": "^0.2.6", "eth-query": "^2.1.2", "json-rpc-engine": "^6.1.0", @@ -460,21 +692,11 @@ "node": ">=14.0.0" } }, - "node_modules/eth-json-rpc-filters/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eth-query": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "license": "ISC", "dependencies": { "json-rpc-random-id": "^1.0.0", "xtend": "^4.0.1" @@ -484,69 +706,66 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "license": "MIT", "dependencies": { "fast-safe-stringify": "^2.0.6" } }, "node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, + "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT", "peer": true }, "node_modules/json-rpc-engine": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "license": "ISC", "dependencies": { "@metamask/safe-event-emitter": "^2.0.0", "eth-rpc-errors": "^4.0.2" @@ -555,24 +774,42 @@ "node": ">=10.0.0" } }, + "node_modules/json-rpc-engine/node_modules/@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==", + "license": "ISC" + }, "node_modules/json-rpc-random-id": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", - "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", + "license": "ISC" }, "node_modules/keycloak-js": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-11.0.2.tgz", "integrity": "sha512-dnvzgTetovu3eTjJtvBQQhxRN4jqvd/DaA2wFaE4aWIFXhwRcoPpZT8ZJ7MwlICDPdCgzbCsOsBjpL8CbYOZsg==", + "license": "Apache-2.0", "dependencies": { "base64-js": "1.3.1", "js-sha256": "0.9.0" } }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -581,34 +818,44 @@ "loose-envify": "cli.js" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "license": "MIT" }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", + "license": "0BSD", "engines": { - "node": ">=4" + "node": ">=12.0.0" } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -618,20 +865,19 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -639,79 +885,68 @@ "node": ">=10" } }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/zustand": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.6.tgz", - "integrity": "sha512-6J5zDxjxLE+yukC2XZWf/IyWVKnXT9b9HUv09VJ/bwGCpKNcaTqp7Ws28Xr8jnbvnZcdRaidztAPsXFBIqufiw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.0.tgz", + "integrity": "sha512-2dq6wq4dSxbiPTamGar0NlIG/av0wpyWZJGeQYtUOLegIUvhM2Bf86ekPlmgpUtS5uR7HyetSiktYrGsdsyZgQ==", + "license": "MIT", "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -719,10 +954,14 @@ "node": ">=12.7.0" }, "peerDependencies": { + "@types/react": ">=16.8", "immer": ">=9.0", "react": ">=16.8" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "immer": { "optional": true }, @@ -731,523 +970,5 @@ } } } - }, - "dependencies": { - "@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==" - }, - "@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "requires": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "requires": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" - } - }, - "@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==" - }, - "@ethereumjs/util": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.0.5.tgz", - "integrity": "sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==", - "requires": { - "@chainsafe/ssz": "0.9.4", - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^1.1.2" - } - }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" - }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@metamask/eth-json-rpc-middleware": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-11.0.0.tgz", - "integrity": "sha512-QDEUZsoUdgZKwFnMS8XW/aQ8mJULaOssXjGnk9DocCs/p8rj69bovBsHtnlYawVHYuOy4Cual5GmAtvAZcrPxA==", - "requires": { - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@metamask/eth-sig-util": "^5.0.0", - "@metamask/utils": "^3.0.3", - "clone": "^2.1.1", - "eth-block-tracker": "^7.0.0", - "eth-rpc-errors": "^4.0.3", - "json-rpc-engine": "^6.1.0", - "pify": "^3.0.0", - "safe-stable-stringify": "^2.3.2" - } - }, - "@metamask/eth-json-rpc-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.0.tgz", - "integrity": "sha512-Bl9FbSNctgh1FRjUX0Gpoo4BwFXBKplcZ198y9/gysUhgOBD4MKqe3V4XzaYXuvB7VhVA9TNH0ZsaK1MnolpWg==", - "requires": { - "@metamask/safe-event-emitter": "^2.0.0", - "json-rpc-engine": "^6.1.0" - } - }, - "@metamask/eth-sig-util": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz", - "integrity": "sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q==", - "requires": { - "@ethereumjs/util": "^8.0.0", - "bn.js": "^4.11.8", - "ethereum-cryptography": "^1.1.2", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - } - }, - "@metamask/safe-event-emitter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", - "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" - }, - "@metamask/utils": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", - "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", - "requires": { - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "semver": "^7.3.8", - "superstruct": "^1.0.3" - } - }, - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "@venly/connect": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@venly/connect/-/connect-2.2.0.tgz", - "integrity": "sha512-fSG+loJ7q6Oy8FCIPPIba3z6Ss6TEJ4ZRGDSoQw7Od0JCaSPPJ1MOA9/4MplVIbj3eCqR/FS11tq0K1jpQZavQ==", - "requires": { - "@types/node": "^12.7.1", - "es6-promise": "^4.2.8", - "keycloak-js": "11.0.2" - } - }, - "@venly/web3-provider": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@venly/web3-provider/-/web3-provider-3.1.0.tgz", - "integrity": "sha512-yPZJPGDTiwEq1YnEU2gL1NxjteQPFRGWeCKuvYd7sy3EH9fUcohwhkJbVuKipL5eGpAW5j4AyABjpkb79XZcxQ==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@metamask/eth-json-rpc-middleware": "^11.0.0", - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@venly/connect": "^2.2.0", - "eth-block-tracker": "^7.0.0", - "eth-json-rpc-filters": "^6.0.0", - "json-rpc-engine": "^6.1.0" - } - }, - "@web3-react/store": { - "version": "8.1.2-beta.0", - "resolved": "https://registry.npmjs.org/@web3-react/store/-/store-8.1.2-beta.0.tgz", - "integrity": "sha512-Xmogyl52zSYkPILwt+LjFIlTSlwrx25IrotrONglE37Pq263k/AAMii3AlblDuUF3CWSuxnq2YPuhZ4PODVaKA==", - "dev": true, - "requires": { - "@ethersproject/address": "^5", - "@web3-react/types": "^8.1.2-beta.0", - "zustand": "^4.3.5" - } - }, - "@web3-react/types": { - "version": "8.1.2-beta.0", - "resolved": "https://registry.npmjs.org/@web3-react/types/-/types-8.1.2-beta.0.tgz", - "integrity": "sha512-gvVJqRvGsABpoUZA7RWQQiOq5qv5exkUW6ouSjlO4Q5BkfCBgT4NlIUVQ91w3JnS5qkDpk/uKDMt+wDFw0Yssw==", - "requires": { - "zustand": "^4.3.5" - } - }, - "async-mutex": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", - "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", - "requires": { - "tslib": "^2.0.0" - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==" - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "eth-block-tracker": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.0.0.tgz", - "integrity": "sha512-QDky41HSmiKpxpXbLBnojizCkeNH7N+imqhq5NWJASlIVDxY4h9dRwiLjRFMC8F7hHFxsOt/XaVK0CGkAwXlxg==", - "requires": { - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@metamask/safe-event-emitter": "^2.0.0", - "@metamask/utils": "^3.0.1", - "json-rpc-random-id": "^1.0.1", - "pify": "^3.0.0" - } - }, - "eth-json-rpc-filters": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.0.tgz", - "integrity": "sha512-7jm1Qm+uAdcYS2PDPuIMj6BM9kmLVCnRVRTvc5ZsUU+rMBRUg1vZ1qqtKa54AwMna7n7x3ZmUbFPGDUlqDN1AQ==", - "requires": { - "@metamask/safe-event-emitter": "^2.0.0", - "async-mutex": "^0.2.6", - "eth-query": "^2.1.2", - "json-rpc-engine": "^6.1.0", - "pify": "^5.0.0" - }, - "dependencies": { - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" - } - } - }, - "eth-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", - "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", - "requires": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "eth-rpc-errors": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", - "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", - "requires": { - "fast-safe-stringify": "^2.0.6" - } - }, - "ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" - }, - "js-sha256": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "json-rpc-engine": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", - "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", - "requires": { - "@metamask/safe-event-emitter": "^2.0.0", - "eth-rpc-errors": "^4.0.2" - } - }, - "json-rpc-random-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", - "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" - }, - "keycloak-js": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-11.0.2.tgz", - "integrity": "sha512-dnvzgTetovu3eTjJtvBQQhxRN4jqvd/DaA2wFaE4aWIFXhwRcoPpZT8ZJ7MwlICDPdCgzbCsOsBjpL8CbYOZsg==", - "requires": { - "base64-js": "1.3.1", - "js-sha256": "0.9.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" - }, - "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true - }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "zustand": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.6.tgz", - "integrity": "sha512-6J5zDxjxLE+yukC2XZWf/IyWVKnXT9b9HUv09VJ/bwGCpKNcaTqp7Ws28Xr8jnbvnZcdRaidztAPsXFBIqufiw==", - "requires": { - "use-sync-external-store": "1.2.0" - } - } } } diff --git a/package.json b/package.json index 77625a6..7816cd0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@venly/web3-react-venly", - "version": "1.2.1", + "version": "1.2.0", "description": "Venly connector for Web3-React", "type": "commonjs", "types": "./dist/index.d.ts", @@ -13,7 +13,7 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/ArkaneNetwork/web3-react-venly" + "url": "git+https://github.com/Venly/web3-react-venly" }, "scripts": { "prebuild": "rm -rf dist", @@ -27,7 +27,7 @@ }, "homepage": "https://venly.io", "dependencies": { - "@venly/web3-provider": "^3.1.0", + "@venly/web3-provider": "^3.8.0", "@web3-react/types": "^8.1.2-beta.0" }, "devDependencies": { @@ -36,5 +36,8 @@ }, "files": [ "dist" - ] + ], + "overrides": { + "semver": "^7.5.2" + } }