@tuwaio/nova-connect 1.0.0-fix-optimization-alpha.2.3dfb456 → 1.0.0-fix-optimization-alpha.2.03ef94c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ 'use strict';var chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkWTDBHPAK_cjs=require('./chunk-WTDBHPAK.cjs'),chunk2SFIZVDC_cjs=require('./chunk-2SFIZVDC.cjs'),novaCore=require('@tuwaio/nova-core'),orbitCore=require('@tuwaio/orbit-core'),react=require('react');function Ce(e){let{abbreviateSymbols:t=12,maxNameLength:a=30,autoRetry:n=false,retryDelay:s=3e3}=e,o=chunk2SFIZVDC_cjs.h(f=>f.activeConnection),i=chunk2SFIZVDC_cjs.h(f=>f.getAdapter),r=react.useMemo(()=>o?.address,[o?.address]),d=react.useMemo(()=>o?.connectorType,[o?.connectorType]),c=react.useMemo(()=>d?i(orbitCore.getAdapterFromConnectorType(d??`${orbitCore.OrbitAdapter.EVM}:not-connected`)):null,[i,d]),[u,b]=react.useState(null),[K,p]=react.useState(null),[g,m]=react.useState(false),[N,v]=react.useState(null),L=react.useRef(null),T=react.useRef(null),I=react.useMemo(()=>{if(!c)return {hasNameResolver:false,hasAvatarResolver:false};let f="getName"in c&&typeof c.getName=="function",C="getAvatar"in c&&typeof c.getAvatar=="function";return {hasNameResolver:f,hasAvatarResolver:C}},[c]),h=react.useCallback(()=>{L.current&&(L.current.abort(),L.current=null),T.current!==null&&(clearTimeout(T.current),T.current=null);},[]),x=react.useCallback(async()=>{if(h(),!r||!c||!I.hasNameResolver){b(null),p(null),m(false),v(null);return}L.current=new AbortController;let{signal:f}=L.current;m(true),v(null),b(null),p(null);try{if(f.aborted)return;let C=await c.getName?.(r);if(f.aborted)return;if(C&&(b(C),I.hasAvatarResolver))try{let S=await c.getAvatar?.(C);f.aborted||p(S??null);}catch(S){console.warn("Failed to fetch avatar:",S),f.aborted||p(null);}}catch(C){if(f.aborted)return;let S=C instanceof Error?C.message:"Failed to fetch name service data";console.error("Failed to fetch name service data:",C),v(S),b(null),p(null),n&&(T.current=setTimeout(()=>{x();},s));}finally{f.aborted||m(false);}},[r,c,I,n,s,h]),Q=react.useCallback(()=>{v(null),x();},[x]);react.useEffect(()=>(x(),h),[x,h]),react.useEffect(()=>h,[h]);let X=react.useMemo(()=>u?u.length>a?novaCore.textCenterEllipsis(u,t,t):u:r?novaCore.textCenterEllipsis(r,t,t):void 0,[u,r,a,t]);return {ensName:u,ensAvatar:K,isLoading:g,ensNameAbbreviated:X,error:N,retry:Q}}var R=class extends Error{constructor(t="useNovaConnect must be used within NovaConnectProvider"){super(t),this.name="NovaConnectProviderError";}},V=react.createContext(void 0),ye=()=>{let e=react.useContext(V);if(!e)throw new R;return e},ve=()=>react.useContext(V)!==void 0,ge=()=>react.useContext(V)??null;var oe=react.createContext(chunkWTDBHPAK_cjs.a),D=()=>react.useContext(oe),xe=e=>D()[e],Se=e=>{let t=D(),a={};for(let n of e)a[n]=t[n];return a},Oe=(e,t)=>!!e[t]?.trim(),Te=e=>{let t=D(),n={actions:["connectWallet","disconnect","connecting","connected","tryAgain","back","connect","close"],states:["success","error","replaced","loading","idle"],accessibility:["chainSelector","closeModal","selectChain","walletControls","openWalletModal"],transactions:["transactionLoading","transactionSuccess","transactionError","transactionReplaced","recent"]}[e],s={};for(let o of n)s[o]=t[o];return s},ke=e=>e===chunkWTDBHPAK_cjs.a,Ee=(e,t,a)=>{let n=e[t];return n&&n.trim()?n:a||chunkWTDBHPAK_cjs.a[t]||t.toString()},Be=(e,t)=>{let a={};for(let n of t)a[n]=e[n];return a};var y={[orbitCore.OrbitAdapter.EVM]:1,[orbitCore.OrbitAdapter.SOLANA]:"mainnet",[orbitCore.OrbitAdapter.Starknet]:"0x534e5f4d41494e"};function Me({selectedAdapter:e,appChains:t,solanaRPCUrls:a}){switch(e){case orbitCore.OrbitAdapter.EVM:{let n=t?.[0];return n?.id&&typeof n.id=="number"?n.id:(process.env.NODE_ENV==="development"&&!t?.length&&console.warn("getConnectChainId: No EVM chains configured, using Ethereum Mainnet"),y[orbitCore.OrbitAdapter.EVM])}case orbitCore.OrbitAdapter.SOLANA:{if(a&&typeof a=="object"){let n=Object.keys(a);if(n.length>0)return n[0]}return process.env.NODE_ENV==="development"&&!a&&console.warn("getConnectChainId: No Solana RPC URLs configured, using mainnet"),y[orbitCore.OrbitAdapter.SOLANA]}case orbitCore.OrbitAdapter.Starknet:return process.env.NODE_ENV==="development"&&console.info("getConnectChainId: Using default Starknet chain ID"),y[orbitCore.OrbitAdapter.Starknet];default:return process.env.NODE_ENV==="development"&&console.error("getConnectChainId: Unknown adapter:",e),y[orbitCore.OrbitAdapter.EVM]}}function Pe({selectedAdapter:e,appChains:t,solanaRPCUrls:a}){switch(e){case orbitCore.OrbitAdapter.EVM:return t?.map(n=>n.id).filter(Boolean)??[y[orbitCore.OrbitAdapter.EVM]];case orbitCore.OrbitAdapter.SOLANA:return a?Object.keys(a):[y[orbitCore.OrbitAdapter.SOLANA]];case orbitCore.OrbitAdapter.Starknet:return [y[orbitCore.OrbitAdapter.Starknet]];default:return [y[orbitCore.OrbitAdapter.EVM]]}}function ae(e,t){if(!e||typeof e!="object")return null;let a=e;if(!a.name||typeof a.name!="string")return null;let n;if("icon"in a){let s=a.icon;if(typeof s=="string")n=s;else if(s&&typeof s=="object"&&"toString"in s&&typeof s.toString=="function")try{n=s.toString();}catch{}}return {name:a.name,icon:n,adapter:t,originalConnector:a}}function U({connectors:e,excludeConnectors:t=["injected"]}={connectors:{}}){if(!e||Object.keys(e).length===0)return [];let a=new Set(t.map(o=>orbitCore.formatConnectorName(o))),n=[];Object.entries(e).forEach(([o,i])=>{if(Array.isArray(i)){let r=o;i.forEach(d=>{let c=ae(d,r);if(c){let u=orbitCore.formatConnectorName(c.name);a.has(u)||n.push(c);}});}});let s=new Map;return n.forEach(o=>{let i=orbitCore.formatConnectorName(o.name);s.has(i)||s.set(i,{name:o.name,icon:o.icon,adapters:[],connectors:[]});let r=s.get(i);r.adapters.includes(o.adapter)||r.adapters.push(o.adapter);let d=Object.assign({},o.originalConnector,{adapter:o.adapter});r.connectors.push(d),!r.icon&&o.icon&&(r.icon=o.icon);}),Array.from(s.values()).sort((o,i)=>o.name.localeCompare(i.name,void 0,{sensitivity:"base"}))}function De(e){return Object.values(e).some(t=>Array.isArray(t)&&t.length>0)}function re(e){try{if(e&&typeof e=="object"&&e.adapter)return e.adapter}catch{}}function _(e,t){return re(e)===t}function Fe({connectors:e,selectedAdapter:t}){if(!e||Object.keys(e).length===0)return [];let a=U({connectors:e});return t?a.filter(n=>n.adapters.includes(t)&&n.connectors.some(s=>_(s,t))).map(n=>{let s=n.connectors.filter(o=>_(o,t));return {...n,adapters:[t],connectors:s}}).filter(n=>n.connectors.length>0):a}function $e(e,t){let a=e[t];return Array.isArray(a)&&a.length>0}function tt(){return console.warn("getAvailableSolanaClusters: Using synchronous fallback with limited functionality. Use getAvailableSolanaClustersAsync for complete cluster detection."),[]}function nt(e){return console.warn("isValidSolanaCluster: Using synchronous fallback with basic validation. Use isValidSolanaClusterAsync for comprehensive cluster validation."),["mainnet","devnet","testnet","localnet"].includes(e)}function bt({activeConnection:e,appChains:t,solanaRPCUrls:a}){let[n,s]=react.useState([]),[o,i]=react.useState(false);return react.useEffect(()=>{let r=true;return (async()=>{i(true);try{if(!e){let b=await chunkK44IHM6B_cjs.a({connectorType:`${orbitCore.OrbitAdapter.EVM}:not-connected`,appChains:t,solanaRPCUrls:a,chains:[]});r&&s(b);return}let c=chunkK44IHM6B_cjs.i(e),u=await chunkK44IHM6B_cjs.a({connectorType:e.connectorType,appChains:t,solanaRPCUrls:a,chains:c});r&&s(u);}catch(c){console.error("Failed to fetch chains list:",c),r&&s([]);}finally{r&&i(false);}})(),()=>{r=false;}},[e,t,a]),{chainsList:n,isLoading:o}}function ht(){let[e,t]=react.useState({}),[a,n]=react.useState(false),s=react.useRef(null),o=chunk2SFIZVDC_cjs.h(p=>p.activeConnection),i=chunk2SFIZVDC_cjs.h(p=>p.getAdapter),r=react.useMemo(()=>o?.chainId&&o?.address?`${o.address}-${o.chainId}`:null,[o?.chainId,o?.address]),d=react.useMemo(()=>o?.connectorType?i(orbitCore.getAdapterFromConnectorType(o.connectorType)):null,[i,o?.connectorType]),c=react.useMemo(()=>d&&"getBalance"in d&&typeof d.getBalance=="function",[d]),u=react.useCallback(async(p=false)=>{if(!o?.address||!d||!o?.chainId||!r||!c){n(false);return}let g=`${r}-${Date.now()}`;if(s.current=g,!p&&e[r]){n(false);return}n(true);try{let m=await d.getBalance(o.address,o.chainId);s.current===g&&t(N=>({...N,[r]:m}));}catch(m){console.error(`Failed to fetch native balance for ${r}:`,m),p&&s.current===g&&t(N=>{let v={...N};return delete v[r],v});}finally{s.current===g&&n(false);}},[o?.address,d,o?.chainId,r,c,e]),b=react.useCallback(()=>{u(true);},[u]);return react.useEffect(()=>{r&&c&&!e[r]?u(false):(!r||!c)&&n(false);},[r,c,e,u]),react.useEffect(()=>()=>{s.current=null;},[]),{balance:react.useMemo(()=>r&&e[r]||null,[r,e]),isLoading:a,refetch:b}}exports.a=Ce;exports.b=R;exports.c=V;exports.d=ye;exports.e=ve;exports.f=ge;exports.g=oe;exports.h=D;exports.i=xe;exports.j=Se;exports.k=Oe;exports.l=Te;exports.m=ke;exports.n=Ee;exports.o=Be;exports.p=Me;exports.q=Pe;exports.r=U;exports.s=De;exports.t=Fe;exports.u=$e;exports.v=tt;exports.w=nt;exports.x=bt;exports.y=ht;
@@ -0,0 +1 @@
1
+ import {a as a$1,i}from'./chunk-S3IRVZMG.js';import {a}from'./chunk-T6H7HGCM.js';import {h}from'./chunk-S3RQJGCL.js';import {textCenterEllipsis}from'@tuwaio/nova-core';import {OrbitAdapter,getAdapterFromConnectorType,formatConnectorName}from'@tuwaio/orbit-core';import {createContext,useContext,useMemo,useState,useRef,useCallback,useEffect}from'react';function Ce(e){let{abbreviateSymbols:t=12,maxNameLength:a=30,autoRetry:n=false,retryDelay:s=3e3}=e,o=h(f=>f.activeConnection),i=h(f=>f.getAdapter),r=useMemo(()=>o?.address,[o?.address]),d=useMemo(()=>o?.connectorType,[o?.connectorType]),c=useMemo(()=>d?i(getAdapterFromConnectorType(d??`${OrbitAdapter.EVM}:not-connected`)):null,[i,d]),[u,b]=useState(null),[K,p]=useState(null),[g,m]=useState(false),[N,v]=useState(null),L=useRef(null),T=useRef(null),I=useMemo(()=>{if(!c)return {hasNameResolver:false,hasAvatarResolver:false};let f="getName"in c&&typeof c.getName=="function",C="getAvatar"in c&&typeof c.getAvatar=="function";return {hasNameResolver:f,hasAvatarResolver:C}},[c]),h$1=useCallback(()=>{L.current&&(L.current.abort(),L.current=null),T.current!==null&&(clearTimeout(T.current),T.current=null);},[]),x=useCallback(async()=>{if(h$1(),!r||!c||!I.hasNameResolver){b(null),p(null),m(false),v(null);return}L.current=new AbortController;let{signal:f}=L.current;m(true),v(null),b(null),p(null);try{if(f.aborted)return;let C=await c.getName?.(r);if(f.aborted)return;if(C&&(b(C),I.hasAvatarResolver))try{let S=await c.getAvatar?.(C);f.aborted||p(S??null);}catch(S){console.warn("Failed to fetch avatar:",S),f.aborted||p(null);}}catch(C){if(f.aborted)return;let S=C instanceof Error?C.message:"Failed to fetch name service data";console.error("Failed to fetch name service data:",C),v(S),b(null),p(null),n&&(T.current=setTimeout(()=>{x();},s));}finally{f.aborted||m(false);}},[r,c,I,n,s,h$1]),Q=useCallback(()=>{v(null),x();},[x]);useEffect(()=>(x(),h$1),[x,h$1]),useEffect(()=>h$1,[h$1]);let X=useMemo(()=>u?u.length>a?textCenterEllipsis(u,t,t):u:r?textCenterEllipsis(r,t,t):void 0,[u,r,a,t]);return {ensName:u,ensAvatar:K,isLoading:g,ensNameAbbreviated:X,error:N,retry:Q}}var R=class extends Error{constructor(t="useNovaConnect must be used within NovaConnectProvider"){super(t),this.name="NovaConnectProviderError";}},V=createContext(void 0),ye=()=>{let e=useContext(V);if(!e)throw new R;return e},ve=()=>useContext(V)!==void 0,ge=()=>useContext(V)??null;var oe=createContext(a),D=()=>useContext(oe),xe=e=>D()[e],Se=e=>{let t=D(),a={};for(let n of e)a[n]=t[n];return a},Oe=(e,t)=>!!e[t]?.trim(),Te=e=>{let t=D(),n={actions:["connectWallet","disconnect","connecting","connected","tryAgain","back","connect","close"],states:["success","error","replaced","loading","idle"],accessibility:["chainSelector","closeModal","selectChain","walletControls","openWalletModal"],transactions:["transactionLoading","transactionSuccess","transactionError","transactionReplaced","recent"]}[e],s={};for(let o of n)s[o]=t[o];return s},ke=e=>e===a,Ee=(e,t,a$1)=>{let n=e[t];return n&&n.trim()?n:a$1||a[t]||t.toString()},Be=(e,t)=>{let a={};for(let n of t)a[n]=e[n];return a};var y={[OrbitAdapter.EVM]:1,[OrbitAdapter.SOLANA]:"mainnet",[OrbitAdapter.Starknet]:"0x534e5f4d41494e"};function Me({selectedAdapter:e,appChains:t,solanaRPCUrls:a}){switch(e){case OrbitAdapter.EVM:{let n=t?.[0];return n?.id&&typeof n.id=="number"?n.id:(process.env.NODE_ENV==="development"&&!t?.length&&console.warn("getConnectChainId: No EVM chains configured, using Ethereum Mainnet"),y[OrbitAdapter.EVM])}case OrbitAdapter.SOLANA:{if(a&&typeof a=="object"){let n=Object.keys(a);if(n.length>0)return n[0]}return process.env.NODE_ENV==="development"&&!a&&console.warn("getConnectChainId: No Solana RPC URLs configured, using mainnet"),y[OrbitAdapter.SOLANA]}case OrbitAdapter.Starknet:return process.env.NODE_ENV==="development"&&console.info("getConnectChainId: Using default Starknet chain ID"),y[OrbitAdapter.Starknet];default:return process.env.NODE_ENV==="development"&&console.error("getConnectChainId: Unknown adapter:",e),y[OrbitAdapter.EVM]}}function Pe({selectedAdapter:e,appChains:t,solanaRPCUrls:a}){switch(e){case OrbitAdapter.EVM:return t?.map(n=>n.id).filter(Boolean)??[y[OrbitAdapter.EVM]];case OrbitAdapter.SOLANA:return a?Object.keys(a):[y[OrbitAdapter.SOLANA]];case OrbitAdapter.Starknet:return [y[OrbitAdapter.Starknet]];default:return [y[OrbitAdapter.EVM]]}}function ae(e,t){if(!e||typeof e!="object")return null;let a=e;if(!a.name||typeof a.name!="string")return null;let n;if("icon"in a){let s=a.icon;if(typeof s=="string")n=s;else if(s&&typeof s=="object"&&"toString"in s&&typeof s.toString=="function")try{n=s.toString();}catch{}}return {name:a.name,icon:n,adapter:t,originalConnector:a}}function U({connectors:e,excludeConnectors:t=["injected"]}={connectors:{}}){if(!e||Object.keys(e).length===0)return [];let a=new Set(t.map(o=>formatConnectorName(o))),n=[];Object.entries(e).forEach(([o,i])=>{if(Array.isArray(i)){let r=o;i.forEach(d=>{let c=ae(d,r);if(c){let u=formatConnectorName(c.name);a.has(u)||n.push(c);}});}});let s=new Map;return n.forEach(o=>{let i=formatConnectorName(o.name);s.has(i)||s.set(i,{name:o.name,icon:o.icon,adapters:[],connectors:[]});let r=s.get(i);r.adapters.includes(o.adapter)||r.adapters.push(o.adapter);let d=Object.assign({},o.originalConnector,{adapter:o.adapter});r.connectors.push(d),!r.icon&&o.icon&&(r.icon=o.icon);}),Array.from(s.values()).sort((o,i)=>o.name.localeCompare(i.name,void 0,{sensitivity:"base"}))}function De(e){return Object.values(e).some(t=>Array.isArray(t)&&t.length>0)}function re(e){try{if(e&&typeof e=="object"&&e.adapter)return e.adapter}catch{}}function _(e,t){return re(e)===t}function Fe({connectors:e,selectedAdapter:t}){if(!e||Object.keys(e).length===0)return [];let a=U({connectors:e});return t?a.filter(n=>n.adapters.includes(t)&&n.connectors.some(s=>_(s,t))).map(n=>{let s=n.connectors.filter(o=>_(o,t));return {...n,adapters:[t],connectors:s}}).filter(n=>n.connectors.length>0):a}function $e(e,t){let a=e[t];return Array.isArray(a)&&a.length>0}function tt(){return console.warn("getAvailableSolanaClusters: Using synchronous fallback with limited functionality. Use getAvailableSolanaClustersAsync for complete cluster detection."),[]}function nt(e){return console.warn("isValidSolanaCluster: Using synchronous fallback with basic validation. Use isValidSolanaClusterAsync for comprehensive cluster validation."),["mainnet","devnet","testnet","localnet"].includes(e)}function bt({activeConnection:e,appChains:t,solanaRPCUrls:a}){let[n,s]=useState([]),[o,i$1]=useState(false);return useEffect(()=>{let r=true;return (async()=>{i$1(true);try{if(!e){let b=await a$1({connectorType:`${OrbitAdapter.EVM}:not-connected`,appChains:t,solanaRPCUrls:a,chains:[]});r&&s(b);return}let c=i(e),u=await a$1({connectorType:e.connectorType,appChains:t,solanaRPCUrls:a,chains:c});r&&s(u);}catch(c){console.error("Failed to fetch chains list:",c),r&&s([]);}finally{r&&i$1(false);}})(),()=>{r=false;}},[e,t,a]),{chainsList:n,isLoading:o}}function ht(){let[e,t]=useState({}),[a,n]=useState(false),s=useRef(null),o=h(p=>p.activeConnection),i=h(p=>p.getAdapter),r=useMemo(()=>o?.chainId&&o?.address?`${o.address}-${o.chainId}`:null,[o?.chainId,o?.address]),d=useMemo(()=>o?.connectorType?i(getAdapterFromConnectorType(o.connectorType)):null,[i,o?.connectorType]),c=useMemo(()=>d&&"getBalance"in d&&typeof d.getBalance=="function",[d]),u=useCallback(async(p=false)=>{if(!o?.address||!d||!o?.chainId||!r||!c){n(false);return}let g=`${r}-${Date.now()}`;if(s.current=g,!p&&e[r]){n(false);return}n(true);try{let m=await d.getBalance(o.address,o.chainId);s.current===g&&t(N=>({...N,[r]:m}));}catch(m){console.error(`Failed to fetch native balance for ${r}:`,m),p&&s.current===g&&t(N=>{let v={...N};return delete v[r],v});}finally{s.current===g&&n(false);}},[o?.address,d,o?.chainId,r,c,e]),b=useCallback(()=>{u(true);},[u]);return useEffect(()=>{r&&c&&!e[r]?u(false):(!r||!c)&&n(false);},[r,c,e,u]),useEffect(()=>()=>{s.current=null;},[]),{balance:useMemo(()=>r&&e[r]||null,[r,e]),isLoading:a,refetch:b}}export{Ce as a,R as b,V as c,ye as d,ve as e,ge as f,oe as g,D as h,xe as i,Se as j,Oe as k,Te as l,ke as m,Ee as n,Be as o,Me as p,Pe as q,U as r,De as s,Fe as t,$e as u,tt as v,nt as w,bt as x,ht as y};