diff --git a/apps/api/src/controllers/account-balance/historical.ts b/apps/api/src/controllers/account-balance/historical.ts index 4136f8964..d77e3fbb0 100644 --- a/apps/api/src/controllers/account-balance/historical.ts +++ b/apps/api/src/controllers/account-balance/historical.ts @@ -6,6 +6,7 @@ import { HistoricalBalanceRequestQuerySchema, HistoricalBalancesResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { HistoricalBalancesService } from "@/services"; export function historicalBalances( @@ -21,6 +22,7 @@ export function historicalBalances( description: "Returns historical balance deltas for one account, enriched with the transfer that caused each change.", tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { params: HistoricalBalanceRequestParamsSchema, query: HistoricalBalanceRequestQuerySchema, diff --git a/apps/api/src/controllers/account-balance/interactions.ts b/apps/api/src/controllers/account-balance/interactions.ts index 826297e08..8de5f4fd5 100644 --- a/apps/api/src/controllers/account-balance/interactions.ts +++ b/apps/api/src/controllers/account-balance/interactions.ts @@ -1,6 +1,8 @@ import { Address } from "viem"; import { OpenAPIHono as Hono, createRoute } from "@hono/zod-openapi"; +import { setCacheControl } from "@/middlewares"; + import { AccountInteractions, AccountInteractionsMapper, @@ -33,6 +35,7 @@ export function accountInteractions(app: Hono, service: InteractionsService) { description: `Returns a mapping of the largest interactions between accounts. Positive amounts signify net token transfers FROM
, whilst negative amounts refer to net transfers TO
`, tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { params: AccountInteractionsParamsSchema, query: AccountInteractionsQuerySchema, diff --git a/apps/api/src/controllers/account-balance/listing.ts b/apps/api/src/controllers/account-balance/listing.ts index 0e9873d58..7c3496803 100644 --- a/apps/api/src/controllers/account-balance/listing.ts +++ b/apps/api/src/controllers/account-balance/listing.ts @@ -10,6 +10,7 @@ import { AccountBalanceWithVariationResponseMapper, AccountBalanceWithVariationResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { AccountBalanceService } from "@/services"; export function accountBalances( @@ -25,6 +26,7 @@ export function accountBalances( summary: "Get account balance records", description: "Returns sorted and paginated account balance records", tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { query: AccountBalancesRequestSchema, }, @@ -94,6 +96,7 @@ export function accountBalances( summary: "Get account balance", description: "Returns account balance information for a specific address", tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { params: AccountBalanceRequestParamSchema, query: AccountBalanceRequestQuerySchema, diff --git a/apps/api/src/controllers/account-balance/variations.ts b/apps/api/src/controllers/account-balance/variations.ts index 564c36100..c1ebe9ae7 100644 --- a/apps/api/src/controllers/account-balance/variations.ts +++ b/apps/api/src/controllers/account-balance/variations.ts @@ -9,6 +9,7 @@ import { AccountBalanceVariationsByAccountIdResponseMapper, AccountBalanceVariationsByAccountIdResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { BalanceVariationsService } from "@/services"; export function accountBalanceVariations( @@ -24,6 +25,7 @@ export function accountBalanceVariations( description: "Returns a mapping of the biggest variations to account balances associated by account address", tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { query: AccountBalanceVariationsRequestQuerySchema, }, @@ -66,6 +68,7 @@ export function accountBalanceVariations( summary: "Get changes in balance for a given period for a single account", description: "Returns a the changes to balance by period and accountId", tags: ["account-balances"], + middleware: [setCacheControl(60)], request: { params: AccountBalanceVariationsByAccountIdRequestParamsSchema, query: AccountBalanceVariationsByAccountIdRequestQuerySchema, diff --git a/apps/api/src/controllers/dao/index.ts b/apps/api/src/controllers/dao/index.ts index 9d40648b1..351b35d6e 100644 --- a/apps/api/src/controllers/dao/index.ts +++ b/apps/api/src/controllers/dao/index.ts @@ -1,6 +1,7 @@ import { OpenAPIHono as Hono, createRoute } from "@hono/zod-openapi"; import { DaoResponseSchema } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { DaoService } from "@/services"; export function dao(app: Hono, service: DaoService) { @@ -12,6 +13,7 @@ export function dao(app: Hono, service: DaoService) { summary: "Get DAO governance parameters", description: "Returns current governance parameters for this DAO", tags: ["governance"], + middleware: [setCacheControl(3600)], responses: { 200: { description: "DAO governance parameters", diff --git a/apps/api/src/controllers/delegation-percentage/index.ts b/apps/api/src/controllers/delegation-percentage/index.ts index 09847dcdc..dc2b11ba2 100644 --- a/apps/api/src/controllers/delegation-percentage/index.ts +++ b/apps/api/src/controllers/delegation-percentage/index.ts @@ -5,6 +5,7 @@ import { DelegationPercentageResponseSchema, toApi, } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; import { DelegationPercentageService } from "@/services"; export function delegationPercentage( @@ -18,6 +19,7 @@ export function delegationPercentage( path: "/delegation-percentage", summary: "Get delegation percentage day buckets with forward-fill", tags: ["metrics"], + middleware: [setCacheControl(3600)], request: { query: DelegationPercentageRequestSchema, }, diff --git a/apps/api/src/controllers/delegations/delegations.ts b/apps/api/src/controllers/delegations/delegations.ts index 6adcdaedc..4d9cefaf6 100644 --- a/apps/api/src/controllers/delegations/delegations.ts +++ b/apps/api/src/controllers/delegations/delegations.ts @@ -5,6 +5,7 @@ import { DelegationsResponseSchema, } from "@/mappers/delegations"; import {} from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { DelegationsService } from "@/services/delegations/current"; @@ -17,6 +18,7 @@ export function delegations(app: Hono, service: DelegationsService) { summary: "Get delegations", description: "Get current delegations for an account", tags: ["delegations"], + middleware: [setCacheControl(60)], request: { params: DelegationsRequestParamsSchema, }, diff --git a/apps/api/src/controllers/delegations/delegators.ts b/apps/api/src/controllers/delegations/delegators.ts index ef1f19580..0df9291c0 100644 --- a/apps/api/src/controllers/delegations/delegators.ts +++ b/apps/api/src/controllers/delegations/delegators.ts @@ -6,6 +6,7 @@ import { DelegatorsRequestQuerySchema, } from "@/mappers/delegations/delegators"; import {} from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { DelegatorsService } from "@/services/delegations/delegators"; export function delegators(app: Hono, service: DelegatorsService) { @@ -17,6 +18,7 @@ export function delegators(app: Hono, service: DelegatorsService) { summary: "Get delegators", description: "Get current delegators of an account with voting power", tags: ["delegations"], + middleware: [setCacheControl(60)], request: { params: DelegatorsRequestParamsSchema, query: DelegatorsRequestQuerySchema, diff --git a/apps/api/src/controllers/delegations/historical.ts b/apps/api/src/controllers/delegations/historical.ts index 46e398207..3edcfc513 100644 --- a/apps/api/src/controllers/delegations/historical.ts +++ b/apps/api/src/controllers/delegations/historical.ts @@ -6,6 +6,7 @@ import { DelegationsResponseSchema, } from "@/mappers/delegations"; import {} from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { HistoricalDelegationsService } from "@/services/delegations"; @@ -22,6 +23,7 @@ export function historicalDelegations( description: "Get historical delegations for an account, with optional filtering and sorting", tags: ["delegations"], + middleware: [setCacheControl(60)], request: { params: HistoricalDelegationsRequestParamsSchema, query: HistoricalDelegationsRequestQuerySchema, diff --git a/apps/api/src/controllers/event-relevance/index.ts b/apps/api/src/controllers/event-relevance/index.ts index 87b2a7a44..6b6c5eb22 100644 --- a/apps/api/src/controllers/event-relevance/index.ts +++ b/apps/api/src/controllers/event-relevance/index.ts @@ -6,6 +6,7 @@ import { EventRelevanceThresholdQuerySchema, EventRelevanceThresholdResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { EventRelevanceService } from "@/services"; export function eventRelevance(app: Hono, service: EventRelevanceService) { @@ -16,6 +17,7 @@ export function eventRelevance(app: Hono, service: EventRelevanceService) { path: "/event-relevance/threshold", summary: "Get event relevance threshold", tags: ["feed"], + middleware: [setCacheControl(3600)], request: { query: EventRelevanceThresholdQuerySchema, }, diff --git a/apps/api/src/controllers/feed/index.ts b/apps/api/src/controllers/feed/index.ts index c08398a8e..d33979835 100644 --- a/apps/api/src/controllers/feed/index.ts +++ b/apps/api/src/controllers/feed/index.ts @@ -1,6 +1,7 @@ import { OpenAPIHono as Hono, createRoute } from "@hono/zod-openapi"; import { FeedRequestSchema, FeedResponseSchema } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { FeedService } from "@/services"; export function feed(app: Hono, service: FeedService) { @@ -11,6 +12,7 @@ export function feed(app: Hono, service: FeedService) { path: "/feed/events", summary: "Get feed events", tags: ["feed"], + middleware: [setCacheControl(60)], request: { query: FeedRequestSchema, }, diff --git a/apps/api/src/controllers/governance-activity/controller.ts b/apps/api/src/controllers/governance-activity/controller.ts index 4e09ba123..da2a339c0 100644 --- a/apps/api/src/controllers/governance-activity/controller.ts +++ b/apps/api/src/controllers/governance-activity/controller.ts @@ -2,6 +2,7 @@ import { OpenAPIHono as Hono, createRoute } from "@hono/zod-openapi"; import { formatEther } from "viem"; import { DaysEnum } from "@/lib/enums"; +import { setCacheControl } from "@/middlewares"; import { ActiveSupplyResponseSchema, AverageTurnoutComparisonResponseSchema, @@ -40,6 +41,7 @@ export function governanceActivity( path: "/active-supply/compare", summary: "Get active token supply for DAO", tags: ["governance"], + middleware: [setCacheControl(60)], request: { query: GovernanceActivityDaysQuerySchema, }, @@ -68,6 +70,7 @@ export function governanceActivity( path: "/proposals/compare", summary: "Compare number of proposals between time periods", tags: ["governance"], + middleware: [setCacheControl(60)], request: { query: GovernanceActivityDaysQuerySchema, }, @@ -117,6 +120,7 @@ export function governanceActivity( path: "/votes/compare", summary: "Compare number of votes between time periods", tags: ["governance"], + middleware: [setCacheControl(60)], request: { query: GovernanceActivityDaysQuerySchema, }, @@ -165,6 +169,7 @@ export function governanceActivity( path: "/average-turnout/compare", summary: "Compare average turnout between time periods", tags: ["governance"], + middleware: [setCacheControl(60)], request: { query: GovernanceActivityDaysQuerySchema, }, diff --git a/apps/api/src/controllers/last-update/index.ts b/apps/api/src/controllers/last-update/index.ts index 5ae72d016..a8a3754fc 100644 --- a/apps/api/src/controllers/last-update/index.ts +++ b/apps/api/src/controllers/last-update/index.ts @@ -2,6 +2,7 @@ import { OpenAPIHono as Hono, createRoute } from "@hono/zod-openapi"; import { Drizzle } from "@/database"; import { LastUpdateQuerySchema, LastUpdateResponseSchema } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; import { LastUpdateRepositoryImpl } from "@/repositories"; import { LastUpdateService } from "@/services"; @@ -15,6 +16,7 @@ export function lastUpdate(app: Hono, db: Drizzle) { path: "/last-update", summary: "Get the last update time", tags: ["metrics"], + middleware: [setCacheControl(30)], request: { query: LastUpdateQuerySchema, }, diff --git a/apps/api/src/controllers/proposals/offchainProposals.ts b/apps/api/src/controllers/proposals/offchainProposals.ts index 81d7195f7..9f7311038 100644 --- a/apps/api/src/controllers/proposals/offchainProposals.ts +++ b/apps/api/src/controllers/proposals/offchainProposals.ts @@ -8,6 +8,7 @@ import { OffchainProposalsResponseSchema, OffchainProposalsRequestSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { OffchainProposalsService } from "@/services"; export function offchainProposals( @@ -22,6 +23,7 @@ export function offchainProposals( summary: "Get offchain proposals", description: "Returns a list of offchain (Snapshot) proposals", tags: ["offchain"], + middleware: [setCacheControl(60)], request: { query: OffchainProposalsRequestSchema, }, @@ -97,6 +99,7 @@ export function offchainProposals( summary: "Get an offchain proposal by ID", description: "Returns a single offchain (Snapshot) proposal by its ID", tags: ["offchain"], + middleware: [setCacheControl(60)], request: { params: OffchainProposalRequestSchema, }, diff --git a/apps/api/src/controllers/proposals/onchainProposals.ts b/apps/api/src/controllers/proposals/onchainProposals.ts index e4146336b..558b7726e 100644 --- a/apps/api/src/controllers/proposals/onchainProposals.ts +++ b/apps/api/src/controllers/proposals/onchainProposals.ts @@ -10,6 +10,7 @@ import { ProposalResponseSchema, ProposalMapper, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { ProposalsService } from "@/services"; export function proposals( @@ -26,6 +27,7 @@ export function proposals( summary: "Get proposals", description: "Returns a list of proposal", tags: ["proposals"], + middleware: [setCacheControl(60)], request: { query: ProposalsRequestSchema, }, @@ -134,6 +136,7 @@ export function proposals( summary: "Get a proposal by ID", description: "Returns a single proposal by its ID", tags: ["proposals"], + middleware: [setCacheControl(60)], request: { params: ProposalRequestSchema, }, diff --git a/apps/api/src/controllers/proposals/proposals-activity.ts b/apps/api/src/controllers/proposals/proposals-activity.ts index 0c9b755fc..f4c3f337a 100644 --- a/apps/api/src/controllers/proposals/proposals-activity.ts +++ b/apps/api/src/controllers/proposals/proposals-activity.ts @@ -7,6 +7,7 @@ import { ProposalActivityRequestSchema, ProposalActivityResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { DrizzleProposalsActivityRepository } from "@/repositories/"; import { ProposalsActivityService } from "@/services"; @@ -27,6 +28,7 @@ export function proposalsActivity( description: "Returns proposal activity data including voting history, win rates, and detailed proposal information for the specified delegate within the given time window", tags: ["proposals"], + middleware: [setCacheControl(60)], request: { query: ProposalActivityRequestSchema, }, diff --git a/apps/api/src/controllers/token-metrics/index.ts b/apps/api/src/controllers/token-metrics/index.ts index 64ac5dced..f0d035337 100644 --- a/apps/api/src/controllers/token-metrics/index.ts +++ b/apps/api/src/controllers/token-metrics/index.ts @@ -6,6 +6,7 @@ import { toTokenMetricsApi, } from "@/mappers/token-metrics"; import {} from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { TokenMetricsService } from "@/services/token-metrics"; @@ -18,6 +19,7 @@ export function tokenMetrics(app: Hono, service: TokenMetricsService) { summary: "Get token related metrics", description: `Returns token related metrics for a single metric type.`, tags: ["metrics"], + middleware: [setCacheControl(3600)], request: { query: TokenMetricsRequestSchema, }, diff --git a/apps/api/src/controllers/token/token-distribution.ts b/apps/api/src/controllers/token/token-distribution.ts index 600c4b7cd..0d19682b4 100644 --- a/apps/api/src/controllers/token/token-distribution.ts +++ b/apps/api/src/controllers/token/token-distribution.ts @@ -3,6 +3,7 @@ import { formatUnits, parseEther } from "viem"; import { MetricTypesEnum } from "@/lib/constants"; import { DaysEnum, SECONDS_IN_DAY } from "@/lib/enums"; +import { setCacheControl } from "@/middlewares"; import { SupplyComparisonResponseSchema, TokenDistributionComparisonQuerySchema, @@ -42,6 +43,7 @@ export function tokenDistribution( path: `/${path}/compare`, summary: `Compare ${path.replace(/-/g, " ")} between periods`, tags: ["tokens"], + middleware: [setCacheControl(60)], request: { query: TokenDistributionComparisonQuerySchema, }, diff --git a/apps/api/src/controllers/token/token-historical-data.ts b/apps/api/src/controllers/token/token-historical-data.ts index cfa274ca3..d2b9d43c0 100644 --- a/apps/api/src/controllers/token/token-historical-data.ts +++ b/apps/api/src/controllers/token/token-historical-data.ts @@ -4,6 +4,7 @@ import { TokenHistoricalPriceRequest, TokenHistoricalPriceResponse, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; export interface TokenHistoricalDataClient { getHistoricalTokenData( @@ -24,6 +25,7 @@ export function tokenHistoricalData( summary: "Get historical token data", description: "Get historical market data for a specific token", tags: ["tokens"], + middleware: [setCacheControl(3600)], request: { query: TokenHistoricalPriceRequest, }, diff --git a/apps/api/src/controllers/token/token-properties.ts b/apps/api/src/controllers/token/token-properties.ts index 0406c86c5..93b3ff2e1 100644 --- a/apps/api/src/controllers/token/token-properties.ts +++ b/apps/api/src/controllers/token/token-properties.ts @@ -7,6 +7,7 @@ import { TokenPropertiesResponseSchema, TokenMapper, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { TokenService } from "@/services"; export interface TokenPriceClient { @@ -39,6 +40,7 @@ export function token( summary: "Get token properties", description: "Get property data for a specific token", tags: ["tokens"], + middleware: [setCacheControl(3600)], request: { query: TokenPropertiesQuerySchema, }, diff --git a/apps/api/src/controllers/transactions/index.ts b/apps/api/src/controllers/transactions/index.ts index ac14f8785..d635da975 100644 --- a/apps/api/src/controllers/transactions/index.ts +++ b/apps/api/src/controllers/transactions/index.ts @@ -4,6 +4,7 @@ import { TransactionsRequestSchema, TransactionsResponseSchema, } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; import { TransactionsService } from "@/services"; export function transactions(app: Hono, service: TransactionsService) { @@ -16,6 +17,7 @@ export function transactions(app: Hono, service: TransactionsService) { description: "Get transactions with their associated transfers and delegations, with optional filtering and sorting", tags: ["transactions"], + middleware: [setCacheControl(60)], request: { query: TransactionsRequestSchema, }, diff --git a/apps/api/src/controllers/transfers/index.ts b/apps/api/src/controllers/transfers/index.ts index 012fa3bdb..8728d504d 100644 --- a/apps/api/src/controllers/transfers/index.ts +++ b/apps/api/src/controllers/transfers/index.ts @@ -5,6 +5,7 @@ import { TransfersRequestQuerySchema, TransfersResponseSchema, } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; import { TransfersService } from "@/services"; export function transfers(app: Hono, service: TransfersService) { @@ -16,6 +17,7 @@ export function transfers(app: Hono, service: TransfersService) { summary: "Get transfers", description: "Get transfers of a given address", tags: ["transfers"], + middleware: [setCacheControl(60)], request: { params: TransfersRequestRouteSchema, query: TransfersRequestQuerySchema, diff --git a/apps/api/src/controllers/treasury/index.ts b/apps/api/src/controllers/treasury/index.ts index 8d5d3b842..4a85db8f9 100644 --- a/apps/api/src/controllers/treasury/index.ts +++ b/apps/api/src/controllers/treasury/index.ts @@ -5,6 +5,7 @@ import { TreasuryQuerySchema, } from "@/mappers/treasury"; import {} from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { TreasuryService } from "@/services/treasury"; export function treasury( @@ -21,6 +22,7 @@ export function treasury( description: "Get historical Liquid Treasury (treasury without DAO tokens) from external providers (DefiLlama/Dune)", tags: ["treasury"], + middleware: [setCacheControl(60)], request: { query: TreasuryQuerySchema, }, @@ -54,6 +56,7 @@ export function treasury( description: "Get historical DAO Token Treasury value (governance token quantity × token price)", tags: ["treasury"], + middleware: [setCacheControl(60)], request: { query: TreasuryQuerySchema, }, @@ -88,6 +91,7 @@ export function treasury( description: "Get historical Total Treasury (liquid treasury + DAO token treasury)", tags: ["treasury"], + middleware: [setCacheControl(60)], request: { query: TreasuryQuerySchema, }, diff --git a/apps/api/src/controllers/votes/offchainVotes.ts b/apps/api/src/controllers/votes/offchainVotes.ts index 5cc5cc589..fe24e5495 100644 --- a/apps/api/src/controllers/votes/offchainVotes.ts +++ b/apps/api/src/controllers/votes/offchainVotes.ts @@ -5,6 +5,7 @@ import { OffchainVotesRequestSchema, OffchainVotesResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { OffchainVotesService } from "@/services"; export function offchainVotes(app: Hono, service: OffchainVotesService) { @@ -16,6 +17,7 @@ export function offchainVotes(app: Hono, service: OffchainVotesService) { summary: "Get offchain votes", description: "Returns a list of offchain (Snapshot) votes", tags: ["offchain"], + middleware: [setCacheControl(60)], request: { query: OffchainVotesRequestSchema, }, @@ -64,6 +66,7 @@ export function offchainVotes(app: Hono, service: OffchainVotesService) { description: "Returns a paginated list of offchain (Snapshot) votes for a specific proposal", tags: ["offchain"], + middleware: [setCacheControl(60)], request: { params: OffchainProposalRequestSchema, query: OffchainVotesRequestSchema, diff --git a/apps/api/src/controllers/votes/onchainVotes.ts b/apps/api/src/controllers/votes/onchainVotes.ts index 7a76d5822..6fb41c336 100644 --- a/apps/api/src/controllers/votes/onchainVotes.ts +++ b/apps/api/src/controllers/votes/onchainVotes.ts @@ -7,6 +7,7 @@ import { VotesRequestSchema, VotesResponseSchema, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { VotesService } from "@/services"; export function votes(app: Hono, service: VotesService) { @@ -19,6 +20,7 @@ export function votes(app: Hono, service: VotesService) { description: "Returns a paginated list of votes cast on a specific proposal", tags: ["proposals"], + middleware: [setCacheControl(60)], request: { params: ProposalRequestSchema, query: VotesRequestSchema, @@ -71,6 +73,7 @@ export function votes(app: Hono, service: VotesService) { summary: "Get all votes", description: "Get all votes ordered by timestamp or voting power", tags: ["votes"], + middleware: [setCacheControl(60)], request: { query: VotesRequestSchema, }, @@ -119,6 +122,7 @@ export function votes(app: Hono, service: VotesService) { description: "Returns the active delegates that did not vote on a given proposal", tags: ["proposals"], + middleware: [setCacheControl(60)], request: { params: ProposalRequestSchema, query: VotersRequestSchema, diff --git a/apps/api/src/controllers/voting-power/historical.ts b/apps/api/src/controllers/voting-power/historical.ts index fd8baec82..21483a95d 100644 --- a/apps/api/src/controllers/voting-power/historical.ts +++ b/apps/api/src/controllers/voting-power/historical.ts @@ -8,6 +8,7 @@ import { HistoricalVotingPowerGlobalQuerySchema, DBHistoricalVotingPowerWithRelations, } from "@/mappers"; +import { setCacheControl } from "@/middlewares"; import { Address } from "viem"; export interface HistoricalVotingPowerService { @@ -40,6 +41,7 @@ export function historicalVotingPower( description: "Returns a list of voting power changes for a specific account", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { params: HistoricalVotingPowerRequestParamsSchema, query: HistoricalVotingPowerRequestQuerySchema, @@ -94,6 +96,7 @@ export function historicalVotingPower( summary: "Get voting power changes", description: "Returns a list of voting power changes.", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { query: HistoricalVotingPowerGlobalQuerySchema, }, diff --git a/apps/api/src/controllers/voting-power/listing.ts b/apps/api/src/controllers/voting-power/listing.ts index a44713012..25ea99d6d 100644 --- a/apps/api/src/controllers/voting-power/listing.ts +++ b/apps/api/src/controllers/voting-power/listing.ts @@ -10,6 +10,7 @@ import { AmountFilter, DBAccountPowerWithVariation, } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; interface VotingPowerService { getVotingPowers( @@ -45,6 +46,7 @@ export function votingPowers(app: Hono, service: VotingPowerService) { summary: "Get voting powers", description: "Returns sorted and paginated account voting power records", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { query: VotingPowersRequestSchema, }, @@ -111,6 +113,7 @@ export function votingPowers(app: Hono, service: VotingPowerService) { description: "Returns voting power information for a specific address (account)", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { params: VotingPowerByAccountIdRequestParamsSchema, query: VotingPowerByAccountIdRequestQuerySchema, diff --git a/apps/api/src/controllers/voting-power/variations.ts b/apps/api/src/controllers/voting-power/variations.ts index 34011c902..88fbeacd7 100644 --- a/apps/api/src/controllers/voting-power/variations.ts +++ b/apps/api/src/controllers/voting-power/variations.ts @@ -11,6 +11,7 @@ import { VotingPowerVariationsByAccountIdRequestParamsSchema, DBVotingPowerVariation, } from "@/mappers/"; +import { setCacheControl } from "@/middlewares"; export interface VotingPowerVariationsService { getVotingPowerVariations( @@ -43,6 +44,7 @@ export function votingPowerVariations( description: "Returns a mapping of the voting power changes within a time frame for the given addresses", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { query: VotingPowerVariationsRequestQuerySchema, }, @@ -87,6 +89,7 @@ export function votingPowerVariations( description: "Returns a the changes to voting power by period and accountId", tags: ["voting-power"], + middleware: [setCacheControl(60)], request: { params: VotingPowerVariationsByAccountIdRequestParamsSchema, query: VotingPowerVariationsByAccountIdRequestQuerySchema, diff --git a/apps/api/src/middlewares/cacheControl.ts b/apps/api/src/middlewares/cacheControl.ts new file mode 100644 index 000000000..89f66fe0a --- /dev/null +++ b/apps/api/src/middlewares/cacheControl.ts @@ -0,0 +1,8 @@ +import { createMiddleware } from "hono/factory"; + +export function setCacheControl(seconds: number) { + return createMiddleware(async (c, next) => { + await next(); + c.header("Cache-Control", `public, max-age=${seconds}`); + }); +} diff --git a/apps/api/src/middlewares/index.ts b/apps/api/src/middlewares/index.ts index 3d8e8e9a4..14f74b74d 100644 --- a/apps/api/src/middlewares/index.ts +++ b/apps/api/src/middlewares/index.ts @@ -1,2 +1,3 @@ +export { setCacheControl } from "./cacheControl"; export { errorHandler } from "./errorHandler"; export { metricsMiddleware } from "./metricsMiddleware"; diff --git a/apps/gateful/package.json b/apps/gateful/package.json index b7f207547..c7855bb4e 100644 --- a/apps/gateful/package.json +++ b/apps/gateful/package.json @@ -15,6 +15,7 @@ "license": "ISC", "devDependencies": { "@types/node": "^25.4.0", + "msw": "^2.12.10", "openapi-types": "^12.1.3", "tsx": "^4.19.4", "typescript": "^5.8.3", @@ -27,6 +28,7 @@ "dotenv": "^16.5.0", "hono": "^4.12.7", "openapi3-ts": "^4.5.0", + "redis": "^4.7.1", "zod": "^4.3.6" } } diff --git a/apps/gateful/src/cache/redis.ts b/apps/gateful/src/cache/redis.ts new file mode 100644 index 000000000..c04ed8e55 --- /dev/null +++ b/apps/gateful/src/cache/redis.ts @@ -0,0 +1,28 @@ +import { createClient } from "redis"; + +/** + * Creates a Redis client for the given URL. + * Connects asynchronously — errors are logged but do not block startup. + */ +export function createRedisClient(url: string) { + const client = createClient({ url }); + + client.on("connect", () => { + console.log("[redis] connected"); + }); + + client.on("reconnecting", () => { + console.log("[redis] reconnecting"); + }); + + client.on("error", (err: Error) => { + console.error(`[redis] error: ${err.message}`); + }); + + // Connect in the background — startup is not blocked. + client.connect().catch((err: Error) => { + console.error(`[redis] initial connection failed: ${err.message}`); + }); + + return client; +} diff --git a/apps/gateful/src/config.ts b/apps/gateful/src/config.ts index 21f706d0e..766ae9c5f 100644 --- a/apps/gateful/src/config.ts +++ b/apps/gateful/src/config.ts @@ -7,6 +7,7 @@ const envSchema = z.object({ PORT: z.coerce.number().default(4001), ADDRESS_ENRICHMENT_API_URL: z.url().optional(), BLOCKFUL_API_TOKEN: z.string().optional(), + REDIS_URL: z.string().optional(), }); function loadDaoApis( @@ -35,5 +36,6 @@ export const config = { port: env.PORT, addressEnrichmentUrl: env.ADDRESS_ENRICHMENT_API_URL, blockfulApiToken: env.BLOCKFUL_API_TOKEN, + redisUrl: env.REDIS_URL, daoApis: loadDaoApis(), }; diff --git a/apps/gateful/src/index.ts b/apps/gateful/src/index.ts index 62ce9dcda..49feae143 100644 --- a/apps/gateful/src/index.ts +++ b/apps/gateful/src/index.ts @@ -8,6 +8,8 @@ import { cors } from "hono/cors"; import { logger } from "hono/logger"; import { config } from "./config.js"; +import { createRedisClient } from "./cache/redis.js"; +import { cacheMiddleware } from "./middlewares/cache.js"; import { health } from "./health/route.js"; import { proxy } from "./proxy/route.js"; import { addressEnrichment } from "./resolvers/address-enrichment/route.js"; @@ -28,6 +30,10 @@ app.use("*", logger()); if (config.blockfulApiToken) { app.use("*", bearerAuth({ token: config.blockfulApiToken })); } +if (config.redisUrl) { + const redis = createRedisClient(config.redisUrl); + app.use("*", cacheMiddleware(redis)); +} console.log( `Discovered ${config.daoApis.size} DAO APIs: [${Array.from(config.daoApis.keys()).join(", ")}]`, diff --git a/apps/gateful/src/middlewares/cache.test.ts b/apps/gateful/src/middlewares/cache.test.ts new file mode 100644 index 000000000..74db4bf86 --- /dev/null +++ b/apps/gateful/src/middlewares/cache.test.ts @@ -0,0 +1,158 @@ +import { OpenAPIHono } from "@hono/zod-openapi"; +import { vi } from "vitest"; +import { type CacheStore, cacheMiddleware } from "./cache"; + +// --------------------------------------------------------------------------- +// Fake Redis +// --------------------------------------------------------------------------- + +class FakeRedis implements CacheStore { + store = new Map(); + + async get(key: string): Promise { + return this.store.get(key)?.value ?? null; + } + + async set( + key: string, + value: string, + options?: { EX: number }, + ): Promise { + this.store.set(key, { value, ttl: options?.EX }); + return "OK"; + } +} + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +const defaultHandler = (c: import("hono").Context) => { + c.header("Cache-Control", "public, max-age=60"); + return c.json({ ok: true }, 200); +}; + +/** Builds a minimal Hono app wired with the cache middleware and one GET route. */ +function buildApp( + redis: CacheStore, + handler: ( + c: import("hono").Context, + ) => Response | Promise = defaultHandler, +): OpenAPIHono { + const app = new OpenAPIHono(); + app.use("*", cacheMiddleware(redis)); + app.get("/test", handler); + return app; +} + +async function readResponse(res: Response) { + return { + status: res.status, + xCache: res.headers.get("X-Cache"), + cacheControl: res.headers.get("Cache-Control"), + body: await res.text(), + }; +} + +// --------------------------------------------------------------------------- +// Tests +// --------------------------------------------------------------------------- + +describe("cacheMiddleware", () => { + let redis: FakeRedis; + + beforeEach(() => { + redis = new FakeRedis(); + }); + + // ------------------------------------------------------------------------- + // Cache HIT + // ------------------------------------------------------------------------- + + it("returns cached response with X-Cache: HIT header on cache hit", async () => { + const handler = vi.fn((c: import("hono").Context) => { + c.header("Cache-Control", "public, max-age=60"); + return c.json({ ok: true }, 200); + }); + const app = buildApp(redis, handler); + + await app.request("/test"); // first request: MISS — primes the cache + const res = await app.request("/test"); // second request: HIT + + expect(await readResponse(res)).toEqual({ + status: 200, + xCache: "HIT", + cacheControl: "public, max-age=60", + body: '{"ok":true}', + }); + // Handler was only invoked for the first (MISS) request. + expect(handler).toHaveBeenCalledOnce(); + }); + + // ------------------------------------------------------------------------- + // Redis read error → fail open + // ------------------------------------------------------------------------- + + it("fails open when Redis throws on read (calls next() normally)", async () => { + vi.spyOn(redis, "get").mockRejectedValueOnce( + new Error("connection refused"), + ); + + const app = buildApp(redis); + + const res = await app.request("/test"); + + expect(await readResponse(res)).toEqual({ + status: 200, + xCache: null, + cacheControl: "public, max-age=60", + body: '{"ok":true}', + }); + }); + + // ------------------------------------------------------------------------- + // Redis write error → fail open + // ------------------------------------------------------------------------- + + it("fails open when Redis throws on write (response still returned)", async () => { + vi.spyOn(redis, "set").mockRejectedValueOnce(new Error("write error")); + + const app = buildApp(redis); + + const res = await app.request("/test"); + + expect(await readResponse(res)).toEqual({ + status: 200, + xCache: null, + cacheControl: "public, max-age=60", + body: '{"ok":true}', + }); + }); + + // ------------------------------------------------------------------------- + // Non-2xx → not cached + // ------------------------------------------------------------------------- + + it("does not cache non-2xx responses", async () => { + const app = buildApp(redis, (c) => { + c.header("Cache-Control", "public, max-age=60"); + return c.json({ error: "not found" }, 404); + }); + + await app.request("/test"); + + expect(redis.store.size).toBe(0); + }); + + // ------------------------------------------------------------------------- + // Missing Cache-Control → not cached + // ------------------------------------------------------------------------- + + it("does not cache responses without a Cache-Control header", async () => { + const app = buildApp(redis, (c) => c.json({ ok: true }, 200)); + + await app.request("/test"); + + expect(redis.store.size).toBe(0); + }); +}); diff --git a/apps/gateful/src/middlewares/cache.ts b/apps/gateful/src/middlewares/cache.ts new file mode 100644 index 000000000..4299b27b6 --- /dev/null +++ b/apps/gateful/src/middlewares/cache.ts @@ -0,0 +1,89 @@ +import type { Context, Next } from "hono"; + +/** Minimal interface the middleware actually needs */ +export interface CacheStore { + get(key: string): Promise; + set(key: string, value: string, options?: { EX: number }): Promise; +} + +type CachedEntry = { + body: string; + status: number; + contentType: string; + cacheControl: string; +}; + +function safeParse(raw: string): T | null { + try { + return JSON.parse(raw) as T; + } catch { + return null; + } +} + +/** + * Cache-aside middleware using Redis. + * + * - Skips non-GET requests. + * - On cache hit: returns the stored response with `X-Cache: HIT`. + * - On cache miss: passes through, then stores the response when: + * - The status is 2xx. + * - The upstream set a `Cache-Control: max-age=` header with n > 0. + * - All Redis errors are swallowed (fail open) to preserve availability. + */ +export function cacheMiddleware(redis: CacheStore) { + return async (c: Context, next: Next) => { + // Only cache GET requests. + if (c.req.method !== "GET") return next(); + + const key = c.req.url; + + // --- Request phase: check for a cached response --- + // Fail open: if Redis is unavailable, .catch returns null and we proceed normally. + const raw = await redis.get(key).catch(() => null); + if (raw) { + const entry = safeParse(raw); + if (!entry) return next(); + return new Response(entry.body, { + status: entry.status, + headers: { + "Content-Type": entry.contentType, + "Cache-Control": entry.cacheControl, + "X-Cache": "HIT", + }, + }); + } + + await next(); + + // --- Response phase: store the response if eligible --- + if (c.res.status < 200 || c.res.status >= 300) return; + + const cacheControl = c.res.headers.get("Cache-Control"); + if (!cacheControl) return; + + const match = /max-age=(\d+)/.exec(cacheControl); + // No max-age directive or explicitly zero → do not cache. + if (!match || match[1] === "0") return; + + const ttl = parseInt(match[1], 10); + if (ttl <= 0) return; + + // Fail open: response is still returned even if we fail to cache it. + await c.res + .clone() + .text() + .then((body) => { + const contentType = + c.res.headers.get("Content-Type") ?? "application/json"; + const entry: CachedEntry = { + body, + status: c.res.status, + contentType, + cacheControl: cacheControl!, + }; + return redis.set(key, JSON.stringify(entry), { EX: ttl }); + }) + .catch(() => null); + }; +} diff --git a/apps/gateful/src/resolvers/daos/route.ts b/apps/gateful/src/resolvers/daos/route.ts index b62daa36a..0e381de4d 100644 --- a/apps/gateful/src/resolvers/daos/route.ts +++ b/apps/gateful/src/resolvers/daos/route.ts @@ -36,7 +36,8 @@ const route = createRoute({ export function daos(app: OpenAPIHono, service: DaosService) { app.openapi(route, async (c) => { - const result = await service.getAllDaos(); - return c.json(result); + const { cacheControl, ...body } = await service.getAllDaos(); + if (cacheControl) c.header("Cache-Control", cacheControl); + return c.json(body, 200); }); } diff --git a/apps/gateful/src/resolvers/daos/service.ts b/apps/gateful/src/resolvers/daos/service.ts index d06742ff3..174be79b5 100644 --- a/apps/gateful/src/resolvers/daos/service.ts +++ b/apps/gateful/src/resolvers/daos/service.ts @@ -1,17 +1,23 @@ import { fanOutGet } from "../../shared/fan-out.js"; - import { DaoResponse, DaosResponse } from "./route.js"; +export type DaosResult = DaosResponse & { cacheControl: string | null }; + export class DaosService { constructor(private readonly daoApis: Map) {} - async getAllDaos(): Promise { - const responses = await fanOutGet(this.daoApis, "/dao"); - const items = Array.from(responses.values()); + async getAllDaos(): Promise { + const { data, cacheControl } = await fanOutGet( + this.daoApis, + "/dao", + ); + + const items = Array.from(data.values()); return { items, totalCount: items.length, + cacheControl, }; } } diff --git a/apps/gateful/src/resolvers/delegation/route.ts b/apps/gateful/src/resolvers/delegation/route.ts index ccdfdff09..0cf3cb0c4 100644 --- a/apps/gateful/src/resolvers/delegation/route.ts +++ b/apps/gateful/src/resolvers/delegation/route.ts @@ -69,6 +69,8 @@ export function averageDelegation( limit, }); - return c.json(result); + const { cacheControl, ...body } = result; + if (cacheControl) c.header("Cache-Control", cacheControl); + return c.json(body, 200); }); } diff --git a/apps/gateful/src/resolvers/delegation/service.ts b/apps/gateful/src/resolvers/delegation/service.ts index 20be09ce1..3e883b9d7 100644 --- a/apps/gateful/src/resolvers/delegation/service.ts +++ b/apps/gateful/src/resolvers/delegation/service.ts @@ -11,6 +11,10 @@ export type DelegationPercentageResponse = { }; }; +export type DelegationResult = DelegationPercentageResponse & { + cacheControl: string | null; +}; + export class DelegationService { constructor(private readonly daoApis: Map) {} @@ -21,7 +25,7 @@ export class DelegationService { before?: string; orderDirection?: string; limit?: number; - }) { + }): Promise { const params = new URLSearchParams(); params.set("startDate", args.startDate); if (args.endDate) params.set("endDate", args.endDate); @@ -30,11 +34,12 @@ export class DelegationService { if (args.orderDirection) params.set("orderDirection", args.orderDirection); if (args.limit) params.set("limit", String(args.limit)); - const daoResponses = await fanOutGet( - this.daoApis, - "/delegation-percentage", - params.toString(), - ); + const { data: daoResponses, cacheControl } = + await fanOutGet( + this.daoApis, + "/delegation-percentage", + params.toString(), + ); const hasNextPage = Array.from(daoResponses.values()).some( (response) => response?.pageInfo?.hasNextPage ?? false, @@ -50,7 +55,12 @@ export class DelegationService { ? [] : this.aggregateMeanPercentage(alignedResponses); - return this.buildPaginatedResponse(aggregated, args, hasNextPage); + const paginatedResponse = this.buildPaginatedResponse( + aggregated, + args, + hasNextPage, + ); + return { ...paginatedResponse, cacheControl }; } private getFirstDate( diff --git a/apps/gateful/src/shared/fan-out.test.ts b/apps/gateful/src/shared/fan-out.test.ts new file mode 100644 index 000000000..71f9044b8 --- /dev/null +++ b/apps/gateful/src/shared/fan-out.test.ts @@ -0,0 +1,100 @@ +import { http, HttpResponse } from "msw"; +import { setupServer } from "msw/node"; + +import { fanOutGet } from "./fan-out"; + +// --------------------------------------------------------------------------- +// MSW server +// --------------------------------------------------------------------------- + +const server = setupServer(); + +beforeAll(() => server.listen({ onUnhandledRequest: "error" })); +afterEach(() => server.resetHandlers()); +afterAll(() => server.close()); + +// --------------------------------------------------------------------------- +// fanOutGet +// --------------------------------------------------------------------------- + +describe("fanOutGet", () => { + it("returns data from all upstreams and cacheControl from the first fulfilled", async () => { + server.use( + http.get("http://ens-api/dao", () => + HttpResponse.json( + { id: "ens" }, + { headers: { "Cache-Control": "public, max-age=120" } }, + ), + ), + http.get("http://uni-api/dao", () => + HttpResponse.json( + { id: "uni" }, + { headers: { "Cache-Control": "public, max-age=120" } }, + ), + ), + ); + + const daoApis = new Map([ + ["ens", "http://ens-api"], + ["uni", "http://uni-api"], + ]); + + const result = await fanOutGet(daoApis, "/dao"); + + expect(result).toEqual({ + data: new Map([ + ["ens", { id: "ens" }], + ["uni", { id: "uni" }], + ]), + cacheControl: "public, max-age=120", + }); + }); + + it("returns null cacheControl when all upstreams omit Cache-Control header", async () => { + server.use( + http.get("http://ens-api/dao", () => HttpResponse.json({ id: "ens" })), + http.get("http://uni-api/dao", () => HttpResponse.json({ id: "uni" })), + ); + + const daoApis = new Map([ + ["ens", "http://ens-api"], + ["uni", "http://uni-api"], + ]); + + const result = await fanOutGet(daoApis, "/dao"); + + expect(result).toEqual({ + data: new Map([ + ["ens", { id: "ens" }], + ["uni", { id: "uni" }], + ]), + cacheControl: null, + }); + }); + + it("excludes failed upstreams from results", async () => { + server.use( + http.get("http://ens-api/dao", () => + HttpResponse.json({}, { status: 500 }), + ), + http.get("http://uni-api/dao", () => + HttpResponse.json( + { id: "uni" }, + { headers: { "Cache-Control": "public, max-age=30" } }, + ), + ), + ); + + const daoApis = new Map([ + ["ens", "http://ens-api"], + ["uni", "http://uni-api"], + ]); + + const result = await fanOutGet(daoApis, "/dao"); + + expect(result).toEqual({ + data: new Map([["uni", { id: "uni" }]]), + cacheControl: "public, max-age=30", + }); + }); +}); diff --git a/apps/gateful/src/shared/fan-out.ts b/apps/gateful/src/shared/fan-out.ts index 34a7af5dd..8b0ccf932 100644 --- a/apps/gateful/src/shared/fan-out.ts +++ b/apps/gateful/src/shared/fan-out.ts @@ -1,12 +1,13 @@ /** - * Fetches a path from all configured DAO APIs in parallel - * Returns a Map of dao name → parsed JSON response (only successful ones) + * Fetches a path from all configured DAO APIs in parallel. + * Returns both the parsed response data and the Cache-Control header from + * the first successful upstream so callers can propagate the TTL downstream. */ export async function fanOutGet( daoApis: Map, path: string, queryString?: string, -): Promise> { +): Promise<{ data: Map; cacheControl: string | null }> { const entries = Array.from(daoApis.entries()); const results = await Promise.allSettled( @@ -18,20 +19,26 @@ export async function fanOutGet( signal: AbortSignal.timeout(5000), }); if (!res.ok) throw new Error(`${dao}: ${res.status}`); + const cacheControl = res.headers?.get("cache-control") ?? null; const data = (await res.json()) as T; - return { dao, data }; + return { dao, data, cacheControl }; }), ); - const responses = new Map(); + const data = new Map(); + let cacheControl: string | null = null; + for (const result of results) { if (result.status === "fulfilled") { - responses.set(result.value.dao, result.value.data); + data.set(result.value.dao, result.value.data); + if (cacheControl === null) { + cacheControl = result.value.cacheControl; + } } else { console.error(`[fan-out] `, result.reason); } } - return responses; + return { data, cacheControl }; } diff --git a/infra/api-gateway/Dockerfile b/infra/api-gateway/Dockerfile index abc97b0f3..9053e48a1 100644 --- a/infra/api-gateway/Dockerfile +++ b/infra/api-gateway/Dockerfile @@ -15,7 +15,7 @@ COPY pnpm-lock.yaml pnpm-lock.yaml COPY --from=builder /app/out/json/ . RUN pnpm install --frozen-lockfile COPY --from=builder /app/out/full/ . -COPY turbo.json turbo.json +COPY --from=builder /app/turbo.json turbo.json RUN pnpm --filter @anticapture/api-gateway... build FROM base AS runner diff --git a/infra/gateful/Dockerfile b/infra/gateful/Dockerfile index abc97b0f3..0f09027a4 100644 --- a/infra/gateful/Dockerfile +++ b/infra/gateful/Dockerfile @@ -3,7 +3,7 @@ FROM node:20-slim AS base FROM base AS builder WORKDIR /app COPY . . -RUN npx turbo@2.3.1 prune @anticapture/api-gateway --docker +RUN npx turbo@2.3.1 prune @anticapture/gateful --docker FROM base AS installer RUN apt-get update && apt-get install -y --no-install-recommends curl \ @@ -15,8 +15,8 @@ COPY pnpm-lock.yaml pnpm-lock.yaml COPY --from=builder /app/out/json/ . RUN pnpm install --frozen-lockfile COPY --from=builder /app/out/full/ . -COPY turbo.json turbo.json -RUN pnpm --filter @anticapture/api-gateway... build +COPY --from=builder /app/turbo.json turbo.json +RUN pnpm --filter @anticapture/gateful... build FROM base AS runner ENV NODE_ENV=production @@ -27,6 +27,6 @@ RUN addgroup --system app && adduser --system --ingroup app --home /home/app app WORKDIR /app COPY --from=installer --chown=app:app /app . USER app -WORKDIR /app/apps/api-gateway -EXPOSE 4000 -ENTRYPOINT ["node", "--import", "./dist/src/instrumentation.js", "dist/src/index.js"] +WORKDIR /app/apps/gateful +EXPOSE 4001 +ENTRYPOINT ["node", "dist/src/index.js"] diff --git a/infra/gateful/railway.json b/infra/gateful/railway.json index e305be2d2..46de8ef2c 100644 --- a/infra/gateful/railway.json +++ b/infra/gateful/railway.json @@ -2,13 +2,7 @@ "$schema": "https://railway.com/railway.schema.json", "build": { "builder": "DOCKERFILE", - "dockerfilePath": "infra/gateful/Dockerfile", - "watchPatterns": [ - "apps/gateful/**", - "infra/gateful/**", - "apps/api/**/*.ts", - "apps/address-enrichment/**/*.ts" - ] + "dockerfilePath": "infra/gateful/Dockerfile" }, "deploy": { "healthcheckPath": "/health", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57d6b372a..a3cc4a33d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -233,28 +233,28 @@ importers: version: link:../../packages/observability "@graphql-mesh/config": specifier: ^0.108.4 - version: 0.108.31(graphql@16.13.1) + version: 0.108.31(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/graphql": specifier: ^0.104.3 - version: 0.104.24(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) + version: 0.104.24(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(ioredis@5.10.1)(utf-8-validate@5.0.10) "@graphql-mesh/http": specifier: ^0.106.3 - version: 0.106.29(graphql@16.13.1) + version: 0.106.29(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/openapi": specifier: ^0.109.8 - version: 0.109.37(graphql@16.13.1)(pino@9.14.0) + version: 0.109.37(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) "@graphql-mesh/runtime": specifier: ^0.106.3 - version: 0.106.27(graphql@16.13.1) + version: 0.106.27(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/transform-filter-schema": specifier: ^0.104.19 - version: 0.104.26(graphql@16.13.1) + version: 0.104.26(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/transform-rename": specifier: ^0.105.7 - version: 0.105.26(graphql@16.13.1) + version: 0.105.26(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/types": specifier: ^0.104.3 - version: 0.104.23(graphql@16.13.1) + version: 0.104.23(graphql@16.13.1)(ioredis@5.10.1) dotenv: specifier: ^16.5.0 version: 16.6.1 @@ -264,7 +264,7 @@ importers: devDependencies: "@graphql-mesh/cli": specifier: ^0.100.4 - version: 0.100.36(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(pino@9.14.0)(utf-8-validate@5.0.10) + version: 0.100.36(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)(utf-8-validate@5.0.10) "@types/jest": specifier: ^29.5.14 version: 29.5.14 @@ -288,7 +288,7 @@ importers: version: link:../../packages/graphql-client "@apollo/client": specifier: ^3.13.8 - version: 3.14.0(@types/react@19.2.8)(graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(graphql@16.13.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 3.14.0(@types/react@19.2.8)(graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(graphql@16.13.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) "@ethersproject/providers": specifier: ^5.8.0 version: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -324,7 +324,7 @@ importers: version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) "@rainbow-me/rainbowkit": specifier: ^2.2.0 - version: 2.2.10(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)) + version: 2.2.10(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)) "@snapshot-labs/snapshot.js": specifier: ^0.12.62 version: 0.12.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -408,7 +408,7 @@ importers: version: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) wagmi: specifier: ^2.12.25 - version: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + version: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) zod: specifier: ^3.25.76 version: 3.25.76 @@ -527,6 +527,9 @@ importers: openapi3-ts: specifier: ^4.5.0 version: 4.5.0 + redis: + specifier: ^4.7.1 + version: 4.7.1 zod: specifier: ^4.3.6 version: 4.3.6 @@ -534,6 +537,9 @@ importers: "@types/node": specifier: ^25.4.0 version: 25.4.0 + msw: + specifier: ^2.12.10 + version: 2.12.10(@types/node@25.4.0)(typescript@5.9.3) openapi-types: specifier: ^12.1.3 version: 12.1.3 @@ -4959,6 +4965,12 @@ packages: "@types/node": optional: true + "@ioredis/commands@1.5.1": + resolution: + { + integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==, + } + "@isaacs/cliui@8.0.2": resolution: { @@ -6714,6 +6726,53 @@ packages: viem: 2.x wagmi: ^2.9.0 + "@redis/bloom@1.2.0": + resolution: + { + integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==, + } + peerDependencies: + "@redis/client": ^1.0.0 + + "@redis/client@1.6.1": + resolution: + { + integrity: sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==, + } + engines: { node: ">=14" } + + "@redis/graph@1.1.1": + resolution: + { + integrity: sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==, + } + peerDependencies: + "@redis/client": ^1.0.0 + + "@redis/json@1.0.7": + resolution: + { + integrity: sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==, + } + peerDependencies: + "@redis/client": ^1.0.0 + + "@redis/search@1.2.0": + resolution: + { + integrity: sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==, + } + peerDependencies: + "@redis/client": ^1.0.0 + + "@redis/time-series@1.1.0": + resolution: + { + integrity: sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==, + } + peerDependencies: + "@redis/client": ^1.0.0 + "@reown/appkit-common@1.7.8": resolution: { @@ -10374,6 +10433,13 @@ packages: } engines: { node: ">=6" } + cluster-key-slot@1.1.2: + resolution: + { + integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==, + } + engines: { node: ">=0.10.0" } + co@4.6.0: resolution: { @@ -11195,6 +11261,13 @@ packages: } engines: { node: ">=0.4.0" } + denque@2.1.0: + resolution: + { + integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==, + } + engines: { node: ">=0.10" } + dependency-graph@0.11.0: resolution: { @@ -12767,6 +12840,13 @@ packages: integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==, } + generic-pool@3.9.0: + resolution: + { + integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==, + } + engines: { node: ">= 4" } + gensync@1.0.0-beta.2: resolution: { @@ -13508,6 +13588,13 @@ packages: integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, } + ioredis@5.10.1: + resolution: + { + integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==, + } + engines: { node: ">=12.22.0" } + iron-webcrypto@1.2.1: resolution: { @@ -14778,6 +14865,12 @@ packages: integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, } + lodash.defaults@4.2.0: + resolution: + { + integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==, + } + lodash.get@4.4.2: resolution: { @@ -14785,6 +14878,12 @@ packages: } deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. + lodash.isarguments@3.1.0: + resolution: + { + integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==, + } + lodash.isequal@4.5.0: resolution: { @@ -17147,6 +17246,26 @@ packages: integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==, } + redis-errors@1.2.0: + resolution: + { + integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==, + } + engines: { node: ">=4" } + + redis-parser@3.0.0: + resolution: + { + integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==, + } + engines: { node: ">=4" } + + redis@4.7.1: + resolution: + { + integrity: sha512-S1bJDnqLftzHXHP8JsT5II/CtHWQrASX5K96REjWjlmWKrviSOLWmM7QnRLstAWsu1VBBV1ffV6DzCvxNP0UJQ==, + } + reflect.getprototypeof@1.0.10: resolution: { @@ -17947,6 +18066,12 @@ packages: } engines: { node: ">=6" } + standard-as-callback@2.1.0: + resolution: + { + integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==, + } + standardwebhooks@1.0.0: resolution: { @@ -20303,7 +20428,7 @@ snapshots: "@jridgewell/gen-mapping": 0.3.13 "@jridgewell/trace-mapping": 0.3.31 - "@apollo/client@3.14.0(@types/react@19.2.8)(graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(graphql@16.13.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)": + "@apollo/client@3.14.0(@types/react@19.2.8)(graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(graphql@16.13.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)": dependencies: "@graphql-typed-document-node/core": 3.2.0(graphql@16.13.1) "@wry/caches": 1.0.1 @@ -20320,7 +20445,7 @@ snapshots: tslib: 2.8.1 zen-observable-ts: 1.2.5 optionalDependencies: - graphql-ws: 6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + graphql-ws: 6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) transitivePeerDependencies: @@ -21446,9 +21571,9 @@ snapshots: "@babel/helper-string-parser": 7.27.1 "@babel/helper-validator-identifier": 7.28.5 - "@base-org/account@2.4.0(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)": + "@base-org/account@2.4.0(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)": dependencies: - "@coinbase/cdp-sdk": 1.38.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@coinbase/cdp-sdk": 1.38.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@noble/hashes": 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 @@ -21487,11 +21612,11 @@ snapshots: - "@chromatic-com/cypress" - "@chromatic-com/playwright" - "@coinbase/cdp-sdk@1.38.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))": + "@coinbase/cdp-sdk@1.38.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))": dependencies: - "@solana-program/system": 0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - "@solana-program/token": 0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana-program/system": 0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + "@solana-program/token": 0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/web3.js": 1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) axios: 1.13.6 @@ -22734,11 +22859,13 @@ snapshots: optionalDependencies: pino: 9.14.0 - "@graphql-hive/pubsub@2.1.1": + "@graphql-hive/pubsub@2.1.1(ioredis@5.10.1)": dependencies: "@repeaterjs/repeater": 3.0.6 "@whatwg-node/disposablestack": 0.0.6 "@whatwg-node/promise-helpers": 1.3.2 + optionalDependencies: + ioredis: 5.10.1 "@graphql-hive/signal@1.0.0": {} @@ -22751,10 +22878,10 @@ snapshots: object-inspect: 1.13.2 tslib: 2.6.2 - "@graphql-mesh/cache-inmemory-lru@0.8.26(graphql@16.13.1)": + "@graphql-mesh/cache-inmemory-lru@0.8.26(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@whatwg-node/disposablestack": 0.0.6 graphql: 16.13.1 tslib: 2.8.1 @@ -22762,11 +22889,11 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/cache-localforage@0.105.26(graphql@16.13.1)": + "@graphql-mesh/cache-localforage@0.105.26(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/cache-inmemory-lru": 0.8.26(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/cache-inmemory-lru": 0.8.26(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) graphql: 16.13.1 localforage: 1.10.0 tslib: 2.8.1 @@ -22774,7 +22901,7 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/cli@0.100.36(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(pino@9.14.0)(utf-8-validate@5.0.10)": + "@graphql-mesh/cli@0.100.36(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)(utf-8-validate@5.0.10)": dependencies: "@graphql-codegen/core": 5.0.1(graphql@16.13.1) "@graphql-codegen/typed-document-node": 6.1.7(graphql@16.13.1) @@ -22782,15 +22909,15 @@ snapshots: "@graphql-codegen/typescript-generic-sdk": 5.0.0(graphql-tag@2.12.6(graphql@16.13.1))(graphql@16.13.1) "@graphql-codegen/typescript-operations": 5.0.9(graphql@16.13.1) "@graphql-codegen/typescript-resolvers": 5.1.7(graphql@16.13.1) - "@graphql-mesh/config": 0.108.31(graphql@16.13.1) + "@graphql-mesh/config": 0.108.31(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/http": 0.106.29(graphql@16.13.1) - "@graphql-mesh/include": 0.3.26(graphql@16.13.1) - "@graphql-mesh/incontext-sdk-codegen": 0.0.2(@types/node@20.19.37)(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1) - "@graphql-mesh/store": 0.104.27(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/http": 0.106.29(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/include": 0.3.26(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/incontext-sdk-codegen": 0.0.2(@types/node@20.19.37)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/store": 0.104.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@whatwg-node/promise-helpers": 1.3.2 ajv: 8.18.0 @@ -22825,17 +22952,17 @@ snapshots: - utf-8-validate - winston - "@graphql-mesh/config@0.108.31(graphql@16.13.1)": + "@graphql-mesh/config@0.108.31(graphql@16.13.1)(ioredis@5.10.1)": dependencies: "@envelop/core": 5.5.1 - "@graphql-mesh/cache-localforage": 0.105.26(graphql@16.13.1) + "@graphql-mesh/cache-localforage": 0.105.26(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/merger-bare": 0.105.27(graphql@16.13.1) - "@graphql-mesh/merger-stitching": 0.105.27(graphql@16.13.1) - "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1) - "@graphql-mesh/store": 0.104.27(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/merger-bare": 0.105.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/merger-stitching": 0.105.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/store": 0.104.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/code-file-loader": 8.1.28(graphql@16.13.1) "@graphql-tools/graphql-file-loader": 8.1.12(graphql@16.13.1) "@graphql-tools/load": 8.1.8(graphql@16.13.1) @@ -22859,9 +22986,9 @@ snapshots: graphql: 16.13.1 path-browserify: 1.0.1 - "@graphql-mesh/fusion-composition@0.8.32(graphql@16.13.1)": + "@graphql-mesh/fusion-composition@0.8.32(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/schema": 10.0.31(graphql@16.13.1) "@graphql-tools/stitching-directives": 4.0.15(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) @@ -22878,15 +23005,15 @@ snapshots: - ioredis - supports-color - "@graphql-mesh/fusion-runtime@1.8.1(@types/node@20.19.37)(graphql@16.13.1)(pino@9.14.0)": + "@graphql-mesh/fusion-runtime@1.8.1(@types/node@20.19.37)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@envelop/core": 5.5.1 "@envelop/instrumentation": 1.0.0 "@graphql-hive/logger": 1.1.0(pino@9.14.0) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/batch-execute": 10.0.7(graphql@16.13.1) "@graphql-tools/delegate": 12.0.12(graphql@16.13.1) "@graphql-tools/executor": 1.5.1(graphql@16.13.1) @@ -22909,13 +23036,13 @@ snapshots: - pino - winston - "@graphql-mesh/graphql@0.104.24(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10)": + "@graphql-mesh/graphql@0.104.24(@types/node@20.19.37)(bufferutil@4.0.9)(crossws@0.3.5)(graphql@16.13.1)(ioredis@5.10.1)(utf-8-validate@5.0.10)": dependencies: "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/store": 0.104.27(graphql@16.13.1) + "@graphql-mesh/store": 0.104.27(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/delegate": 12.0.12(graphql@16.13.1) "@graphql-tools/federation": 4.2.10(@types/node@20.19.37)(graphql@16.13.1) "@graphql-tools/merge": 9.1.7(graphql@16.13.1) @@ -22934,12 +23061,12 @@ snapshots: - ioredis - utf-8-validate - "@graphql-mesh/http@0.106.29(graphql@16.13.1)": + "@graphql-mesh/http@0.106.29(graphql@16.13.1)(ioredis@5.10.1)": dependencies: "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/runtime": 0.106.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@whatwg-node/promise-helpers": 1.3.2 "@whatwg-node/server": 0.10.18 @@ -22950,9 +23077,9 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/include@0.3.26(graphql@16.13.1)": + "@graphql-mesh/include@0.3.26(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) dotenv: 17.3.1 get-tsconfig: 4.13.6 graphql: 16.13.1 @@ -22962,16 +23089,16 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/incontext-sdk-codegen@0.0.2(@types/node@20.19.37)(graphql@16.13.1)(pino@9.14.0)": + "@graphql-mesh/incontext-sdk-codegen@0.0.2(@types/node@20.19.37)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@graphql-codegen/core": 5.0.1(graphql@16.13.1) "@graphql-codegen/plugin-helpers": 6.2.0(graphql@16.13.1) "@graphql-codegen/typescript": 5.0.9(graphql@16.13.1) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/fusion-runtime": 1.8.1(@types/node@20.19.37)(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/fusion-runtime": 1.8.1(@types/node@20.19.37)(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@graphql-tools/wrap": 11.1.9(graphql@16.13.1) graphql: 16.13.1 @@ -22986,11 +23113,11 @@ snapshots: - pino - winston - "@graphql-mesh/merger-bare@0.105.27(graphql@16.13.1)": + "@graphql-mesh/merger-bare@0.105.27(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/merger-stitching": 0.105.27(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/merger-stitching": 0.105.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/schema": 10.0.31(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) graphql: 16.13.1 @@ -22999,11 +23126,11 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/merger-stitching@0.105.27(graphql@16.13.1)": + "@graphql-mesh/merger-stitching@0.105.27(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/store": 0.104.27(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/store": 0.104.27(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/schema": 10.0.31(graphql@16.13.1) "@graphql-tools/stitch": 10.1.13(graphql@16.13.1) @@ -23014,13 +23141,13 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/openapi@0.109.37(graphql@16.13.1)(pino@9.14.0)": + "@graphql-mesh/openapi@0.109.37(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: - "@graphql-mesh/store": 0.104.27(graphql@16.13.1) + "@graphql-mesh/store": 0.104.27(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) - "@omnigraph/openapi": 0.109.36(graphql@16.13.1)(pino@9.14.0) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) + "@omnigraph/openapi": 0.109.36(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) graphql: 16.13.1 tslib: 2.8.1 transitivePeerDependencies: @@ -23031,15 +23158,15 @@ snapshots: - supports-color - winston - "@graphql-mesh/runtime@0.106.27(graphql@16.13.1)": + "@graphql-mesh/runtime@0.106.27(graphql@16.13.1)(ioredis@5.10.1)": dependencies: "@envelop/core": 5.5.1 "@envelop/extended-validation": 7.1.1(@envelop/core@5.5.1)(graphql@16.13.1) "@envelop/graphql-jit": 11.1.1(@envelop/core@5.5.1)(graphql@16.13.1) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/batch-delegate": 10.0.15(graphql@16.13.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/executor": 1.5.1(graphql@16.13.1) @@ -23054,12 +23181,12 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/store@0.104.27(graphql@16.13.1)": + "@graphql-mesh/store@0.104.27(graphql@16.13.1)(ioredis@5.10.1)": dependencies: "@graphql-inspector/core": 7.1.2(graphql@16.13.1) "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) graphql: 16.13.1 tslib: 2.8.1 @@ -23075,10 +23202,10 @@ snapshots: lodash.get: 4.4.2 tslib: 2.8.1 - "@graphql-mesh/transform-filter-schema@0.104.26(graphql@16.13.1)": + "@graphql-mesh/transform-filter-schema@0.104.26(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@graphql-tools/wrap": 11.1.9(graphql@16.13.1) @@ -23089,10 +23216,10 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/transform-rename@0.105.26(graphql@16.13.1)": + "@graphql-mesh/transform-rename@0.105.26(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@graphql-tools/wrap": 11.1.9(graphql@16.13.1) @@ -23103,13 +23230,13 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/transport-common@1.0.15(graphql@16.13.1)(pino@9.14.0)": + "@graphql-mesh/transport-common@1.0.15(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@envelop/core": 5.5.1 "@graphql-hive/logger": 1.1.0(pino@9.14.0) - "@graphql-hive/pubsub": 2.1.1 + "@graphql-hive/pubsub": 2.1.1(ioredis@5.10.1) "@graphql-hive/signal": 2.0.0 - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/executor": 1.5.1(graphql@16.13.1) "@graphql-tools/executor-common": 1.0.6(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) @@ -23122,13 +23249,13 @@ snapshots: - pino - winston - "@graphql-mesh/transport-rest@0.9.28(graphql@16.13.1)(pino@9.14.0)": + "@graphql-mesh/transport-rest@0.9.28(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@whatwg-node/fetch": 0.10.13 dset: 3.1.4 @@ -23145,9 +23272,9 @@ snapshots: - pino - winston - "@graphql-mesh/types@0.104.23(graphql@16.13.1)": + "@graphql-mesh/types@0.104.23(graphql@16.13.1)(ioredis@5.10.1)": dependencies: - "@graphql-hive/pubsub": 2.1.1 + "@graphql-hive/pubsub": 2.1.1(ioredis@5.10.1) "@graphql-tools/batch-delegate": 10.0.15(graphql@16.13.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) @@ -23160,12 +23287,12 @@ snapshots: - "@nats-io/nats-core" - ioredis - "@graphql-mesh/utils@0.104.25(graphql@16.13.1)": + "@graphql-mesh/utils@0.104.25(graphql@16.13.1)(ioredis@5.10.1)": dependencies: "@envelop/instrumentation": 1.0.0 "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/batch-delegate": 10.0.15(graphql@16.13.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) @@ -24040,7 +24167,6 @@ snapshots: "@inquirer/type": 3.0.10(@types/node@25.4.0) optionalDependencies: "@types/node": 25.4.0 - optional: true "@inquirer/core@10.3.2(@types/node@20.19.37)": dependencies: @@ -24067,7 +24193,6 @@ snapshots: yoctocolors-cjs: 2.1.3 optionalDependencies: "@types/node": 25.4.0 - optional: true "@inquirer/figures@1.0.15": {} @@ -24078,6 +24203,8 @@ snapshots: "@inquirer/type@3.0.10(@types/node@25.4.0)": optionalDependencies: "@types/node": 25.4.0 + + "@ioredis/commands@1.5.1": optional: true "@isaacs/cliui@8.0.2": @@ -24605,14 +24732,14 @@ snapshots: "@nolyfill/is-core-module@1.0.39": {} - "@omnigraph/json-schema@0.109.29(graphql@16.13.1)(pino@9.14.0)": + "@omnigraph/json-schema@0.109.29(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/transport-rest": 0.9.28(graphql@16.13.1)(pino@9.14.0) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/transport-common": 1.0.15(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/transport-rest": 0.9.28(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/delegate": 12.0.9(graphql@16.13.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) "@json-schema-tools/meta-schema": 1.8.0 @@ -24637,15 +24764,15 @@ snapshots: - pino - winston - "@omnigraph/openapi@0.109.36(graphql@16.13.1)(pino@9.14.0)": + "@omnigraph/openapi@0.109.36(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0)": dependencies: "@graphql-mesh/cross-helpers": 0.4.12(graphql@16.13.1) - "@graphql-mesh/fusion-composition": 0.8.32(graphql@16.13.1) + "@graphql-mesh/fusion-composition": 0.8.32(graphql@16.13.1)(ioredis@5.10.1) "@graphql-mesh/string-interpolation": 0.5.11(graphql@16.13.1) - "@graphql-mesh/types": 0.104.23(graphql@16.13.1) - "@graphql-mesh/utils": 0.104.25(graphql@16.13.1) + "@graphql-mesh/types": 0.104.23(graphql@16.13.1)(ioredis@5.10.1) + "@graphql-mesh/utils": 0.104.25(graphql@16.13.1)(ioredis@5.10.1) "@graphql-tools/utils": 11.0.0(graphql@16.13.1) - "@omnigraph/json-schema": 0.109.29(graphql@16.13.1)(pino@9.14.0) + "@omnigraph/json-schema": 0.109.29(graphql@16.13.1)(ioredis@5.10.1)(pino@9.14.0) change-case: 4.1.2 graphql: 16.13.1 json-machete: 0.97.6 @@ -25424,7 +25551,7 @@ snapshots: node-fetch: 3.3.2 tar: 6.2.1 - "@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))": + "@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))": dependencies: "@tanstack/react-query": 5.90.21(react@19.2.3) "@vanilla-extract/css": 1.17.3 @@ -25437,12 +25564,38 @@ snapshots: react-remove-scroll: 2.6.2(@types/react@19.2.8)(react@19.2.3) ua-parser-js: 1.0.40 viem: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) transitivePeerDependencies: - "@types/react" - babel-plugin-macros - typescript + "@redis/bloom@1.2.0(@redis/client@1.6.1)": + dependencies: + "@redis/client": 1.6.1 + + "@redis/client@1.6.1": + dependencies: + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + + "@redis/graph@1.1.1(@redis/client@1.6.1)": + dependencies: + "@redis/client": 1.6.1 + + "@redis/json@1.0.7(@redis/client@1.6.1)": + dependencies: + "@redis/client": 1.6.1 + + "@redis/search@1.2.0(@redis/client@1.6.1)": + dependencies: + "@redis/client": 1.6.1 + + "@redis/time-series@1.1.0(@redis/client@1.6.1)": + dependencies: + "@redis/client": 1.6.1 + "@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)": dependencies: big.js: 6.2.2 @@ -25465,11 +25618,11 @@ snapshots: - utf-8-validate - zod - "@reown/appkit-controllers@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@reown/appkit-controllers@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@reown/appkit-wallet": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.2.8)(react@19.2.3) viem: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: @@ -25500,12 +25653,12 @@ snapshots: - utf-8-validate - zod - "@reown/appkit-pay@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@reown/appkit-pay@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) + "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) lit: 3.3.0 valtio: 1.13.2(@types/react@19.2.8)(react@19.2.3) transitivePeerDependencies: @@ -25540,12 +25693,12 @@ snapshots: dependencies: buffer: 6.0.3 - "@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76)": + "@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) + "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) "@reown/appkit-wallet": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -25577,10 +25730,10 @@ snapshots: - valtio - zod - "@reown/appkit-ui@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@reown/appkit-ui@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@reown/appkit-wallet": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -25612,14 +25765,14 @@ snapshots: - utf-8-validate - zod - "@reown/appkit-utils@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76)": + "@reown/appkit-utils@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@reown/appkit-polyfills": 1.7.8 "@reown/appkit-wallet": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) "@walletconnect/logger": 2.1.2 - "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.2.8)(react@19.2.3) viem: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: @@ -25661,18 +25814,18 @@ snapshots: - typescript - utf-8-validate - "@reown/appkit@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@reown/appkit@1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@reown/appkit-common": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-pay": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-controllers": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-pay": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@reown/appkit-polyfills": 1.7.8 - "@reown/appkit-scaffold-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) - "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) + "@reown/appkit-scaffold-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) + "@reown/appkit-ui": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit-utils": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.8)(react@19.2.3))(zod@3.25.76) "@reown/appkit-wallet": 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - "@walletconnect/types": 2.21.0 - "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.0(ioredis@5.10.1) + "@walletconnect/universal-provider": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.2.8)(react@19.2.3) viem: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) @@ -25870,13 +26023,13 @@ snapshots: "@socket.io/component-emitter@3.1.2": {} - "@solana-program/system@0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)))": + "@solana-program/system@0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))": dependencies: - "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - "@solana-program/token@0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)))": + "@solana-program/token@0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))": dependencies: - "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/kit": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/accounts@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)": dependencies: @@ -26006,7 +26159,7 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - "@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))": + "@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))": dependencies: "@solana/accounts": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/addresses": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) @@ -26020,11 +26173,11 @@ snapshots: "@solana/rpc": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/rpc-parsed-types": 3.0.3(typescript@5.9.3) "@solana/rpc-spec-types": 3.0.3(typescript@5.9.3) - "@solana/rpc-subscriptions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/rpc-subscriptions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/rpc-types": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/signers": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/sysvars": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - "@solana/transaction-confirmation": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/transaction-confirmation": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/transaction-messages": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/transactions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) typescript: 5.9.3 @@ -26103,14 +26256,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - "@solana/rpc-subscriptions-channel-websocket@3.0.3(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))": + "@solana/rpc-subscriptions-channel-websocket@3.0.3(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))": dependencies: "@solana/errors": 3.0.3(typescript@5.9.3) "@solana/functional": 3.0.3(typescript@5.9.3) "@solana/rpc-subscriptions-spec": 3.0.3(typescript@5.9.3) "@solana/subscribable": 3.0.3(typescript@5.9.3) typescript: 5.9.3 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) "@solana/rpc-subscriptions-spec@3.0.3(typescript@5.9.3)": dependencies: @@ -26120,7 +26273,7 @@ snapshots: "@solana/subscribable": 3.0.3(typescript@5.9.3) typescript: 5.9.3 - "@solana/rpc-subscriptions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))": + "@solana/rpc-subscriptions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))": dependencies: "@solana/errors": 3.0.3(typescript@5.9.3) "@solana/fast-stable-stringify": 3.0.3(typescript@5.9.3) @@ -26128,7 +26281,7 @@ snapshots: "@solana/promises": 3.0.3(typescript@5.9.3) "@solana/rpc-spec-types": 3.0.3(typescript@5.9.3) "@solana/rpc-subscriptions-api": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - "@solana/rpc-subscriptions-channel-websocket": 3.0.3(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/rpc-subscriptions-channel-websocket": 3.0.3(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/rpc-subscriptions-spec": 3.0.3(typescript@5.9.3) "@solana/rpc-transformers": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/rpc-types": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) @@ -26213,7 +26366,7 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - "@solana/transaction-confirmation@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))": + "@solana/transaction-confirmation@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))": dependencies: "@solana/addresses": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/codecs-strings": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) @@ -26221,7 +26374,7 @@ snapshots: "@solana/keys": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/promises": 3.0.3(typescript@5.9.3) "@solana/rpc": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - "@solana/rpc-subscriptions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + "@solana/rpc-subscriptions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) "@solana/rpc-types": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/transaction-messages": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) "@solana/transactions": 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) @@ -27263,18 +27416,18 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.0.3 - "@wagmi/connectors@6.2.0(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)": + "@wagmi/connectors@6.2.0(4965d06122479b00bf04512a89004630)": dependencies: - "@base-org/account": 2.4.0(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + "@base-org/account": 2.4.0(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) "@coinbase/wallet-sdk": 4.3.6(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(zod@3.25.76) "@gemini-wallet/core": 0.3.2(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) "@metamask/sdk": 0.33.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) "@safe-global/safe-apps-provider": 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@safe-global/safe-apps-sdk": 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@wagmi/core": 2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - "@walletconnect/ethereum-provider": 2.21.1(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/ethereum-provider": 2.21.1(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) cbw-sdk: "@coinbase/wallet-sdk@3.9.3" - porto: 0.2.35(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)) + porto: 0.2.35(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)) viem: 2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.9.3 @@ -27332,21 +27485,21 @@ snapshots: - react - use-sync-external-store - "@walletconnect/core@2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/core@2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-provider": 1.0.14 "@walletconnect/jsonrpc-types": 1.0.4 "@walletconnect/jsonrpc-utils": 1.0.8 "@walletconnect/jsonrpc-ws-connection": 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.1.0 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.0 - "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.0(ioredis@5.10.1) + "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@walletconnect/window-getters": 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -27376,21 +27529,21 @@ snapshots: - utf-8-validate - zod - "@walletconnect/core@2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/core@2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-provider": 1.0.14 "@walletconnect/jsonrpc-types": 1.0.4 "@walletconnect/jsonrpc-utils": 1.0.8 "@walletconnect/jsonrpc-ws-connection": 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.1.0 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.1 - "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.1(ioredis@5.10.1) + "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@walletconnect/window-getters": 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -27424,18 +27577,18 @@ snapshots: dependencies: tslib: 1.14.1 - "@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: - "@reown/appkit": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@reown/appkit": 1.7.8(@types/react@19.2.8)(bufferutil@4.0.9)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@walletconnect/jsonrpc-http-connection": 1.0.8 "@walletconnect/jsonrpc-provider": 1.0.14 "@walletconnect/jsonrpc-types": 1.0.4 "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 - "@walletconnect/sign-client": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@walletconnect/types": 2.21.1 - "@walletconnect/universal-provider": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) + "@walletconnect/sign-client": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.1(ioredis@5.10.1) + "@walletconnect/universal-provider": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - "@azure/app-configuration" @@ -27512,11 +27665,11 @@ snapshots: - bufferutil - utf-8-validate - "@walletconnect/keyvaluestorage@1.1.1": + "@walletconnect/keyvaluestorage@1.1.1(ioredis@5.10.1)": dependencies: "@walletconnect/safe-json": 1.0.2 idb-keyval: 6.2.2 - unstorage: 1.17.3(idb-keyval@6.2.2) + unstorage: 1.17.3(idb-keyval@6.2.2)(ioredis@5.10.1) transitivePeerDependencies: - "@azure/app-configuration" - "@azure/cosmos" @@ -27558,16 +27711,16 @@ snapshots: dependencies: tslib: 1.14.1 - "@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: - "@walletconnect/core": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/core": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@walletconnect/events": 1.0.1 "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-utils": 1.0.8 "@walletconnect/logger": 2.1.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.0 - "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.0(ioredis@5.10.1) + "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - "@azure/app-configuration" @@ -27594,16 +27747,16 @@ snapshots: - utf-8-validate - zod - "@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: - "@walletconnect/core": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/core": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) "@walletconnect/events": 1.0.1 "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-utils": 1.0.8 "@walletconnect/logger": 2.1.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.1 - "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.1(ioredis@5.10.1) + "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - "@azure/app-configuration" @@ -27634,12 +27787,12 @@ snapshots: dependencies: tslib: 1.14.1 - "@walletconnect/types@2.21.0": + "@walletconnect/types@2.21.0(ioredis@5.10.1)": dependencies: "@walletconnect/events": 1.0.1 "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-types": 1.0.4 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -27663,12 +27816,12 @@ snapshots: - ioredis - uploadthing - "@walletconnect/types@2.21.1": + "@walletconnect/types@2.21.1(ioredis@5.10.1)": dependencies: "@walletconnect/events": 1.0.1 "@walletconnect/heartbeat": 1.2.2 "@walletconnect/jsonrpc-types": 1.0.4 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -27692,18 +27845,18 @@ snapshots: - ioredis - uploadthing - "@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@walletconnect/events": 1.0.1 "@walletconnect/jsonrpc-http-connection": 1.0.8 "@walletconnect/jsonrpc-provider": 1.0.14 "@walletconnect/jsonrpc-types": 1.0.4 "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 - "@walletconnect/sign-client": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@walletconnect/types": 2.21.0 - "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/sign-client": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.0(ioredis@5.10.1) + "@walletconnect/utils": 2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -27732,18 +27885,18 @@ snapshots: - utf-8-validate - zod - "@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@walletconnect/events": 1.0.1 "@walletconnect/jsonrpc-http-connection": 1.0.8 "@walletconnect/jsonrpc-provider": 1.0.14 "@walletconnect/jsonrpc-types": 1.0.4 "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/logger": 2.1.2 - "@walletconnect/sign-client": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - "@walletconnect/types": 2.21.1 - "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/sign-client": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + "@walletconnect/types": 2.21.1(ioredis@5.10.1) + "@walletconnect/utils": 2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -27772,18 +27925,18 @@ snapshots: - utf-8-validate - zod - "@walletconnect/utils@2.21.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/utils@2.21.0(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@noble/ciphers": 1.2.1 "@noble/curves": 1.8.1 "@noble/hashes": 1.7.1 "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.1.0 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.0 + "@walletconnect/types": 2.21.0(ioredis@5.10.1) "@walletconnect/window-getters": 1.0.1 "@walletconnect/window-metadata": 1.0.1 bs58: 6.0.0 @@ -27816,18 +27969,18 @@ snapshots: - utf-8-validate - zod - "@walletconnect/utils@2.21.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": + "@walletconnect/utils@2.21.1(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)": dependencies: "@noble/ciphers": 1.2.1 "@noble/curves": 1.8.1 "@noble/hashes": 1.7.1 "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/keyvaluestorage": 1.1.1(ioredis@5.10.1) "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.1.0 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.21.1 + "@walletconnect/types": 2.21.1(ioredis@5.10.1) "@walletconnect/window-getters": 1.0.1 "@walletconnect/window-metadata": 1.0.1 bs58: 6.0.0 @@ -28812,6 +28965,8 @@ snapshots: clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} + co@4.6.0: {} code-block-writer@13.0.3: {} @@ -29263,6 +29418,9 @@ snapshots: delayed-stream@1.0.0: {} + denque@2.1.0: + optional: true + dependency-graph@0.11.0: {} dependency-graph@1.0.0: {} @@ -30404,6 +30562,8 @@ snapshots: dependencies: is-property: 1.0.2 + generic-pool@3.9.0: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -30598,12 +30758,12 @@ snapshots: dependencies: graphql: 16.13.1 - graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: graphql: 16.13.1 optionalDependencies: crossws: 0.3.5 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optional: true graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): @@ -30895,6 +31055,21 @@ snapshots: dependencies: loose-envify: 1.4.0 + ioredis@5.10.1: + dependencies: + "@ioredis/commands": 1.5.1 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + optional: true + iron-webcrypto@1.2.1: {} is-absolute@1.0.0: @@ -31823,8 +31998,14 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.defaults@4.2.0: + optional: true + lodash.get@4.4.2: {} + lodash.isarguments@3.1.0: + optional: true + lodash.isequal@4.5.0: {} lodash.isplainobject@4.0.6: {} @@ -32122,7 +32303,6 @@ snapshots: typescript: 5.9.3 transitivePeerDependencies: - "@types/node" - optional: true multiformats@9.9.0: {} @@ -32906,7 +33086,7 @@ snapshots: pony-cause@2.1.11: {} - porto@0.2.35(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)): + porto@0.2.35(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)): dependencies: "@wagmi/core": 2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.12.7 @@ -32920,7 +33100,7 @@ snapshots: "@tanstack/react-query": 5.90.21(react@19.2.3) react: 19.2.3 typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) transitivePeerDependencies: - "@types/react" - immer @@ -33357,6 +33537,23 @@ snapshots: dependencies: esprima: 4.0.1 + redis-errors@1.2.0: + optional: true + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + optional: true + + redis@4.7.1: + dependencies: + "@redis/bloom": 1.2.0(@redis/client@1.6.1) + "@redis/client": 1.6.1 + "@redis/graph": 1.1.1(@redis/client@1.6.1) + "@redis/json": 1.0.7(@redis/client@1.6.1) + "@redis/search": 1.2.0(@redis/client@1.6.1) + "@redis/time-series": 1.1.0(@redis/client@1.6.1) + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -33882,6 +34079,9 @@ snapshots: dependencies: type-fest: 0.7.1 + standard-as-callback@2.1.0: + optional: true + standardwebhooks@1.0.0: dependencies: "@stablelib/base64": 1.0.1 @@ -34664,7 +34864,7 @@ snapshots: "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1 "@unrs/resolver-binding-win32-x64-msvc": 1.11.1 - unstorage@1.17.3(idb-keyval@6.2.2): + unstorage@1.17.3(idb-keyval@6.2.2)(ioredis@5.10.1): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -34676,6 +34876,7 @@ snapshots: ufo: 1.6.1 optionalDependencies: idb-keyval: 6.2.2 + ioredis: 5.10.1 until-async@3.0.2: {} @@ -35048,10 +35249,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76): dependencies: "@tanstack/react-query": 5.90.21(react@19.2.3) - "@wagmi/connectors": 6.2.0(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.3))(@types/react@19.2.8)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + "@wagmi/connectors": 6.2.0(4965d06122479b00bf04512a89004630) "@wagmi/core": 2.22.1(@tanstack/query-core@5.90.20)(@types/react@19.2.8)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.47.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) react: 19.2.3 use-sync-external-store: 1.4.0(react@19.2.3)