Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/smart router osmosis pool #284

Merged
merged 20 commits into from
Jul 10, 2024
Merged

Feat/smart router osmosis pool #284

merged 20 commits into from
Jul 10, 2024

Conversation

haunv3
Copy link
Contributor

@haunv3 haunv3 commented Jul 10, 2024

Summary by CodeRabbit

  • Version Updates

    • Updated @oraichain/oraidex-common package to version 1.0.89.
    • Updated @oraichain/oraidex-universal-swap package to version 1.0.90.
  • New Features

    • Added new methods and updated existing methods in UniversalSwapHandler to enhance smart routing and swap operations.
    • Introduced new data structures and configurations for smart routing in decentralized exchanges.
  • Bug Fixes

    • Updated Osmosis router contract address for improved accuracy in swaps.
  • Tests

    • Added new tests for smart routing scenarios.
    • Modified test case execution status from it.each to xit.each.
  • Refactor

    • Made several private methods public and updated their signatures in UniversalSwapHandler and UniversalSwapHelper.

Copy link

coderabbitai bot commented Jul 10, 2024

Walkthrough

The updates primarily involve version increments for the oraidex-common and universal-swap packages, changes to the Osmosis router contract address, and adjustments to the UniversalSwapHandler and UniversalSwapHelper classes. These adjustments include method visibility changes, parameter updates, and new methods. Additionally, test files and TypeScript files for smart routing and swap operations have been updated to accommodate new logic and configurations.

Changes

Files/Paths Change Summary
packages/oraidex-common/package.json, packages/universal-swap/package.json Incremented version numbers for oraidex-common and universal-swap packages.
packages/oraidex-common/src/constant.ts Updated the Osmosis router contract address.
packages/universal-swap/src/handler.ts Modified method visibility and signatures in UniversalSwapHandler; added new methods.
packages/universal-swap/src/helper.ts Updated method signatures and logic in UniversalSwapHelper.
packages/universal-swap/src/types.ts Changed the SmartRouterResponse type and added a new property to the RouteBase interface.
packages/universal-swap/src/universal-demos/alpha-smart-router.ts Adjusted router object values and token selection logic in alpha-smart-router.ts.
packages/universal-swap/src/universal-demos/from-oraichain-to-oraichain.ts Removed the smartRoutes field in oraichainToOraichain function configuration.
packages/universal-swap/tests/helper.spec.ts Changed test case execution status from it.each to xit.each.
packages/universal-swap/tests/index.spec.ts Added new imports and tests for functions handling smart routing scenarios.
packages/universal-swap/tests/smart-router-common.ts Introduced data structures and configurations for decentralized exchange smart routing.

Poem

In code we trust, with bytes that soar,
New versions rise, like waves to shore.
With routes refined and swaps anew,
Our smart contracts, they grew and grew.
A rabbit's joy in lines that rhyme,
Our code evolves, in perfect time.
🌟🚀🐇


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (3)
packages/universal-swap/src/helper.ts (2)

Line range hint 543-577:
Improve logging and error handling.

Consider enhancing the logging mechanism and error handling to provide more context in case of failures.

try {
  return await UniversalSwapHelper.generateSmartRouteForSwap(
    offerInfo,
    fromInfo.chainId,
    askInfo,
    toInfo.chainId,
    amount,
    urlRouter
  );
} catch (error) {
  console.error(`Error when trying to simulate swap using smart router: ${error.message}`, error);
  return {
    swapAmount: "0",
    returnAmount: "0",
    routes: []
  };
}

Line range hint 663-695:
Simplify the nested if conditions.

The nested if conditions can be simplified for better readability and maintainability.

let amount;
let routes;
let decimals = 6;
if (query?.routerOption?.useAlphaSmartRoute) {
  const simulateRes: SmartRouterResponse = await UniversalSwapHelper.simulateSwapUsingSmartRoute({
    fromInfo: query.originalFromInfo,
    toInfo: query.originalToInfo,
    amount: toAmount(query.originalAmount, query.originalFromInfo.decimals).toString(),
    urlRouter: query.urlRouter
  });
  routes = simulateRes;
  amount = simulateRes.returnAmount;
  decimals = query.originalToInfo.decimals;
} else {
  const fromInfo = getTokenOnOraichain(query.originalFromInfo.coinGeckoId);
  const toInfo = getTokenOnOraichain(query.originalToInfo.coinGeckoId);
  if (!fromInfo || !toInfo)
    throw new Error(
      `Cannot find token on Oraichain for token ${query.originalFromInfo.coinGeckoId} and ${query.originalToInfo.coinGeckoId}`
    );
  amount = (
    await UniversalSwapHelper.simulateSwap({
      fromInfo,
      toInfo,
      amount: toAmount(query.originalAmount, fromInfo.decimals).toString(),
      routerClient: query.routerClient
    })
  ).amount;
  decimals = toInfo.decimals;
}
return {
  amount,
  displayAmount: toDisplay(amount, decimals),
  routes
};
packages/universal-swap/src/handler.ts (1)

