Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59d226512c | ||
|
|
778bf2cc4b | ||
|
|
97e5080fdf | ||
|
|
9f9fadf242 | ||
|
|
224c9d034f | ||
|
|
8b8dfd9bf9 | ||
|
|
70e52188a1 | ||
|
|
c82b606cd2 |
@@ -17,18 +17,21 @@ export async function resolveEns(
|
||||
ensName: await resolveName({
|
||||
address: ensNameOrAddress,
|
||||
client,
|
||||
}),
|
||||
}).catch(() => null),
|
||||
};
|
||||
}
|
||||
|
||||
if (!isValidENSName(ensNameOrAddress)) {
|
||||
throw new Error("Invalid ENS name");
|
||||
return {
|
||||
address: null,
|
||||
ensName: null,
|
||||
};
|
||||
}
|
||||
|
||||
const address = await resolveAddress({
|
||||
client,
|
||||
name: ensNameOrAddress,
|
||||
});
|
||||
}).catch(() => null);
|
||||
|
||||
if (!address) {
|
||||
return {
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
import "server-only";
|
||||
import { isProd } from "@/constants/env-utils";
|
||||
import { DASHBOARD_THIRDWEB_SECRET_KEY } from "@/constants/server-envs";
|
||||
|
||||
export type TokenPriceData = {
|
||||
price_usd: number;
|
||||
price_usd_cents: number;
|
||||
percent_change_24h: number;
|
||||
market_cap_usd: number;
|
||||
volume_24h_usd: number;
|
||||
volume_change_24h: number;
|
||||
holders: number;
|
||||
historical_prices: Array<{
|
||||
date: string;
|
||||
price_usd: number;
|
||||
price_usd_cents: number;
|
||||
}>;
|
||||
};
|
||||
|
||||
export async function getTokenPriceData(params: {
|
||||
chainId: number;
|
||||
contractAddress: string;
|
||||
}) {
|
||||
try {
|
||||
const url = new URL(
|
||||
`https://insight.${isProd ? "thirdweb" : "thirdweb-dev"}.com/v1/tokens/price`,
|
||||
);
|
||||
|
||||
url.searchParams.set("include_historical_prices", "true");
|
||||
url.searchParams.set("chain_id", params.chainId.toString());
|
||||
url.searchParams.set("address", params.contractAddress);
|
||||
url.searchParams.set("include_holders", "true");
|
||||
|
||||
const res = await fetch(url, {
|
||||
headers: {
|
||||
"x-secret-key": DASHBOARD_THIRDWEB_SECRET_KEY,
|
||||
},
|
||||
});
|
||||
if (!res.ok) {
|
||||
console.error("Failed to fetch token price data", await res.text());
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const json = await res.json();
|
||||
const priceData = json.data[0] as TokenPriceData | undefined;
|
||||
|
||||
return priceData;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
-264
@@ -1,264 +0,0 @@
|
||||
"use client";
|
||||
|
||||
import { differenceInCalendarDays, format } from "date-fns";
|
||||
import { ArrowDownIcon, ArrowUpIcon, InfoIcon } from "lucide-react";
|
||||
import { useMemo, useState } from "react";
|
||||
import { ThirdwebAreaChart } from "@/components/blocks/charts/area-chart";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { ToolTipLabel } from "@/components/ui/tooltip";
|
||||
import { cn } from "@/lib/utils";
|
||||
import type { TokenPriceData } from "../_apis/token-price-data";
|
||||
|
||||
function PriceChartUI(props: {
|
||||
showTimeOfDay: boolean;
|
||||
data: Array<{
|
||||
date: string;
|
||||
price_usd: number;
|
||||
price_usd_cents: number;
|
||||
}>;
|
||||
}) {
|
||||
const data = props.data.map((item) => ({
|
||||
price: item.price_usd,
|
||||
time: new Date(item.date).getTime(),
|
||||
}));
|
||||
|
||||
return (
|
||||
<ThirdwebAreaChart
|
||||
cardContentClassName="p-0"
|
||||
chartClassName="aspect-[1.5] lg:aspect-[3]"
|
||||
className="border-none bg-transparent p-0"
|
||||
config={{
|
||||
price: {
|
||||
color: "hsl(var(--chart-1))",
|
||||
label: "Price",
|
||||
},
|
||||
}}
|
||||
data={data}
|
||||
hideLabel={false}
|
||||
isPending={false}
|
||||
toolTipLabelFormatter={getTooltipLabelFormatter(props.showTimeOfDay)}
|
||||
toolTipValueFormatter={(value) => {
|
||||
return tokenPriceUSDFormatter.format(value as number);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
const tokenPriceUSDFormatter = new Intl.NumberFormat("en-US", {
|
||||
currency: "USD",
|
||||
maximumFractionDigits: 8,
|
||||
minimumFractionDigits: 0,
|
||||
notation: "compact",
|
||||
roundingMode: "halfEven",
|
||||
style: "currency",
|
||||
});
|
||||
|
||||
const marketCapFormatter = new Intl.NumberFormat("en-US", {
|
||||
currency: "USD",
|
||||
maximumFractionDigits: 0,
|
||||
minimumFractionDigits: 0,
|
||||
notation: "compact",
|
||||
roundingMode: "halfEven",
|
||||
style: "currency",
|
||||
});
|
||||
|
||||
const holdersFormatter = new Intl.NumberFormat("en-US", {
|
||||
maximumFractionDigits: 0,
|
||||
minimumFractionDigits: 0,
|
||||
notation: "compact",
|
||||
});
|
||||
|
||||
const percentChangeFormatter = new Intl.NumberFormat("en-US", {
|
||||
maximumFractionDigits: 2,
|
||||
minimumFractionDigits: 0,
|
||||
});
|
||||
|
||||
function getTooltipLabelFormatter(includeTimeOfDay: boolean) {
|
||||
return (_v: string, item: unknown) => {
|
||||
if (Array.isArray(item)) {
|
||||
const time = item[0].payload.time as number;
|
||||
return format(
|
||||
new Date(time),
|
||||
includeTimeOfDay ? "MMM d, yyyy hh:mm a" : "MMM d, yyyy",
|
||||
);
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
}
|
||||
|
||||
export function TokenStats(params: {
|
||||
chainId: number;
|
||||
contractAddress: string;
|
||||
tokenPriceData: TokenPriceData;
|
||||
}) {
|
||||
const [interval, setInterval] = useState<Interval>("max");
|
||||
|
||||
const filteredHistoricalPrices = useMemo(() => {
|
||||
const currentDate = new Date();
|
||||
|
||||
return params.tokenPriceData.historical_prices.filter((item) => {
|
||||
const date = new Date(item.date);
|
||||
const maxDiff =
|
||||
interval === "24h"
|
||||
? 1
|
||||
: interval === "7d"
|
||||
? 7
|
||||
: interval === "30d"
|
||||
? 30
|
||||
: interval === "1y"
|
||||
? 365
|
||||
: Number.MAX_SAFE_INTEGER;
|
||||
|
||||
return differenceInCalendarDays(currentDate, date) <= maxDiff;
|
||||
});
|
||||
}, [params.tokenPriceData, interval]);
|
||||
|
||||
const priceUsd = params.tokenPriceData.price_usd;
|
||||
const percentChange24h = params.tokenPriceData.percent_change_24h;
|
||||
const marketCap = params.tokenPriceData.market_cap_usd;
|
||||
const holders = params.tokenPriceData.holders;
|
||||
|
||||
const formattedAbsChange = percentChangeFormatter.format(
|
||||
Math.abs(percentChange24h),
|
||||
);
|
||||
|
||||
const isAlmostZeroChange =
|
||||
formattedAbsChange === percentChangeFormatter.format(0);
|
||||
|
||||
const formattedPriceUSD = tokenPriceUSDFormatter.format(priceUsd);
|
||||
|
||||
return (
|
||||
<div className="bg-card rounded-lg border">
|
||||
{/* price and change */}
|
||||
<div className="flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between p-4 lg:p-6">
|
||||
<div>
|
||||
<p className="mb-1 text-muted-foreground text-sm">Current Price</p>
|
||||
<div className="flex items-center gap-3">
|
||||
<p
|
||||
className={cn(
|
||||
"font-bold text-3xl lg:text-4xl tracking-tight",
|
||||
formattedPriceUSD.length > 8 && "text-2xl lg:text-4xl",
|
||||
)}
|
||||
>
|
||||
{typeof priceUsd === "number" ? formattedPriceUSD : priceUsd}
|
||||
</p>
|
||||
<Badge
|
||||
className="gap-2 lg:text-sm text-xs px-1.5"
|
||||
variant={
|
||||
isAlmostZeroChange
|
||||
? "default"
|
||||
: percentChange24h > 0
|
||||
? "success"
|
||||
: "destructive"
|
||||
}
|
||||
>
|
||||
<div className="flex items-center gap-0.5">
|
||||
{isAlmostZeroChange ? null : percentChange24h > 0 ? (
|
||||
<ArrowUpIcon className="size-3" />
|
||||
) : (
|
||||
<ArrowDownIcon className="size-3" />
|
||||
)}
|
||||
<span>
|
||||
{isAlmostZeroChange ? "~0%" : `${formattedAbsChange}%`}
|
||||
</span>
|
||||
</div>
|
||||
<span>(1d)</span>
|
||||
</Badge>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<IntervalSelector interval={interval} setInterval={setInterval} />
|
||||
</div>
|
||||
|
||||
<div className="px-0">
|
||||
<PriceChartUI
|
||||
data={filteredHistoricalPrices || []}
|
||||
showTimeOfDay={interval === "24h"}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="px-4 lg:px-6 py-4 mt-6 border-t border-dashed flex gap-6 [&>*:not(:first-child)]:border-l [&>*:not(:first-child)]:pl-5 [&>*]:grow">
|
||||
<TokenStat
|
||||
label="Market Cap"
|
||||
tooltip="Market capitalization is the total value of all tokens in circulation, calculated by multiplying the current price by the circulating supply"
|
||||
value={
|
||||
typeof marketCap === "number"
|
||||
? marketCapFormatter.format(marketCap)
|
||||
: marketCap
|
||||
}
|
||||
/>
|
||||
|
||||
<TokenStat
|
||||
label="Number of Holders"
|
||||
tooltip="The total number of unique wallet addresses that currently hold this token on the blockchain"
|
||||
value={
|
||||
// show 0 value as N/A
|
||||
holders === 0
|
||||
? "N/A"
|
||||
: typeof holders === "number"
|
||||
? holdersFormatter.format(holders)
|
||||
: holders
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function TokenStat(props: {
|
||||
value: string | number;
|
||||
label: string;
|
||||
tooltip: string;
|
||||
}) {
|
||||
return (
|
||||
<div className="flex flex-col gap-0.5">
|
||||
<div className="flex items-center gap-1.5">
|
||||
<p className="text-muted-foreground text-sm">{props.label}</p>
|
||||
<ToolTipLabel label={props.tooltip}>
|
||||
<InfoIcon className="size-3.5 text-muted-foreground" />
|
||||
</ToolTipLabel>
|
||||
</div>
|
||||
<div className="flex">
|
||||
<p className="font-semibold text-foreground text-xl tracking-tight">
|
||||
{props.value}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
type Interval = "24h" | "7d" | "30d" | "1y" | "max";
|
||||
|
||||
function IntervalSelector(props: {
|
||||
interval: Interval;
|
||||
setInterval: (timeframe: Interval) => void;
|
||||
}) {
|
||||
const intervals: Record<Interval, string> = {
|
||||
"1y": "1Y",
|
||||
"7d": "1W",
|
||||
"24h": "1D",
|
||||
"30d": "1M",
|
||||
max: "MAX",
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="flex gap-2">
|
||||
{Object.entries(intervals).map(([key, value]) => (
|
||||
<Button
|
||||
className={cn(
|
||||
"rounded-full px-2.5 py-1.5 h-auto bg-background text-xs lg:text-sm",
|
||||
props.interval === key && "border-active-border bg-accent",
|
||||
)}
|
||||
key={key}
|
||||
onClick={() => props.setInterval(key as Interval)}
|
||||
size="sm"
|
||||
tabIndex={0}
|
||||
variant="outline"
|
||||
>
|
||||
{value}
|
||||
</Button>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
export const mapChainIdToDexScreenerChainSlug = {
|
||||
8453: "base",
|
||||
1: "ethereum",
|
||||
56: "bsc",
|
||||
369: "pulsechain",
|
||||
137: "polygon",
|
||||
2741: "abstract",
|
||||
43114: "avalanche",
|
||||
999: "hyperliquid",
|
||||
480: "worldchain",
|
||||
42161: "arbitrum",
|
||||
388: "cronos",
|
||||
59144: "linea",
|
||||
1514: "story",
|
||||
397: "near",
|
||||
295: "hedera",
|
||||
146: "sonic",
|
||||
10: "optimism",
|
||||
80094: "berachain",
|
||||
57073: "ink",
|
||||
130: "unichain",
|
||||
5000: "mantle",
|
||||
324: "zksync",
|
||||
466: "apechain",
|
||||
1116: "core",
|
||||
250: "fantom",
|
||||
1868: "soneium",
|
||||
81457: "blast",
|
||||
2000: "dogechain",
|
||||
14: "flare",
|
||||
2040: "vana",
|
||||
4337: "beam",
|
||||
109: "shibarium",
|
||||
747: "flowevm",
|
||||
1088: "metis",
|
||||
1030: "conflux",
|
||||
43113: "avalanchedfk",
|
||||
534352: "scroll",
|
||||
747474: "katana",
|
||||
42220: "celo",
|
||||
1284: "moonbeam",
|
||||
4200: "merlinchain",
|
||||
2222: "kava",
|
||||
39797: "energi",
|
||||
34443: "mode",
|
||||
252: "fraxtal",
|
||||
48900: "zircuit",
|
||||
20: "elastos",
|
||||
100: "gnosischain",
|
||||
204: "opbnb",
|
||||
169: "manta",
|
||||
1313161554: "aurora",
|
||||
3073: "movement",
|
||||
4689: "iotex",
|
||||
23294: "oasissapphire",
|
||||
6001: "bouncebit",
|
||||
42170: "arbitrumnova",
|
||||
1101: "polygonzkevm",
|
||||
40: "telos",
|
||||
592: "astar",
|
||||
42262: "oasisemerald",
|
||||
1285: "moonriver",
|
||||
245022934: "neonevm",
|
||||
7777777: "zora",
|
||||
122: "fuse",
|
||||
321: "kcc",
|
||||
1234: "stepnetwork",
|
||||
106: "velas",
|
||||
167000: "taiko",
|
||||
288: "boba",
|
||||
42766: "zkfair",
|
||||
32520: "bitgert",
|
||||
82: "meter",
|
||||
} as const;
|
||||
|
||||
export type DexScreenerChainSlug =
|
||||
(typeof mapChainIdToDexScreenerChainSlug)[keyof typeof mapChainIdToDexScreenerChainSlug];
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
"use client";
|
||||
import { Spinner } from "@workspace/ui/components/spinner";
|
||||
import { useTheme } from "next-themes";
|
||||
import { useMemo } from "react";
|
||||
import { ClientOnly } from "@/components/blocks/client-only";
|
||||
import type { DexScreenerChainSlug } from "./dex-screener-chains";
|
||||
|
||||
function DexScreenerIframe(props: {
|
||||
chain: DexScreenerChainSlug;
|
||||
contractAddress: string;
|
||||
}) {
|
||||
const { theme } = useTheme();
|
||||
|
||||
const iframeUrl = useMemo(() => {
|
||||
const resolvedTheme = theme === "light" ? "light" : "dark";
|
||||
const url = new URL("https://dexscreener.com");
|
||||
url.pathname = `${props.chain}/${props.contractAddress}`;
|
||||
url.searchParams.set("embed", "1");
|
||||
url.searchParams.set("loadChartSettings", "0");
|
||||
url.searchParams.set("chartTheme", resolvedTheme);
|
||||
url.searchParams.set("theme", resolvedTheme);
|
||||
url.searchParams.set("trades", "1");
|
||||
url.searchParams.set("chartStyle", "1");
|
||||
url.searchParams.set("chartLeftToolbar", "0");
|
||||
url.searchParams.set("chartType", "usd");
|
||||
url.searchParams.set("interval", "15");
|
||||
url.searchParams.set("chartDefaultOnMobile", "1");
|
||||
return url.toString();
|
||||
}, [theme, props.chain, props.contractAddress]);
|
||||
|
||||
return (
|
||||
<iframe
|
||||
className="w-full h-[500px] lg:h-[1000px] rounded-lg overflow-hidden border bg-card"
|
||||
src={iframeUrl}
|
||||
title="DexScreener"
|
||||
></iframe>
|
||||
);
|
||||
}
|
||||
|
||||
export function DexScreener(props: {
|
||||
chain: DexScreenerChainSlug;
|
||||
contractAddress: string;
|
||||
}) {
|
||||
return (
|
||||
<ClientOnly
|
||||
ssr={
|
||||
<div className="w-full h-[500px] lg:h-[1000px] rounded-lg border bg-card items-center justify-center flex">
|
||||
<Spinner className="size-10" />
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<DexScreenerIframe
|
||||
chain={props.chain}
|
||||
contractAddress={props.contractAddress}
|
||||
/>
|
||||
</ClientOnly>
|
||||
);
|
||||
}
|
||||
+55
-58
@@ -9,12 +9,12 @@ import { resolveFunctionSelectors } from "@/lib/selectors";
|
||||
import { AssetPageView } from "../_components/asset-page-view";
|
||||
import { getContractCreator } from "../_components/getContractCreator";
|
||||
import { PageHeader } from "../_components/PageHeader";
|
||||
import { getTokenPriceData } from "./_apis/token-price-data";
|
||||
import { ContractHeaderUI } from "./_components/ContractHeader";
|
||||
import { TokenDropClaim } from "./_components/claim-tokens/claim-tokens-ui";
|
||||
import { ContractAnalyticsOverview } from "./_components/contract-analytics/contract-analytics";
|
||||
import { DexScreener } from "./_components/dex-screener";
|
||||
import { mapChainIdToDexScreenerChainSlug } from "./_components/dex-screener-chains";
|
||||
import { BuyTokenEmbed } from "./_components/PayEmbedSection";
|
||||
import { TokenStats } from "./_components/PriceChart";
|
||||
import { RecentTransfers } from "./_components/RecentTransfers";
|
||||
import { fetchTokenInfoFromBridge } from "./_utils/fetch-coin-info";
|
||||
import { getCurrencyMeta } from "./_utils/getCurrencyMeta";
|
||||
@@ -30,7 +30,6 @@ export async function ERC20PublicPage(props: {
|
||||
tokenDecimals,
|
||||
tokenInfoFromUB,
|
||||
functionSelectors,
|
||||
tokenPriceData,
|
||||
] = await Promise.all([
|
||||
getContractMetadata({
|
||||
contract: props.serverContract,
|
||||
@@ -45,10 +44,6 @@ export async function ERC20PublicPage(props: {
|
||||
tokenAddress: props.serverContract.address,
|
||||
}),
|
||||
resolveFunctionSelectors(props.serverContract),
|
||||
getTokenPriceData({
|
||||
chainId: props.serverContract.chain.id,
|
||||
contractAddress: props.serverContract.address,
|
||||
}),
|
||||
]);
|
||||
|
||||
if (!contractMetadata.image && tokenInfoFromUB) {
|
||||
@@ -83,10 +78,10 @@ export async function ERC20PublicPage(props: {
|
||||
return (
|
||||
<div className="flex grow flex-col">
|
||||
<AssetPageView assetType="coin" chainId={props.chainMetadata.chainId} />
|
||||
<PageHeader containerClassName="max-w-5xl" />
|
||||
<PageHeader containerClassName="max-w-7xl" />
|
||||
|
||||
<div className="border-b">
|
||||
<div className="container max-w-5xl">
|
||||
<div className="container max-w-7xl">
|
||||
<ContractHeaderUI
|
||||
chainMetadata={props.chainMetadata}
|
||||
clientContract={props.clientContract}
|
||||
@@ -105,57 +100,59 @@ export async function ERC20PublicPage(props: {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="container flex max-w-5xl grow flex-col pt-8 pb-10">
|
||||
<div className="flex grow flex-col gap-8">
|
||||
{showBuyEmbed && (
|
||||
<div className="sm:flex sm:justify-center w-full sm:border sm:border-dashed sm:bg-accent/20 sm:py-12 rounded-lg overflow-hidden relative">
|
||||
<GridPattern
|
||||
width={30}
|
||||
height={30}
|
||||
x={-1}
|
||||
y={-1}
|
||||
strokeDasharray={"4 2"}
|
||||
className="text-border dark:text-border/70"
|
||||
style={{
|
||||
maskImage:
|
||||
"linear-gradient(to bottom right,white,transparent,transparent)",
|
||||
}}
|
||||
/>
|
||||
<div className="sm:w-[420px] z-10">
|
||||
<BuyEmbed
|
||||
chainMetadata={props.chainMetadata}
|
||||
claimConditionMeta={claimConditionMeta}
|
||||
clientContract={props.clientContract}
|
||||
tokenAddress={props.clientContract.address}
|
||||
tokenDecimals={tokenDecimals}
|
||||
tokenName={contractMetadata.name}
|
||||
tokenSymbol={contractMetadata.symbol}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<div className="h-8" />
|
||||
|
||||
{tokenPriceData ? (
|
||||
<>
|
||||
<TokenStats
|
||||
chainId={props.chainMetadata.chainId}
|
||||
contractAddress={props.clientContract.address}
|
||||
tokenPriceData={tokenPriceData}
|
||||
/>
|
||||
|
||||
<ContractAnalyticsOverview
|
||||
chainId={props.chainMetadata.chainId}
|
||||
chainSlug={props.chainMetadata.slug}
|
||||
contractAddress={props.clientContract.address}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<ContractAnalyticsOverview
|
||||
chainId={props.chainMetadata.chainId}
|
||||
chainSlug={props.chainMetadata.slug}
|
||||
contractAddress={props.clientContract.address}
|
||||
{showBuyEmbed && (
|
||||
<div className="container max-w-7xl pb-10">
|
||||
<div className=" sm:flex sm:justify-center w-full sm:border sm:border-dashed sm:bg-accent/20 sm:py-12 rounded-lg overflow-hidden relative">
|
||||
<GridPattern
|
||||
width={30}
|
||||
height={30}
|
||||
x={-1}
|
||||
y={-1}
|
||||
strokeDasharray={"4 2"}
|
||||
className="text-border dark:text-border/70"
|
||||
style={{
|
||||
maskImage:
|
||||
"linear-gradient(to bottom right,white,transparent,transparent)",
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<div className="sm:w-[420px] z-10">
|
||||
<BuyEmbed
|
||||
chainMetadata={props.chainMetadata}
|
||||
claimConditionMeta={claimConditionMeta}
|
||||
clientContract={props.clientContract}
|
||||
tokenAddress={props.clientContract.address}
|
||||
tokenDecimals={tokenDecimals}
|
||||
tokenName={contractMetadata.name}
|
||||
tokenSymbol={contractMetadata.symbol}
|
||||
/>
|
||||
</div>
|
||||
</div>{" "}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{props.chainMetadata.chainId in mapChainIdToDexScreenerChainSlug && (
|
||||
<div className="container max-w-7xl pb-10">
|
||||
<DexScreener
|
||||
chain={
|
||||
mapChainIdToDexScreenerChainSlug[
|
||||
props.chainMetadata
|
||||
.chainId as keyof typeof mapChainIdToDexScreenerChainSlug
|
||||
]
|
||||
}
|
||||
contractAddress={props.clientContract.address}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="container flex max-w-7xl grow flex-col pb-10">
|
||||
<div className="flex grow flex-col gap-8">
|
||||
<ContractAnalyticsOverview
|
||||
chainId={props.chainMetadata.chainId}
|
||||
chainSlug={props.chainMetadata.slug}
|
||||
contractAddress={props.clientContract.address}
|
||||
/>
|
||||
|
||||
<RecentTransfers
|
||||
chainMetadata={props.chainMetadata}
|
||||
|
||||
+3
@@ -8,6 +8,7 @@ export type SMSCountryTiers = {
|
||||
tier3: string[];
|
||||
tier4: string[];
|
||||
tier5: string[];
|
||||
tier6: string[];
|
||||
};
|
||||
|
||||
export async function getSMSCountryTiers() {
|
||||
@@ -40,6 +41,7 @@ export async function getSMSCountryTiers() {
|
||||
tier3: [],
|
||||
tier4: [],
|
||||
tier5: [],
|
||||
tier6: [],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -53,6 +55,7 @@ export async function getSMSCountryTiers() {
|
||||
tier3: [],
|
||||
tier4: [],
|
||||
tier5: [],
|
||||
tier6: [],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -66,6 +66,7 @@ function Variants(props: { currentPlan: Team["billingPlan"] }) {
|
||||
tier3: ["FR", "DE", "ES", "IT"],
|
||||
tier4: ["JP", "KR", "MX", "RU"],
|
||||
tier5: ["BR", "AR", "CO", "CL", "PE", "VE", "SA"],
|
||||
tier6: ["RU", "PG", "UZ", "TZ", "KM", "BT"],
|
||||
}}
|
||||
teamId="bar"
|
||||
teamPlan={props.currentPlan}
|
||||
|
||||
+17
@@ -5,6 +5,7 @@ export const tierPricing = {
|
||||
tier3: "$0.10 per SMS",
|
||||
tier4: "$0.20 per SMS",
|
||||
tier5: "$0.40 per SMS",
|
||||
tier6: "$1.00 per SMS",
|
||||
} as const;
|
||||
|
||||
// Country names mapped to ISO codes
|
||||
@@ -21,6 +22,14 @@ export const countryNames: Record<string, string> = {
|
||||
AM: "Armenia",
|
||||
AO: "Angola",
|
||||
|
||||
// Tier 6
|
||||
RU: "Russia/Kazakhstan",
|
||||
PG: "Papua New Guinea",
|
||||
UZ: "Uzbekistan",
|
||||
TZ: "Tanzania",
|
||||
KM: "Comoros",
|
||||
BT: "Bhutan",
|
||||
|
||||
// Tier 3
|
||||
AR: "Argentina",
|
||||
AS: "American Samoa",
|
||||
@@ -244,6 +253,14 @@ export const countryPrefixes: Record<string, string> = {
|
||||
AM: "+374",
|
||||
AO: "+244",
|
||||
|
||||
// Tier 6
|
||||
RU: "+7",
|
||||
PG: "+675",
|
||||
UZ: "+998",
|
||||
TZ: "+255",
|
||||
KM: "+269",
|
||||
BT: "+975",
|
||||
|
||||
// Tier 3
|
||||
AR: "+54",
|
||||
AS: "+1",
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @thirdweb-dev/nebula
|
||||
|
||||
## 0.2.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`97e5080`](https://github.com/thirdweb-dev/js/commit/97e5080fdfd5b8b1106141012bdee2db2d27ae4c)]:
|
||||
- thirdweb@5.105.47
|
||||
|
||||
## 0.2.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`224c9d0`](https://github.com/thirdweb-dev/js/commit/224c9d034f274c3e6cf510d3508856fc36501c63)]:
|
||||
- thirdweb@5.105.46
|
||||
|
||||
## 0.2.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -57,5 +57,5 @@
|
||||
"type": "module",
|
||||
"types": "./dist/types/exports/thirdweb.d.ts",
|
||||
"typings": "./dist/types/exports/thirdweb.d.ts",
|
||||
"version": "0.2.45"
|
||||
"version": "0.2.47"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# thirdweb
|
||||
|
||||
## 5.105.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#8048](https://github.com/thirdweb-dev/js/pull/8048) [`97e5080`](https://github.com/thirdweb-dev/js/commit/97e5080fdfd5b8b1106141012bdee2db2d27ae4c) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Fix fiat payments with no wallets connected
|
||||
|
||||
## 5.105.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#8046](https://github.com/thirdweb-dev/js/pull/8046) [`224c9d0`](https://github.com/thirdweb-dev/js/commit/224c9d034f274c3e6cf510d3508856fc36501c63) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Improve WalletConnect chain switching reliability
|
||||
|
||||
## 5.105.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
"@tanstack/react-query": "5.81.5",
|
||||
"@thirdweb-dev/engine": "workspace:*",
|
||||
"@thirdweb-dev/insight": "workspace:*",
|
||||
"@walletconnect/sign-client": "2.20.1",
|
||||
"@walletconnect/universal-provider": "2.21.4",
|
||||
"@walletconnect/sign-client": "2.21.8",
|
||||
"@walletconnect/universal-provider": "2.21.8",
|
||||
"abitype": "1.0.8",
|
||||
"cross-spawn": "7.0.6",
|
||||
"fuse.js": "7.1.0",
|
||||
@@ -417,5 +417,5 @@
|
||||
}
|
||||
},
|
||||
"typings": "./dist/types/exports/thirdweb.d.ts",
|
||||
"version": "5.105.45"
|
||||
"version": "5.105.47"
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
|
||||
"name": "Doodle #1",
|
||||
"uri": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
||||
},
|
||||
"owner": "0x620b70123fB810F6C653DA7644b5dD0b6312e4D8",
|
||||
"owner": null,
|
||||
"tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
|
||||
"tokenURI": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
||||
"type": "ERC721",
|
||||
|
||||
@@ -154,6 +154,11 @@ export function useSendTransactionCore(args: {
|
||||
await switchChain(tx.chain);
|
||||
// in smart wallet case, account may change after chain switch
|
||||
_account = wallet.getAccount();
|
||||
|
||||
// ensure that the account has switched to the correct chain
|
||||
if (wallet.getChain()?.id !== tx.chain.id) {
|
||||
throw new Error(`Could not switch to chain ${tx.chain.id}`);
|
||||
}
|
||||
}
|
||||
|
||||
const account = _account;
|
||||
|
||||
@@ -38,7 +38,7 @@ interface StepExecutorOptions {
|
||||
/** Prepared quote returned by Bridge.prepare */
|
||||
request: BridgePrepareRequest;
|
||||
/** Wallet instance providing getAccount() & sendTransaction */
|
||||
wallet: Wallet;
|
||||
wallet?: Wallet;
|
||||
/** Window adapter for opening on-ramp URLs (web / RN) */
|
||||
windowAdapter: WindowAdapter;
|
||||
/** Thirdweb client for API calls */
|
||||
@@ -408,6 +408,14 @@ export function useStepExecutor(
|
||||
abortControllerRef.current = abortController;
|
||||
|
||||
try {
|
||||
if (flatTxs.length > 0 && !wallet) {
|
||||
throw new ApiError({
|
||||
code: "INVALID_INPUT",
|
||||
message: "No wallet provided to execute transactions",
|
||||
statusCode: 400,
|
||||
});
|
||||
}
|
||||
|
||||
// Execute onramp first if configured and not already completed
|
||||
if (preparedQuote.type === "onramp" && onrampStatus === "pending") {
|
||||
await executeOnramp(
|
||||
@@ -417,89 +425,98 @@ export function useStepExecutor(
|
||||
);
|
||||
}
|
||||
|
||||
// Then execute transactions
|
||||
const account = wallet.getAccount();
|
||||
if (!account) {
|
||||
throw new ApiError({
|
||||
code: "INVALID_INPUT",
|
||||
message: "Wallet not connected",
|
||||
statusCode: 400,
|
||||
});
|
||||
}
|
||||
|
||||
// Start from where we left off, or from the beginning
|
||||
const startIndex = currentTxIndex ?? 0;
|
||||
|
||||
for (let i = startIndex; i < flatTxs.length; i++) {
|
||||
if (abortController.signal.aborted) {
|
||||
break;
|
||||
if (flatTxs.length > 0) {
|
||||
// Then execute transactions
|
||||
if (!wallet) {
|
||||
throw new ApiError({
|
||||
code: "INVALID_INPUT",
|
||||
message: "No wallet provided to execute transactions",
|
||||
statusCode: 400,
|
||||
});
|
||||
}
|
||||
const account = wallet.getAccount();
|
||||
if (!account) {
|
||||
throw new ApiError({
|
||||
code: "INVALID_INPUT",
|
||||
message: "Wallet not connected",
|
||||
statusCode: 400,
|
||||
});
|
||||
}
|
||||
|
||||
const currentTx = flatTxs[i];
|
||||
if (!currentTx) {
|
||||
continue; // Skip invalid index
|
||||
}
|
||||
// Start from where we left off, or from the beginning
|
||||
const startIndex = currentTxIndex ?? 0;
|
||||
|
||||
setCurrentTxIndex(i);
|
||||
const currentStepData = preparedQuote.steps[currentTx._stepIndex];
|
||||
if (!currentStepData) {
|
||||
throw new Error(`Invalid step index: ${currentTx._stepIndex}`);
|
||||
}
|
||||
|
||||
// switch chain if needed
|
||||
if (currentTx.chainId !== wallet.getChain()?.id) {
|
||||
await wallet.switchChain(getCachedChain(currentTx.chainId));
|
||||
}
|
||||
|
||||
// Check if we can batch transactions
|
||||
const canBatch =
|
||||
account.sendBatchTransaction !== undefined && i < flatTxs.length - 1; // Not the last transaction
|
||||
|
||||
if (canBatch) {
|
||||
// Find consecutive transactions on the same chain
|
||||
const batchTxs: FlattenedTx[] = [currentTx];
|
||||
let j = i + 1;
|
||||
while (j < flatTxs.length) {
|
||||
const nextTx = flatTxs[j];
|
||||
if (!nextTx || nextTx.chainId !== currentTx.chainId) {
|
||||
break;
|
||||
}
|
||||
batchTxs.push(nextTx);
|
||||
j++;
|
||||
for (let i = startIndex; i < flatTxs.length; i++) {
|
||||
if (abortController.signal.aborted) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Execute batch if we have multiple transactions
|
||||
if (batchTxs.length > 1) {
|
||||
await executeBatch(
|
||||
batchTxs,
|
||||
account,
|
||||
completedStatusResults,
|
||||
abortController.signal,
|
||||
);
|
||||
const currentTx = flatTxs[i];
|
||||
if (!currentTx) {
|
||||
continue; // Skip invalid index
|
||||
}
|
||||
|
||||
// Mark all batched transactions as completed
|
||||
for (const tx of batchTxs) {
|
||||
setCompletedTxs((prev) => new Set(prev).add(tx._index));
|
||||
setCurrentTxIndex(i);
|
||||
const currentStepData = preparedQuote.steps[currentTx._stepIndex];
|
||||
if (!currentStepData) {
|
||||
throw new Error(`Invalid step index: ${currentTx._stepIndex}`);
|
||||
}
|
||||
|
||||
// switch chain if needed
|
||||
if (currentTx.chainId !== wallet.getChain()?.id) {
|
||||
await wallet.switchChain(getCachedChain(currentTx.chainId));
|
||||
}
|
||||
|
||||
// Check if we can batch transactions
|
||||
const canBatch =
|
||||
account.sendBatchTransaction !== undefined &&
|
||||
i < flatTxs.length - 1; // Not the last transaction
|
||||
|
||||
if (canBatch) {
|
||||
// Find consecutive transactions on the same chain
|
||||
const batchTxs: FlattenedTx[] = [currentTx];
|
||||
let j = i + 1;
|
||||
while (j < flatTxs.length) {
|
||||
const nextTx = flatTxs[j];
|
||||
if (!nextTx || nextTx.chainId !== currentTx.chainId) {
|
||||
break;
|
||||
}
|
||||
batchTxs.push(nextTx);
|
||||
j++;
|
||||
}
|
||||
|
||||
// Skip ahead
|
||||
i = j - 1;
|
||||
continue;
|
||||
// Execute batch if we have multiple transactions
|
||||
if (batchTxs.length > 1) {
|
||||
await executeBatch(
|
||||
batchTxs,
|
||||
account,
|
||||
completedStatusResults,
|
||||
abortController.signal,
|
||||
);
|
||||
|
||||
// Mark all batched transactions as completed
|
||||
for (const tx of batchTxs) {
|
||||
setCompletedTxs((prev) => new Set(prev).add(tx._index));
|
||||
}
|
||||
|
||||
// Skip ahead
|
||||
i = j - 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Execute single transaction
|
||||
await executeSingleTx(
|
||||
currentTx,
|
||||
account,
|
||||
completedStatusResults,
|
||||
abortController.signal,
|
||||
);
|
||||
|
||||
// Mark transaction as completed
|
||||
setCompletedTxs((prev) => new Set(prev).add(currentTx._index));
|
||||
}
|
||||
|
||||
// Execute single transaction
|
||||
await executeSingleTx(
|
||||
currentTx,
|
||||
account,
|
||||
completedStatusResults,
|
||||
abortController.signal,
|
||||
);
|
||||
|
||||
// Mark transaction as completed
|
||||
setCompletedTxs((prev) => new Set(prev).add(currentTx._index));
|
||||
}
|
||||
|
||||
// All done - check if we actually completed everything
|
||||
if (!abortController.signal.aborted) {
|
||||
setCurrentTxIndex(undefined);
|
||||
|
||||
@@ -29,7 +29,7 @@ export type PaymentMethod =
|
||||
}
|
||||
| {
|
||||
type: "fiat";
|
||||
payerWallet: Wallet;
|
||||
payerWallet?: Wallet;
|
||||
currency: string;
|
||||
onramp: "stripe" | "coinbase" | "transak";
|
||||
};
|
||||
|
||||
@@ -369,8 +369,7 @@ export function BridgeOrchestrator({
|
||||
|
||||
{state.value === "execute" &&
|
||||
state.context.quote &&
|
||||
state.context.request &&
|
||||
state.context.selectedPaymentMethod?.payerWallet && (
|
||||
state.context.request && (
|
||||
<StepRunner
|
||||
autoStart={true}
|
||||
client={client}
|
||||
|
||||
@@ -193,6 +193,11 @@ export type BuyWidgetProps = {
|
||||
* Custom label for the main action button.
|
||||
*/
|
||||
buttonLabel?: string;
|
||||
|
||||
/**
|
||||
* The receiver address for the purchased funds.
|
||||
*/
|
||||
receiverAddress?: Address;
|
||||
};
|
||||
|
||||
// Enhanced UIOptions to handle unsupported token state
|
||||
@@ -455,7 +460,7 @@ export function BuyWidget(props: BuyWidgetProps) {
|
||||
paymentMethods={props.paymentMethods}
|
||||
presetOptions={props.presetOptions}
|
||||
purchaseData={props.purchaseData}
|
||||
receiverAddress={undefined}
|
||||
receiverAddress={props.receiverAddress}
|
||||
uiOptions={bridgeDataQuery.data.data}
|
||||
showThirdwebBranding={props.showThirdwebBranding}
|
||||
/>
|
||||
|
||||
@@ -133,6 +133,7 @@ export function QuoteLoader({
|
||||
toChainId: destinationToken.chainId,
|
||||
toToken: destinationToken.address,
|
||||
});
|
||||
return true;
|
||||
},
|
||||
queryKey: ["loading_quote", paymentMethod.type],
|
||||
});
|
||||
|
||||
@@ -30,7 +30,7 @@ interface StepRunnerProps {
|
||||
/**
|
||||
* Wallet instance for executing transactions
|
||||
*/
|
||||
wallet: Wallet;
|
||||
wallet?: Wallet;
|
||||
|
||||
/**
|
||||
* Thirdweb client for API calls
|
||||
|
||||
@@ -101,6 +101,7 @@ export function PaymentDetails({
|
||||
: preparedQuote.intent.destinationTokenAddress,
|
||||
});
|
||||
}
|
||||
return true;
|
||||
},
|
||||
queryKey: ["payment_details", preparedQuote.type],
|
||||
});
|
||||
@@ -239,7 +240,7 @@ export function PaymentDetails({
|
||||
receiver={preparedQuote.intent.receiver}
|
||||
sender={
|
||||
preparedQuote.intent.sender ||
|
||||
paymentMethod.payerWallet.getAccount()?.address
|
||||
paymentMethod.payerWallet?.getAccount()?.address
|
||||
}
|
||||
toAmount={displayData.destinationAmount}
|
||||
toToken={displayData.destinationToken}
|
||||
|
||||
@@ -196,15 +196,17 @@ export function PaymentSelection({
|
||||
const handleOnrampProviderSelected = (
|
||||
provider: "coinbase" | "stripe" | "transak",
|
||||
) => {
|
||||
if (!payerWallet) {
|
||||
onError(new Error("No wallet available for fiat payment"));
|
||||
const recipientAddress =
|
||||
receiverAddress || payerWallet?.getAccount()?.address;
|
||||
if (!recipientAddress) {
|
||||
onError(new Error("No recipient address available for fiat payment"));
|
||||
return;
|
||||
}
|
||||
|
||||
const fiatPaymentMethod: PaymentMethod = {
|
||||
currency: "USD",
|
||||
currency: currency || "USD",
|
||||
onramp: provider,
|
||||
payerWallet, // Default to USD for now
|
||||
payerWallet,
|
||||
type: "fiat",
|
||||
};
|
||||
handlePaymentMethodSelected(fiatPaymentMethod);
|
||||
@@ -307,7 +309,9 @@ export function PaymentSelection({
|
||||
country={country}
|
||||
client={client}
|
||||
onProviderSelected={handleOnrampProviderSelected}
|
||||
toAddress={receiverAddress || ""}
|
||||
toAddress={
|
||||
receiverAddress || payerWallet?.getAccount()?.address || ""
|
||||
}
|
||||
toAmount={destinationAmount}
|
||||
toChainId={destinationToken.chainId}
|
||||
toTokenAddress={destinationToken.address}
|
||||
|
||||
@@ -36,6 +36,7 @@ export function FiatValue(
|
||||
props.chain.id,
|
||||
getTokenAddress(props.token),
|
||||
deferredTokenAmount,
|
||||
props.currency,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
@@ -483,6 +483,8 @@ export function createWallet<const ID extends WalletId>(
|
||||
id,
|
||||
subscribe: emitter.subscribe,
|
||||
switchChain: async (c) => {
|
||||
// TODO: this should actually throw an error if the chain switch fails
|
||||
// but our useSwitchActiveWalletChain hook currently doesn't handle this
|
||||
try {
|
||||
await handleSwitchChain(c);
|
||||
chain = c;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { signLoginPayload } from "../../../../auth/core/sign-login-payload.js";
|
||||
import type { LoginPayload } from "../../../../auth/core/types.js";
|
||||
import type { Chain } from "../../../../chains/types.js";
|
||||
import { getCachedChain } from "../../../../chains/utils.js";
|
||||
import type { ThirdwebClient } from "../../../../client/client.js";
|
||||
import { getClientFetch } from "../../../../utils/fetch.js";
|
||||
import { stringify } from "../../../../utils/json.js";
|
||||
@@ -14,14 +14,14 @@ import type { AuthStoredTokenWithCookieReturnType } from "./types.js";
|
||||
*/
|
||||
export async function siweAuthenticate(args: {
|
||||
wallet: Wallet;
|
||||
chain: Chain;
|
||||
client: ThirdwebClient;
|
||||
ecosystem?: Ecosystem;
|
||||
}): Promise<AuthStoredTokenWithCookieReturnType> {
|
||||
const { wallet, chain, client, ecosystem } = args;
|
||||
const { wallet, client, ecosystem } = args;
|
||||
const siweChain = getCachedChain(1); // always use mainnet for SIWE for wide wallet compatibility
|
||||
// only connect if the wallet doesn't already have an account
|
||||
const account =
|
||||
wallet.getAccount() || (await wallet.connect({ chain, client }));
|
||||
wallet.getAccount() || (await wallet.connect({ chain: siweChain, client }));
|
||||
const clientFetch = getClientFetch(client, ecosystem);
|
||||
|
||||
const payload = await (async () => {
|
||||
@@ -31,7 +31,7 @@ export async function siweAuthenticate(args: {
|
||||
ecosystem: args.ecosystem,
|
||||
});
|
||||
const res = await clientFetch(
|
||||
`${path}&address=${account.address}&chainId=${chain.id}`,
|
||||
`${path}&address=${account.address}&chainId=${siweChain.id}`,
|
||||
);
|
||||
|
||||
if (!res.ok) throw new Error("Failed to generate SIWE login payload");
|
||||
|
||||
@@ -183,7 +183,6 @@ export class InAppNativeConnector implements InAppConnector {
|
||||
"../core/authentication/siwe.js"
|
||||
);
|
||||
return siweAuthenticate({
|
||||
chain: params.chain,
|
||||
client: this.client,
|
||||
ecosystem: params.ecosystem,
|
||||
wallet: params.wallet,
|
||||
|
||||
@@ -104,7 +104,6 @@ describe("InAppWebConnector.connect", () => {
|
||||
});
|
||||
|
||||
expect(siweAuthenticate).toHaveBeenCalledWith({
|
||||
chain: ethereum,
|
||||
client: TEST_CLIENT,
|
||||
ecosystem: undefined,
|
||||
wallet: mockWallet,
|
||||
|
||||
@@ -365,7 +365,6 @@ export class InAppWebConnector implements InAppConnector {
|
||||
}
|
||||
case "wallet": {
|
||||
return siweAuthenticate({
|
||||
chain: args.chain,
|
||||
client: this.client,
|
||||
ecosystem: this.ecosystem,
|
||||
wallet: args.wallet,
|
||||
|
||||
@@ -132,7 +132,7 @@ export async function connectWC(
|
||||
...(wcOptions?.pairingTopic
|
||||
? { pairingTopic: wcOptions?.pairingTopic }
|
||||
: {}),
|
||||
namespaces: {
|
||||
optionalNamespaces: {
|
||||
[NAMESPACE]: {
|
||||
chains: chainsToRequest,
|
||||
events: ["chainChanged", "accountsChanged"],
|
||||
@@ -157,14 +157,8 @@ export async function connectWC(
|
||||
);
|
||||
const currentChainId = chainsToRequest[0]?.split(":")[1] || 1;
|
||||
const providerChainId = normalizeChainId(currentChainId);
|
||||
const accounts: string[] = await provider.request(
|
||||
{
|
||||
method: "eth_requestAccounts",
|
||||
params: [],
|
||||
},
|
||||
`eip155:${providerChainId}`,
|
||||
);
|
||||
const address = accounts[0];
|
||||
const account = firstAccountOn(provider.session, `eip155:1`); // grab the address from mainnet
|
||||
const address = account;
|
||||
if (!address) {
|
||||
throw new Error("No accounts found on provider.");
|
||||
}
|
||||
@@ -202,6 +196,109 @@ export async function connectWC(
|
||||
);
|
||||
}
|
||||
|
||||
async function ensureTargetChain(
|
||||
provider: Awaited<ReturnType<typeof initProvider>>,
|
||||
chain: Chain,
|
||||
walletInfo: WalletInfo,
|
||||
) {
|
||||
if (!provider.session) {
|
||||
throw new Error("No session found on provider.");
|
||||
}
|
||||
const TARGET_CAIP = `eip155:${chain.id}`;
|
||||
const TARGET_HEX = numberToHex(chain.id);
|
||||
|
||||
// Fast path: already enabled
|
||||
if (hasChainEnabled(provider.session, TARGET_CAIP)) {
|
||||
provider.setDefaultChain(TARGET_CAIP);
|
||||
return;
|
||||
}
|
||||
|
||||
// 1) Try switch
|
||||
try {
|
||||
await requestAndOpenWallet({
|
||||
provider,
|
||||
payload: {
|
||||
method: "wallet_switchEthereumChain",
|
||||
params: [{ chainId: TARGET_HEX }],
|
||||
},
|
||||
chain: TARGET_CAIP, // route to target
|
||||
walletInfo,
|
||||
});
|
||||
provider.setDefaultChain(TARGET_CAIP);
|
||||
return;
|
||||
} catch (err: any) {
|
||||
const code = err?.code ?? err?.data?.originalError?.code;
|
||||
// 4001 user rejected; stop
|
||||
if (code === 4001) throw new Error("User rejected chain switch");
|
||||
// fall through on 4902 or unknown -> try add
|
||||
}
|
||||
|
||||
// 2) Add the chain via any chain we already have
|
||||
const routeChain = anyRoutableChain(provider.session);
|
||||
if (!routeChain)
|
||||
throw new Error("No routable chain to send wallet_addEthereumChain");
|
||||
|
||||
try {
|
||||
await requestAndOpenWallet({
|
||||
provider,
|
||||
payload: {
|
||||
method: "wallet_addEthereumChain",
|
||||
params: [
|
||||
{
|
||||
chainId: TARGET_HEX,
|
||||
chainName: chain.name,
|
||||
nativeCurrency: chain.nativeCurrency,
|
||||
rpcUrls: [chain.rpc],
|
||||
blockExplorerUrls: [chain.blockExplorers?.[0]?.url ?? ""],
|
||||
},
|
||||
],
|
||||
},
|
||||
chain: routeChain, // route via known-good chain, not the target
|
||||
walletInfo,
|
||||
});
|
||||
} catch (err: any) {
|
||||
const code = err?.code ?? err?.data?.originalError?.code;
|
||||
if (code === 4001) throw new Error("User rejected add chain");
|
||||
throw new Error(`Add chain failed: ${err?.message || String(err)}`);
|
||||
}
|
||||
|
||||
// 3) Re-try switch after add
|
||||
await requestAndOpenWallet({
|
||||
provider,
|
||||
payload: {
|
||||
method: "wallet_switchEthereumChain",
|
||||
params: [{ chainId: TARGET_HEX }],
|
||||
},
|
||||
chain: TARGET_CAIP,
|
||||
walletInfo,
|
||||
});
|
||||
provider.setDefaultChain(TARGET_CAIP);
|
||||
|
||||
// 4) Verify enablement
|
||||
if (!hasChainEnabled(provider.session, TARGET_CAIP)) {
|
||||
throw new Error("Target chain still not enabled by wallet");
|
||||
}
|
||||
}
|
||||
|
||||
type WCSession = Awaited<ReturnType<typeof UniversalProvider.init>>["session"];
|
||||
|
||||
function getNS(session: WCSession) {
|
||||
return session?.namespaces?.eip155;
|
||||
}
|
||||
function hasChainEnabled(session: WCSession, caip: string) {
|
||||
const ns = getNS(session);
|
||||
return !!ns?.accounts?.some((a) => a.startsWith(`${caip}:`));
|
||||
}
|
||||
function firstAccountOn(session: WCSession, caip: string): string | null {
|
||||
const ns = getNS(session);
|
||||
const hit = ns?.accounts?.find((a) => a.startsWith(`${caip}:`));
|
||||
return hit ? (hit.split(":")[2] ?? null) : null;
|
||||
}
|
||||
function anyRoutableChain(session: WCSession): string | null {
|
||||
const ns = getNS(session);
|
||||
return ns?.accounts?.[0]?.split(":")?.slice(0, 2)?.join(":") ?? null; // e.g. "eip155:1"
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto connect to already connected wallet connect session.
|
||||
* @internal
|
||||
@@ -545,14 +642,17 @@ function onConnect(
|
||||
account,
|
||||
chain,
|
||||
disconnect,
|
||||
(newChain) => switchChainWC(provider, newChain),
|
||||
(newChain) => switchChainWC(provider, newChain, walletInfo),
|
||||
];
|
||||
}
|
||||
|
||||
async function switchChainWC(provider: WCProvider, chain: Chain) {
|
||||
const chainId = chain.id;
|
||||
async function switchChainWC(
|
||||
provider: WCProvider,
|
||||
chain: Chain,
|
||||
walletInfo: WalletInfo,
|
||||
) {
|
||||
try {
|
||||
provider.setDefaultChain(`eip155:${chainId}`);
|
||||
await ensureTargetChain(provider, chain, walletInfo);
|
||||
} catch (error) {
|
||||
const message =
|
||||
typeof error === "string" ? error : (error as ProviderRpcError)?.message;
|
||||
@@ -605,7 +705,10 @@ function getChainsToRequest(options: {
|
||||
chainIds.push(chain.id);
|
||||
}
|
||||
|
||||
if (!options.chain && optionalChains.length === 0) {
|
||||
// always include mainnet
|
||||
// many wallets only support a handful of chains, but mainnet is always supported
|
||||
// we will add additional chains in switchChain if needed
|
||||
if (!chainIds.includes(1)) {
|
||||
rpcMap[1] = getCachedChain(1).rpc;
|
||||
chainIds.push(1);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# @thirdweb-dev/wagmi-adapter
|
||||
|
||||
## 0.2.144
|
||||
|
||||
## 0.2.143
|
||||
|
||||
## 0.2.142
|
||||
|
||||
## 0.2.141
|
||||
|
||||
@@ -55,5 +55,5 @@
|
||||
"type": "module",
|
||||
"types": "./dist/types/exports/thirdweb.d.ts",
|
||||
"typings": "./dist/types/exports/thirdweb.d.ts",
|
||||
"version": "0.2.142"
|
||||
"version": "0.2.144"
|
||||
}
|
||||
|
||||
Generated
+74
-236
@@ -518,7 +518,7 @@ importers:
|
||||
version: 9.0.15([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))
|
||||
'@storybook/nextjs':
|
||||
specifier: 9.0.15
|
||||
version: 9.0.15([email protected](@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])
|
||||
version: 9.0.15([email protected](@babel/[email protected])(@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])
|
||||
'@types/node':
|
||||
specifier: 22.14.1
|
||||
version: 22.14.1
|
||||
@@ -1331,11 +1331,11 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../insight
|
||||
'@walletconnect/sign-client':
|
||||
specifier: 2.20.1
|
||||
version: 2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
specifier: 2.21.8
|
||||
version: 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/universal-provider':
|
||||
specifier: 2.21.4
|
||||
version: 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
specifier: 2.21.8
|
||||
version: 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
abitype:
|
||||
specifier: 1.0.8
|
||||
version: 1.0.8([email protected])([email protected])
|
||||
@@ -1607,7 +1607,7 @@ importers:
|
||||
version: 9.0.15([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))
|
||||
'@storybook/nextjs':
|
||||
specifier: 9.0.15
|
||||
version: 9.0.15([email protected](@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])
|
||||
version: 9.0.15([email protected](@babel/[email protected])(@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])
|
||||
'@types/react':
|
||||
specifier: 19.1.8
|
||||
version: 19.1.8
|
||||
@@ -7515,10 +7515,6 @@ packages:
|
||||
resolution: {integrity: sha512-iu0mgLj51AXcKpdNj8+4EdNNBd/mkNjLEhZn6UMc/r7BM9WbmpPMEydA39WeRLbdLO4kbpmq4wTbiskI1rg+HA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-DxybNfznr7aE/U9tJqvpEorUW2f/6kR0S1Zk78NqKam1Ex+BQFDM5j2Az3WayfFDZz3adkxkLAszfdorvPxDlw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -7527,14 +7523,14 @@ packages:
|
||||
resolution: {integrity: sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-XtwPUCj3bCNX/2yjYGlQyvcsn32wkzixCjyWOD4pdKFVk7opZPAdF4xr85rmo6nJ7AiBYxjV1IH0bemTPEdE6Q==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-MD1SY7KAeHWvufiBK8C1MwP9/pxxI7SnKi/rHYfjco2Xvke+M+Bbm2OzvuSN7dYZvwLTkZCiJmBccTNVPCpSUQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==}
|
||||
|
||||
@@ -7609,42 +7605,36 @@ packages:
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-a/K5PRIFPCjfHq5xx3WYKHAAF8Ft2I1LtxloyibqiQOoUtNLfKgFB1r8sdMvXM7/PADNPe4iAw4uSE6PrARrfg==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-QXzIAHbyZZ52+97Bp/+/SBkN3hX0pam8l4lnA4P7g+aFPrVZUrMwZPIf+FV7UbEswqqwo3xmFI41TKgj8w8B9w==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-QaXzmPsMnKGV6tc4UcdnQVNOz4zyXgarvdIQibJ4L3EmLat73r5ZVl4c0cCOcoaV7rgM9Wbphgu5E/7jNcd3Zg==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-v1OJ9IQCZAqaDEUYGFnGLe2fSp8DN9cv7j8tUYm5ngiFK7h6LjP4Ew3gGCca4AHWzMFkHuIRNQ+6Ypep1K/B7g==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-lTcUbMjQ0YUZ5wzCLhpBeS9OkWYgLLly6BddEp2+pm4QxiwCCU2Nao0nBJXgzKbZYQOgrEGqtdm/7ze67gjzRA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-/LZWhkVCUN+fcTgQUxArxhn2R8DF+LSd/6Wh9FnpjeK/Sdupx1EPS8okWG6WPAqq2f404PRoNAfQytQ82Xdl3g==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-HM0YZxT+wNqskoZkuju5owbKTlqUXNKfGlJk/zh9pWaVWBR2QamvQ+47Cx09OoGPRQjQH0JmgRiUV4bOwWNeHg==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-6O61esDSW8FZNdFezgB4bX2S35HM6tCwBEjGHNB8JeoKCfpXG33hw2raU/SBgBL/jmM57QRW4M1aFH7v1u9z7g==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-xuLIPrLxe6viMu8Uk28Nf0sgyMy+4oT0mroOjBe5Vqyft8GTiwUBKZXmrGU9uDzZsYVn1FXLO9CkuNHXda3ODA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-LkKg+EjcSUpPUhhvRANgkjPL38wJPIWumAYD8OK/g4OFuJ4W3lS/XTCKthABQfFqmiNbNbVllmywiyE44KdpQg==}
|
||||
|
||||
@@ -7654,30 +7644,27 @@ packages:
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-ZSYU5H7Zi/nEy3L21kw5l3ovMagrbXDRKBG8vjPpGQAkflQocRj6d0SesFOCBEdJS16nt+6dKI2f5blpOGzyTQ==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-Nc1Z6VXnya152yucNDPnlTkrhG289tCUfcjiWqDmwNYzFSfdT5oJQHlnffQXlvoks90kn5Ru8Rnwag2CH1YOVQ==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-VU5CcUF4sZDg8a2/ov29OJzT3KfLuZqJUM0GemW30dlipI5fkpb0VPenZK7TcdLPXc1LN+Q+7eyTqHRoAu/BIA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-u/uyJkVyxLLUbHbpMv7MmuOkGfElG08l6P2kMTAfN7nAVyTgpb8g6kWLMNqfmYXVz+h+finf5FSV4DgL2vOvPQ==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-LuSyBXvRLiDqIu4uMFei5eJ/WPhkIkdW58fmDlRnryatIuBPCho3dlrNSbOjVSdsID+OvxjOlpPLi+5h4oTbaA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-HtMraGJ9qXo55l4wGSM1aZvyz0XVv460iWhlRGAyRl9Yz8RQeKyXavDhwBfcTFha/6kwLxPExqQ+MURtKeVVXw==}
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==}
|
||||
|
||||
@@ -23002,7 +22989,7 @@ snapshots:
|
||||
|
||||
'@scure/[email protected]':
|
||||
dependencies:
|
||||
'@noble/curves': 1.9.2
|
||||
'@noble/curves': 1.9.6
|
||||
'@noble/hashes': 1.8.0
|
||||
'@scure/base': 1.2.6
|
||||
|
||||
@@ -24184,7 +24171,7 @@ snapshots:
|
||||
- webpack-hot-middleware
|
||||
- webpack-plugin-serve
|
||||
|
||||
'@storybook/[email protected]([email protected](@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])':
|
||||
'@storybook/[email protected]([email protected](@babel/[email protected])(@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])([email protected](@testing-library/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@babel/core': 7.28.0
|
||||
'@babel/plugin-syntax-bigint': 7.8.3(@babel/[email protected])
|
||||
@@ -25586,7 +25573,7 @@ snapshots:
|
||||
sirv: 3.0.1
|
||||
tinyglobby: 0.2.14
|
||||
tinyrainbow: 2.0.0
|
||||
vitest: 3.2.4(@types/[email protected])(@types/node@22.14.1)(@vitest/[email protected])(happy-dom@18.0.1)([email protected])([email protected])(msw@2.10.2(@types/node@22.14.1)([email protected]))([email protected])([email protected])([email protected])
|
||||
vitest: 3.2.4(@types/[email protected])(@types/node@24.0.10)(@vitest/[email protected])(happy-dom@17.4.4)([email protected])([email protected])(msw@2.7.5(@types/node@24.0.10)([email protected]))([email protected])([email protected])([email protected])
|
||||
|
||||
'@vitest/[email protected]':
|
||||
dependencies:
|
||||
@@ -25830,49 +25817,6 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
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([email protected])([email protected])
|
||||
'@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@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.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
es-toolkit: 1.33.0
|
||||
events: 3.3.0
|
||||
uint8arrays: 3.1.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@react-native-async-storage/async-storage'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
@@ -25959,7 +25903,7 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected].4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
'@walletconnect/jsonrpc-provider': 1.0.14
|
||||
@@ -25972,8 +25916,8 @@ snapshots:
|
||||
'@walletconnect/relay-auth': 1.1.0
|
||||
'@walletconnect/safe-json': 1.0.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.5([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
es-toolkit: 1.39.3
|
||||
events: 3.3.0
|
||||
@@ -26002,7 +25946,7 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
'@walletconnect/jsonrpc-provider': 1.0.14
|
||||
@@ -26015,8 +25959,8 @@ snapshots:
|
||||
'@walletconnect/relay-auth': 1.1.0
|
||||
'@walletconnect/safe-json': 1.0.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.21.5([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
es-toolkit: 1.39.3
|
||||
events: 3.3.0
|
||||
@@ -26295,41 +26239,6 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/core': 2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@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.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
events: 3.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@react-native-async-storage/async-storage'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/core': 2.21.0([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
@@ -26400,41 +26309,6 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/core': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@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.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
events: 3.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@react-native-async-storage/async-storage'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/core': 2.21.5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
@@ -26470,17 +26344,16 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected]':
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])':
|
||||
'@walletconnect/[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/core': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
'@walletconnect/jsonrpc-types': 1.0.4
|
||||
'@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/jsonrpc-utils': 1.0.8
|
||||
'@walletconnect/logger': 2.1.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
events: 3.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
@@ -26498,11 +26371,19 @@ snapshots:
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/t[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])':
|
||||
'@walletconnect/t[email protected]':
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
@@ -26586,7 +26467,7 @@ snapshots:
|
||||
- ioredis
|
||||
- uploadthing
|
||||
|
||||
'@walletconnect/[email protected].4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
@@ -26614,7 +26495,7 @@ snapshots:
|
||||
- ioredis
|
||||
- uploadthing
|
||||
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/heartbeat': 1.2.2
|
||||
@@ -26759,45 +26640,6 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/jsonrpc-http-connection': 1.0.8([email protected])
|
||||
'@walletconnect/jsonrpc-provider': 1.0.14
|
||||
'@walletconnect/jsonrpc-types': 1.0.4
|
||||
'@walletconnect/jsonrpc-utils': 1.0.8
|
||||
'@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/logger': 2.1.2
|
||||
'@walletconnect/sign-client': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
es-toolkit: 1.39.3
|
||||
events: 3.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@react-native-async-storage/async-storage'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- encoding
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@walletconnect/events': 1.0.1
|
||||
@@ -26837,25 +26679,20 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/u[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/u[email protected](@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@noble/ciphers': 1.2.1
|
||||
'@noble/curves': 1.8.1
|
||||
'@noble/hashes': 1.7.1
|
||||
'@walletconnect/events': 1.0.1
|
||||
'@walletconnect/jsonrpc-http-connection': 1.0.8([email protected])
|
||||
'@walletconnect/jsonrpc-provider': 1.0.14
|
||||
'@walletconnect/jsonrpc-types': 1.0.4
|
||||
'@walletconnect/jsonrpc-utils': 1.0.8
|
||||
'@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@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.19.2([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
'@walletconnect/window-metadata': 1.0.1
|
||||
bs58: 6.0.0
|
||||
detect-browser: 5.3.0
|
||||
query-string: 7.1.3
|
||||
uint8arrays: 3.1.0
|
||||
viem: 2.23.2([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/logger': 2.1.2
|
||||
'@walletconnect/sign-client': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/utils': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
es-toolkit: 1.39.3
|
||||
events: 3.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
@@ -26874,13 +26711,14 @@ snapshots:
|
||||
- aws4fetch
|
||||
- bufferutil
|
||||
- db0
|
||||
- encoding
|
||||
- ioredis
|
||||
- typescript
|
||||
- uploadthing
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/utils@2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/utils@2.19.2([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@noble/ciphers': 1.2.1
|
||||
'@noble/curves': 1.8.1
|
||||
@@ -26891,7 +26729,7 @@ snapshots:
|
||||
'@walletconnect/relay-auth': 1.1.0
|
||||
'@walletconnect/safe-json': 1.0.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.20.1(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/types': 2.19.2([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
'@walletconnect/window-metadata': 1.0.1
|
||||
bs58: 6.0.0
|
||||
@@ -27009,7 +26847,7 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected].4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@msgpack/msgpack': 3.1.2
|
||||
'@noble/ciphers': 1.3.0
|
||||
@@ -27022,7 +26860,7 @@ snapshots:
|
||||
'@walletconnect/relay-auth': 1.1.0
|
||||
'@walletconnect/safe-json': 1.0.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.21.4(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.5([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
'@walletconnect/window-metadata': 1.0.1
|
||||
blakejs: 1.2.1
|
||||
@@ -27055,7 +26893,7 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- zod
|
||||
|
||||
'@walletconnect/[email protected].5([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
'@walletconnect/[email protected].8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@msgpack/msgpack': 3.1.2
|
||||
'@noble/ciphers': 1.3.0
|
||||
@@ -27068,7 +26906,7 @@ snapshots:
|
||||
'@walletconnect/relay-auth': 1.1.0
|
||||
'@walletconnect/safe-json': 1.0.2
|
||||
'@walletconnect/time': 1.0.2
|
||||
'@walletconnect/types': 2.21.5([email protected])([email protected])
|
||||
'@walletconnect/types': 2.21.8(@react-native-async-storage/[email protected]([email protected](@babel/[email protected])(@babel/[email protected](@babel/[email protected]))(@types/[email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])
|
||||
'@walletconnect/window-getters': 1.0.1
|
||||
'@walletconnect/window-metadata': 1.0.1
|
||||
blakejs: 1.2.1
|
||||
@@ -29435,8 +29273,8 @@ snapshots:
|
||||
'@typescript-eslint/parser': 7.14.1([email protected])([email protected])
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.10.1([email protected])([email protected])
|
||||
eslint-plugin-import: 2.32.0(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])
|
||||
eslint-import-resolver-typescript: 3.10.1([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected])
|
||||
eslint-plugin-import: 2.32.0(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]))([email protected])
|
||||
eslint-plugin-jsx-a11y: 6.10.2([email protected])
|
||||
eslint-plugin-react: 7.37.5([email protected])
|
||||
eslint-plugin-react-hooks: 5.2.0([email protected])
|
||||
@@ -29455,7 +29293,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected])([email protected]):
|
||||
[email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]):
|
||||
dependencies:
|
||||
'@nolyfill/is-core-module': 1.0.39
|
||||
debug: 4.4.1([email protected])
|
||||
@@ -29466,7 +29304,7 @@ snapshots:
|
||||
tinyglobby: 0.2.14
|
||||
unrs-resolver: 1.10.1
|
||||
optionalDependencies:
|
||||
eslint-plugin-import: 2.32.0(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])
|
||||
eslint-plugin-import: 2.32.0(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]))([email protected])
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -29491,18 +29329,18 @@ snapshots:
|
||||
- bluebird
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected]))([email protected]):
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]))([email protected]):
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 7.14.1([email protected])([email protected])
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.10.1([email protected])([email protected])
|
||||
eslint-import-resolver-typescript: 3.10.1([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected])
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]):
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]))([email protected]):
|
||||
dependencies:
|
||||
'@rtsao/scc': 1.1.0
|
||||
array-includes: 3.1.9
|
||||
@@ -29513,7 +29351,7 @@ snapshots:
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.12.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected]))([email protected])
|
||||
eslint-module-utils: 2.12.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected]))([email protected]))([email protected])
|
||||
hasown: 2.0.2
|
||||
is-core-module: 2.16.1
|
||||
is-glob: 4.0.3
|
||||
|
||||
Reference in New Issue
Block a user