318-318: Mismatch in method signature usage for getSwapAndActionInOsmosis.

The method getSwapAndActionInOsmosis has been updated to include an additional parameter isOnlySwap. However, there are instances in the codebase where the method is called without this parameter.

  • Location: File packages/universal-swap/src/handler.ts
    const { msgActionSwap } = this.getSwapAndActionInOsmosis(route, { oraiAddress, injAddress }, isLastRoute);

Ensure that all method calls to getSwapAndActionInOsmosis include the new isOnlySwap parameter to match the updated method signature.

Analysis chain

LGTM! But verify the method usage in the codebase.

The code changes are approved.

However, ensure that all method calls to getSwapAndActionInOsmosis match the new signature.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all method calls to `getSwapAndActionInOsmosis` match the new signature.

# Test: Search for the method usage. Expect: Only occurances of the new signature.
rg --type js -A 5 $'getSwapAndActionInOsmosis'

Length of output: 45


Script:

#!/bin/bash
# Description: Verify all method calls to `getSwapAndActionInOsmosis` match the new signature.

# Test: Search for the method usage. Expect: Only occurrences of the new signature.
# Adding the `-i` flag to make the search case-insensitive and `-w` flag to match the whole word.
rg --type js -i -w 'getSwapAndActionInOsmosis' -A 5

# Checking if the method is defined correctly in the file.
rg --type js -i -w 'getSwapAndActionInOsmosis' packages/universal-swap/src/handler.ts -A 5

Length of output: 1004

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between abc5487 and e39c558.

Files selected for processing (11)
  • packages/oraidex-common/package.json (1 hunks)
  • packages/oraidex-common/src/constant.ts (1 hunks)
  • packages/universal-swap/package.json (1 hunks)
  • packages/universal-swap/src/handler.ts (13 hunks)
  • packages/universal-swap/src/helper.ts (7 hunks)
  • packages/universal-swap/src/types.ts (2 hunks)
  • packages/universal-swap/src/universal-demos/alpha-smart-router.ts (3 hunks)
  • packages/universal-swap/src/universal-demos/from-oraichain-to-oraichain.ts (1 hunks)
  • packages/universal-swap/tests/helper.spec.ts (1 hunks)
  • packages/universal-swap/tests/index.spec.ts (7 hunks)
  • packages/universal-swap/tests/smart-router-common.ts (1 hunks)
Files skipped from review due to trivial changes (4)
  • packages/oraidex-common/package.json
  • packages/universal-swap/package.json
  • packages/universal-swap/src/universal-demos/from-oraichain-to-oraichain.ts
  • packages/universal-swap/tests/helper.spec.ts
Additional context used
Gitleaks
packages/universal-swap/tests/smart-router-common.ts

322-322: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


327-327: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


449-449: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


454-454: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


458-458: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


464-464: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

packages/universal-swap/src/universal-demos/alpha-smart-router.ts

112-112: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


117-117: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


123-123: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


239-239: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


244-244: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


248-248: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


254-254: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


326-326: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


334-334: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


336-336: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


345-345: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


351-351: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


383-383: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


391-391: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


398-398: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


484-484: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


492-492: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


497-497: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

Additional comments not posted (24)
packages/universal-swap/src/types.ts (2)

121-121: LGTM!

The addition of routes as an array of SmartRouteSwapAPIOperations in the SmartRouterResponse type is consistent with the overall type structure.


254-254: LGTM!

The addition of isLastPath: boolean in the RouteBase type is consistent with the overall type structure.

packages/oraidex-common/src/constant.ts (1)

145-145: LGTM!

The OSMOSIS_ROUTER_CONTRACT constant has been updated correctly.

packages/universal-swap/tests/smart-router-common.ts (5)

1-54: LGTM!

The alphaSmartRoutes constant has been added correctly with detailed route configurations.


56-81: LGTM!

The flattenAlphaSmartRouters constant has been added correctly with detailed route configurations.


83-107: LGTM!

The objSwapInOsmosis constant has been added correctly with detailed route configurations.


109-166: LGTM!

The objBridgeInSmartRoute constant has been added correctly with detailed route configurations.


168-524: LGTM!

The alphaSmartRoute constant has been added correctly with detailed route configurations.

Tools
Gitleaks

322-322: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


327-327: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


449-449: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


454-454: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


458-458: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


464-464: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

packages/universal-swap/src/universal-demos/alpha-smart-router.ts (3)

6-314: LGTM!

The removal of the commented out router constant improves the readability and maintainability of the file.

Tools
Gitleaks

112-112: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


117-117: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


123-123: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


239-239: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


244-244: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


248-248: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


254-254: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


473-497: LGTM!

The router constant has been added correctly with detailed route configurations.

Tools
Gitleaks

484-484: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


492-492: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


497-497: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


Line range hint 510-529:
LGTM!

The alphaSwapToOraichain function has been updated correctly with new logic and parameters.

packages/universal-swap/src/handler.ts (4)

Line range hint 1110-1123:
LGTM! But verify the method usage in the codebase.

The code changes are approved.

However, ensure that all method calls to generateMsgsSmartRouterSwap match the new signature.

Verification successful

Verified! The method usage matches the new signature.

The code changes are correctly integrated with the new parameter isLastRoute.

  • Method call in packages/universal-swap/src/handler.ts correctly uses the new parameter isLastRoute.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all method calls to `generateMsgsSmartRouterSwap` match the new signature.

# Test: Search for the method usage. Expect: Only occurances of the new signature.
rg --type js -A 5 $'generateMsgsSmartRouterSwap'

Length of output: 47


Script:

#!/bin/bash
# Description: Verify all method calls to `generateMsgsSmartRouterSwap` match the new signature.

# Test: Search for the method usage across all files. Expect: Occurrences of the new signature.
rg 'generateMsgsSmartRouterSwap'

Length of output: 271


459-465: LGTM! But verify the method usage in the codebase.

The code changes are approved.

However, ensure that all method calls to getMsgTransfer match the new signature.

Verification successful

Verified: The method getMsgTransfer is used correctly with the new signature.

  • The method calls in packages/universal-swap/src/handler.ts and packages/universal-swap/tests/index.spec.ts match the updated signature, including the new parameter isLastRoute.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all method calls to `getMsgTransfer` match the new signature.

# Test: Search for the method usage. Expect: Only occurances of the new signature.
rg --type js -A 5 $'getMsgTransfer'

Length of output: 34


Script:

#!/bin/bash
# Description: Verify all method calls to `getMsgTransfer` match the new signature.

# Test: Search for the method usage. Expect: Only occurrences of the new signature.
rg --type ts -A 10 'getMsgTransfer'

Length of output: 2903


423-423: LGTM! But verify the method usage in the codebase.

The code changes are approved.

However, ensure that all method calls to createForwardObject match the new visibility.

Verification successful

The method usage of createForwardObject matches the new visibility.

Both the source code and the test code correctly access the method with its public visibility.

  • packages/universal-swap/src/handler.ts
  • packages/universal-swap/tests/index.spec.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all method calls to `createForwardObject` match the new visibility.

# Test: Search for the method usage. Expect: Only occurances of the new visibility.
rg --type js -A 5 $'createForwardObject'

Length of output: 39


Script:

#!/bin/bash
# Description: Verify all method calls to `createForwardObject` match the new visibility.

# Test: Search for the method usage. Expect: Only occurrences of the new visibility.

# Searching in both JavaScript and TypeScript files
rg 'createForwardObject' --type-add 'ts:*.ts' --type-add 'js:*.js' --files-with-matches

Length of output: 170


Script:

#!/bin/bash
# Description: Extract the lines around `createForwardObject` usage in the identified files for inspection.

# Extracting lines around the method usage in the source file
rg 'createForwardObject' packages/universal-swap/src/handler.ts -A 5 -B 5

# Extracting lines around the method usage in the test file
rg 'createForwardObject' packages/universal-swap/tests/index.spec.ts -A 5 -B 5

Length of output: 1431


1092-1108: LGTM! But verify the method usage in the codebase.

The code changes are approved.

However, ensure that all method calls to generateMsgsConvertSmartRouterSwap are correct.

Verification successful

LGTM! The method usage for generateMsgsConvertSmartRouterSwap is correct.

The code changes are approved.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all method calls to `generateMsgsConvertSmartRouterSwap`.

# Test: Search for the method usage. Expect: Only occurances of the new method.
rg --type js -A 5 $'generateMsgsConvertSmartRouterSwap'

Length of output: 54


Script:

#!/bin/bash
# Description: Verify all method calls to `generateMsgsConvertSmartRouterSwap` in both JavaScript and TypeScript files.

# Test: Search for the method usage. Expect: Only occurrences of the new method.
rg --type-add 'ts:*.{ts,tsx}' --type-add 'js:*.{js,jsx}' -t js -t ts -A 5 $'generateMsgsConvertSmartRouterSwap'

Length of output: 998


Script:

#!/bin/bash
# Description: Extract more context around the usage of `generateMsgsConvertSmartRouterSwap`.

# Test: Search for the method usage and include more context lines before and after. Expect: Detailed context around usage.
rg --type-add 'ts:*.{ts,tsx}' --type-add 'js:*.{js,jsx}' -t js -t ts -A 10 -B 10 $'generateMsgsConvertSmartRouterSwap'

Length of output: 3393

packages/universal-swap/tests/index.spec.ts (9)

23-26: LGTM! Imports are necessary for new functionalities.

The new imports are necessary for the added tests related to smart routing and Osmosis pool.


Line range hint 47-69:
LGTM! Importing necessary types and functions for new tests.

The new imports from types and smart-router-common are necessary for the added tests related to smart routing and Osmosis pool.


86-89: LGTM! Constants are necessary for new tests.

The new constants are necessary for the added tests related to smart routing and Osmosis pool.


Line range hint 1016-1041:
Consider re-enabling the test case for handleSimulateSwap.

The test case is temporarily disabled using xit. Ensure the logic is correct and re-enable it if necessary.


1072-1081: LGTM! Test case for flattenSmartRouters is correct.

The test case correctly checks if the flattenSmartRouters method returns an array with the expected length and content.


1083-1267: LGTM! Test case for getSwapAndActionInOsmosis is correct.

The test case correctly checks if the getSwapAndActionInOsmosis method returns the expected result.


1269-1352: LGTM! Test case for getMsgTransfer is correct.

The test case correctly checks if the getMsgTransfer method returns the expected result.


1354-1398: LGTM! Test case for createForwardObject is correct.

The test case correctly checks if the createForwardObject method returns the expected result.


1400-1467: LGTM! Test case for getMessagesAndMsgTransfers is correct.

The test case correctly checks if the getMessagesAndMsgTransfers method returns the expected result.

packages/universal-swap/src/helper.ts Show resolved Hide resolved
Copy link

badge

Code Coverage Summary

Filename                                                                           Stmts    Miss  Cover    Missing
-------------------------------------------------------------------------------  -------  ------  -------  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
packages/oraidex-common-ui/src/components/TVChartContainer/helpers/constants.ts        6       0  100.00%
packages/oraidex-common-ui/src/components/TVChartContainer/helpers/utils.ts           33       2  93.93%   23-24
packages/oraidex-common/src/alpha-network.ts                                           6       0  100.00%
packages/oraidex-common/src/bigdecimal.ts                                             80      29  63.75%   23, 40, 45-53, 120-153, 173-177
packages/oraidex-common/src/constant.ts                                              122       0  100.00%
packages/oraidex-common/src/helper.ts                                                251      68  72.90%   142, 146-147, 163-168, 277-279, 287-299, 309-313, 336-340, 344-346, 364-383, 387-394, 398-399, 403-404, 409-417, 427-448, 534, 560
packages/oraidex-common/src/network.ts                                                18       0  100.00%
packages/oraidex-common/src/pairs.ts                                                  28       2  92.85%   151, 157
packages/oraidex-common/src/token.ts                                                  27       0  100.00%
packages/universal-swap/src/handler.ts                                               448     218  51.33%   74, 96, 111-112, 119-122, 133-134, 164-185, 265-294, 401-420, 507-515, 532-536, 550-559, 569-614, 640-649, 653-782, 788-1045, 1055-1060, 1082, 1089-1093, 1117, 1164, 1174-1180, 1187, 1227, 1258, 1290, 1336
packages/universal-swap/src/helper.ts                                                370      94  74.59%   80-81, 218, 353, 360, 373-376, 452-465, 528, 571-573, 586-624, 643-692, 735, 752, 780, 787-810, 844, 848, 868-901, 986-995, 1007-1012, 1031, 1058
packages/universal-swap/src/swap-filter.ts                                            11       0  100.00%
packages/universal-swap/src/types.ts                                                   2       0  100.00%
packages/universal-swap/src/proto/proto-gen.ts                                        13       0  100.00%
TOTAL                                                                               1415     413  70.81%

Diff against main

Filename                                  Stmts    Miss  Cover
--------------------------------------  -------  ------  -------
packages/universal-swap/src/handler.ts      +31     -63  +18.72%
packages/universal-swap/src/helper.ts       -13     +16  -5.04%
TOTAL                                       +18     -47  +3.74%

Results for commit: 40003a9

Minimum allowed coverage is 0%

♻️ This comment has been updated with latest results

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between e39c558 and 40003a9.

Files selected for processing (2)
  • packages/universal-swap/tests/index.spec.ts (7 hunks)
  • packages/universal-swap/tests/smart-router-common.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • packages/universal-swap/tests/index.spec.ts
Additional context used
Gitleaks
packages/universal-swap/tests/smart-router-common.ts

414-414: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


419-419: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


425-425: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


592-592: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


597-597: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


603-603: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


719-719: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


724-724: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


728-728: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


734-734: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

Additional comments not posted (9)
packages/universal-swap/tests/smart-router-common.ts (9)

797-797: Alpha Smart Route with One Route Action 0: Access logic appears correct.

The access logic for alphaSmartRouteWithOneRoutes0_0_0 aligns with the smart routing functionalities. Ensure that this access logic is used correctly in the rest of the codebase.

However, verify that this access logic is being utilized as expected in the codebase.

Verification successful

Alpha Smart Route with One Route Action 0: Access logic appears correct.

The access logic for alphaSmartRouteWithOneRoutes0_0_0 aligns with the smart routing functionalities and is used correctly in the codebase.

  • Verified usage in packages/universal-swap/tests/index.spec.ts.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_0` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_0`. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRouteWithOneRoutes0_0_0'

Length of output: 88


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_0` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_0`. Expect: Correct usage in the codebase.
rg --type ts -A 5 'alphaSmartRouteWithOneRoutes0_0_0'

Length of output: 3098


800-803: Alpha Smart Route with Two Routes Actions: Access logic appears correct.

The access logic for alphaSmartRouteWithTwoRoutes0_0_0, alphaSmartRouteWithTwoRoutes0_0_1, alphaSmartRouteWithTwoRoutes0_1_0, and alphaSmartRouteWithTwoRoutes0_2_0 aligns with the smart routing functionalities. Ensure that this access logic is used correctly in the rest of the codebase.

However, verify that this access logic is being utilized as expected in the codebase.

Verification successful

Alpha Smart Route with Two Routes Actions: Access logic appears correct.

The constants alphaSmartRouteWithTwoRoutes0_0_0, alphaSmartRouteWithTwoRoutes0_0_1, alphaSmartRouteWithTwoRoutes0_1_0, and alphaSmartRouteWithTwoRoutes0_2_0 are being used correctly in the packages/universal-swap/tests/index.spec.ts file.

  • Locations:
    • packages/universal-swap/tests/index.spec.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithTwoRoutes0_0_0`, `alphaSmartRouteWithTwoRoutes0_0_1`, `alphaSmartRouteWithTwoRoutes0_1_0`, and `alphaSmartRouteWithTwoRoutes0_2_0` are used correctly in the codebase.

# Test: Search for the usage of these constants. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRouteWithTwoRoutes0_0_0'
rg --type python -A 5 $'alphaSmartRouteWithTwoRoutes0_0_1'
rg --type python -A 5 $'alphaSmartRouteWithTwoRoutes0_1_0'
rg --type python -A 5 $'alphaSmartRouteWithTwoRoutes0_2_0'

Length of output: 355


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithTwoRoutes0_0_0`, `alphaSmartRouteWithTwoRoutes0_0_1`, `alphaSmartRouteWithTwoRoutes0_1_0`, and `alphaSmartRouteWithTwoRoutes0_2_0` are used correctly in the codebase.

# Test: Search for the usage of these constants. Expect: Correct usage in codebase.
rg --type ts -A 5 $'alphaSmartRouteWithTwoRoutes0_0_0'
rg --type ts -A 5 $'alphaSmartRouteWithTwoRoutes0_0_1'
rg --type ts -A 5 $'alphaSmartRouteWithTwoRoutes0_1_0'
rg --type ts -A 5 $'alphaSmartRouteWithTwoRoutes0_2_0'

Length of output: 10023


83-107: Object Swap in Osmosis: Structure and data integrity appear correct.

The structure and data of objSwapInOsmosis align with the smart routing functionalities. Ensure that this structure is used correctly in the rest of the codebase.

However, verify that this data structure is being utilized as expected in the codebase.

Verification successful

Object objSwapInOsmosis is used correctly in the codebase.

The object objSwapInOsmosis is extensively tested in packages/universal-swap/tests/index.spec.ts, confirming its correct usage and alignment with the smart routing functionalities.

  • packages/universal-swap/tests/index.spec.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `objSwapInOsmosis` is used correctly in the codebase.

# Test: Search for the usage of `objSwapInOsmosis`. Expect: Correct usage in codebase.
rg --type python -A 5 $'objSwapInOsmosis'

Length of output: 71


Script:

#!/bin/bash
# Description: Verify that `objSwapInOsmosis` is used correctly in the codebase.

# Test: Search for the usage of `objSwapInOsmosis`. Expect: Correct usage in codebase.
rg --type typescript -A 5 'objSwapInOsmosis'

Length of output: 79


Script:

#!/bin/bash
# Description: Verify that `objSwapInOsmosis` is used correctly in the codebase.

# Test: Search for the usage of `objSwapInOsmosis`. Expect: Correct usage in codebase.
rg 'objSwapInOsmosis' -A 5

Length of output: 10264


56-81: Flatten Alpha Smart Routers: Structure and data integrity appear correct.

The structure and data of flattenAlphaSmartRouters align with the smart routing functionalities. Ensure that this structure is used correctly in the rest of the codebase.

However, verify that this data structure is being utilized as expected in the codebase.

Verification successful

Flatten Alpha Smart Routers: Verified Usage in Codebase

The flattenAlphaSmartRouters data structure is being correctly utilized in the index.spec.ts file for testing purposes, ensuring its functionality within the universal swap handlers.

  • packages/universal-swap/tests/index.spec.ts:
    • Imported and used in test cases to validate the functionality.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `flattenAlphaSmartRouters` is used correctly in the codebase.

# Test: Search for the usage of `flattenAlphaSmartRouters`. Expect: Correct usage in codebase.
rg --type python -A 5 $'flattenAlphaSmartRouters'

Length of output: 79


Script:

#!/bin/bash
# Description: Verify that `flattenAlphaSmartRouters` is used correctly in the codebase.

# Test: Search for the usage of `flattenAlphaSmartRouters`. Expect: Correct usage in the codebase.
rg --type typescript -A 5 'flattenAlphaSmartRouters'

Length of output: 87


Script:

#!/bin/bash
# Description: Verify that `flattenAlphaSmartRouters` is used correctly in the codebase.

# Test: Search for the usage of `flattenAlphaSmartRouters`. Expect: Correct usage in the codebase.
rg --type ts -A 5 'flattenAlphaSmartRouters'

Length of output: 1416


168-795: Alpha Smart Route: Structure and data integrity appear correct.

The structure and data of alphaSmartRoute align with the smart routing functionalities. Ensure that this structure is used correctly in the rest of the codebase.

However, verify that this data structure is being utilized as expected in the codebase.

Verification successful

Alpha Smart Route: Structure and data integrity verified.

The alphaSmartRoute is used correctly within the codebase, as evidenced by its integration in various test files and core logic.

  • packages/universal-swap/tests/smart-router-common.ts
  • packages/universal-swap/tests/index.spec.ts
  • packages/universal-swap/src/handler.ts
  • packages/universal-swap/src/types.ts
  • packages/universal-swap/src/universal-demos/alpha-smart-router.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRoute` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRoute`. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRoute'

Length of output: 70


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRoute` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRoute`. Expect: Correct usage in codebase.
rg --type ts -A 5 'alphaSmartRoute'

Length of output: 26682

Tools
Gitleaks

414-414: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


419-419: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


425-425: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


592-592: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


597-597: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


603-603: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


719-719: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


724-724: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


728-728: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


734-734: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)


1-54: Alpha Smart Routes: Structure and data integrity appear correct.

The structure and data of alphaSmartRoutes align with the smart routing functionalities. Ensure that this structure is used correctly in the rest of the codebase.

However, verify that this data structure is being utilized as expected in the codebase.

Verification successful

Alpha Smart Routes: Usage Verified

The alphaSmartRoutes constant is used correctly in multiple parts of the codebase, including types, tests, handlers, and demos. The structure and data integrity align with the intended smart routing functionalities.

  • packages/universal-swap/src/types.ts
  • packages/universal-swap/tests/index.spec.ts
  • packages/universal-swap/src/handler.ts
  • packages/universal-swap/src/universal-demos/alpha-smart-router.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRoutes` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRoutes`. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRoutes'

Length of output: 71


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRoutes` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRoutes`. Expect: Correct usage in codebase.
rg --type js -A 5 'alphaSmartRoutes'

Length of output: 36


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRoutes` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRoutes` in both JavaScript and TypeScript files. Expect: Correct usage in codebase.
rg --type-add 'ts:*.{ts,tsx}' --type-add 'js:*.{js,jsx}' --type ts --type js -A 5 'alphaSmartRoutes'

Length of output: 3944


109-166: Object Bridge in Smart Route: Structure and data integrity appear correct.

The structure and data of objBridgeInSmartRoute align with the smart routing functionalities. Ensure that this structure is used correctly in the rest of the codebase.

However, verify that this data structure is being utilized as expected in the codebase.

Verification successful

Object Bridge in Smart Route: Structure and data integrity appear correct.

The structure and data of objBridgeInSmartRoute align with the smart routing functionalities and are used correctly in the test suite.

  • objBridgeInSmartRoute is referenced multiple times in packages/universal-swap/tests/index.spec.ts, confirming its correct usage.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `objBridgeInSmartRoute` is used correctly in the codebase.

# Test: Search for the usage of `objBridgeInSmartRoute`. Expect: Correct usage in codebase.
rg --type python -A 5 $'objBridgeInSmartRoute'

Length of output: 76


Script:

#!/bin/bash
# Description: Verify that `objBridgeInSmartRoute` is used correctly in the codebase.

# Test: Search for the usage of `objBridgeInSmartRoute`. Expect: Correct usage in codebase.
rg --type typescript -A 5 'objBridgeInSmartRoute'

Length of output: 84


Script:

#!/bin/bash
# Description: Verify that `objBridgeInSmartRoute` is used correctly in the codebase.

# Test: Search for the usage of `objBridgeInSmartRoute`. Expect: Correct usage in codebase.
rg -A 5 'objBridgeInSmartRoute'

Length of output: 6926


798-798: Alpha Smart Route with One Route Action 1: Access logic appears correct.

The access logic for alphaSmartRouteWithOneRoutes0_0_1 aligns with the smart routing functionalities. Ensure that this access logic is used correctly in the rest of the codebase.

However, verify that this access logic is being utilized as expected in the codebase.

Verification successful

Alpha Smart Route with One Route Action 1: Correct Usage Verified

The access logic for alphaSmartRouteWithOneRoutes0_0_1 is correctly utilized in the codebase, specifically in the test file packages/universal-swap/tests/index.spec.ts.

  • packages/universal-swap/tests/index.spec.ts
  • packages/universal-swap/tests/smart-router-common.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_1` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_1`. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRouteWithOneRoutes0_0_1'

Length of output: 88


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_1` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_1`. Expect: Correct usage in codebase.
rg --type js -A 5 'alphaSmartRouteWithOneRoutes0_0_1'

Length of output: 53


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_1` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_1` in JavaScript and TypeScript files. Expect: Correct usage in codebase.
rg --type js,ts -A 5 'alphaSmartRouteWithOneRoutes0_0_1'

Length of output: 86


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_1` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_1` in JavaScript files. Expect: Correct usage in codebase.
rg --type js -A 5 'alphaSmartRouteWithOneRoutes0_0_1'

Length of output: 53


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithOneRoutes0_0_1` is used correctly in the codebase.

# Test: Search for the usage of `alphaSmartRouteWithOneRoutes0_0_1` in TypeScript files. Expect: Correct usage in codebase.
rg --type ts -A 5 'alphaSmartRouteWithOneRoutes0_0_1'

Length of output: 2218


805-812: Alpha Smart Route with Three Routes Actions: Access logic appears correct.

The access logic for alphaSmartRouteWithThreeRoutes0_0_0, alphaSmartRouteWithThreeRoutes0_0_1, alphaSmartRouteWithThreeRoutes1_0_0, alphaSmartRouteWithThreeRoutes1_0_1, alphaSmartRouteWithThreeRoutes0_1_0, alphaSmartRouteWithThreeRoutes1_1_0, alphaSmartRouteWithThreeRoutes0_2_0, and alphaSmartRouteWithThreeRoutes1_2_0 aligns with the smart routing functionalities. Ensure that this access logic is used correctly in the rest of the codebase.

However, verify that this access logic is being utilized as expected in the codebase.

Verification successful

Alpha Smart Route with Three Routes Actions: Usage Verified

The constants alphaSmartRouteWithThreeRoutes0_0_0, alphaSmartRouteWithThreeRoutes0_0_1, alphaSmartRouteWithThreeRoutes1_0_0, alphaSmartRouteWithThreeRoutes1_0_1, alphaSmartRouteWithThreeRoutes0_1_0, alphaSmartRouteWithThreeRoutes1_1_0, alphaSmartRouteWithThreeRoutes0_2_0, and alphaSmartRouteWithThreeRoutes1_2_0 are correctly defined and used within the codebase, particularly in the index.spec.ts test file.

  • Definitions:

    • smart-router-common.ts lines 805-812
  • Usages:

    • index.spec.ts lines 67, 1573, 1577, 1583, 1589, 1590, 68, 1626, 1627, 1630, 1631, 71, 1602, 1606, 1612, 1618, 1619, 72, 1680, 1681, 1684, 1685, 69, 1637, 1638, 73, 1691, 1692, 70, 1651, 1652, 1653, 1660, 1661, 74, 1705, 1706, 1707, 1714, 1715

These constants are used consistently and correctly within the test suite, ensuring that the smart routing logic is being tested as intended.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithThreeRoutes0_0_0`, `alphaSmartRouteWithThreeRoutes0_0_1`, `alphaSmartRouteWithThreeRoutes1_0_0`, `alphaSmartRouteWithThreeRoutes1_0_1`, `alphaSmartRouteWithThreeRoutes0_1_0`, `alphaSmartRouteWithThreeRoutes1_1_0`, `alphaSmartRouteWithThreeRoutes0_2_0`, and `alphaSmartRouteWithThreeRoutes1_2_0` are used correctly in the codebase.

# Test: Search for the usage of these constants. Expect: Correct usage in codebase.
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes0_0_0'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes0_0_1'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes1_0_0'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes1_0_1'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes0_1_0'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes1_1_0'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes0_2_0'
rg --type python -A 5 $'alphaSmartRouteWithThreeRoutes1_2_0'

Length of output: 727


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithThreeRoutes0_0_0`, `alphaSmartRouteWithThreeRoutes0_0_1`, `alphaSmartRouteWithThreeRoutes1_0_0`, `alphaSmartRouteWithThreeRoutes1_0_1`, `alphaSmartRouteWithThreeRoutes0_1_0`, `alphaSmartRouteWithThreeRoutes1_1_0`, `alphaSmartRouteWithThreeRoutes0_2_0`, and `alphaSmartRouteWithThreeRoutes1_2_0` are used correctly in the codebase.

# Test: Search for the usage of these constants. Expect: Correct usage in the codebase.
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes0_0_0'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes0_0_1'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes1_0_0'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes1_0_1'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes0_1_0'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes1_1_0'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes0_2_0'
rg --type js -A 5 $'alphaSmartRouteWithThreeRoutes1_2_0'

Length of output: 447


Script:

#!/bin/bash
# Description: Verify that `alphaSmartRouteWithThreeRoutes0_0_0`, `alphaSmartRouteWithThreeRoutes0_0_1`, `alphaSmartRouteWithThreeRoutes1_0_0`, `alphaSmartRouteWithThreeRoutes1_0_1`, `alphaSmartRouteWithThreeRoutes0_1_0`, `alphaSmartRouteWithThreeRoutes1_1_0`, `alphaSmartRouteWithThreeRoutes0_2_0`, and `alphaSmartRouteWithThreeRoutes1_2_0` are used correctly in the codebase.

# Test: Search for the definitions and usages of these constants in the codebase using `ast-grep`.
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes0_0_0 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes0_0_1 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes1_0_0 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes1_0_1 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes0_1_0 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes1_1_0 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes0_2_0 = $_'
ast-grep --lang ts --pattern 'const alphaSmartRouteWithThreeRoutes1_2_0 = $_'

# Test: Search for the usages of these constants.
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes0_0_0'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes0_0_1'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes1_0_0'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes1_0_1'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes0_1_0'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes1_1_0'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes0_2_0'
ast-grep --lang ts --pattern 'alphaSmartRouteWithThreeRoutes1_2_0'

Length of output: 8605

Copy link
Contributor

@vuonghuuhung vuonghuuhung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@haunv3 haunv3 merged commit 5c71178 into main Jul 10, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants