@tuwaio/nova-connect 1.0.0-fix-test-alpha.51.1ef6db6 → 1.0.0-fix-test-alpha.53.a751bf7

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.
Files changed (40) hide show
  1. package/dist/chunk-KKCRUSJT.js +2 -0
  2. package/dist/chunk-KKCRUSJT.js.map +1 -0
  3. package/dist/chunk-NJDPFYUJ.js +2 -0
  4. package/dist/chunk-NJDPFYUJ.js.map +1 -0
  5. package/dist/chunk-RR5G7U5F.js +2 -0
  6. package/dist/chunk-RR5G7U5F.js.map +1 -0
  7. package/dist/evm-F7OJEDX3.js +2 -0
  8. package/dist/evm-F7OJEDX3.js.map +1 -0
  9. package/dist/evm-RBGEX4L3.js +2 -0
  10. package/dist/evm-RBGEX4L3.js.map +1 -0
  11. package/dist/getChainsListByWalletType-KXWMBNB4.js +2 -0
  12. package/dist/getChainsListByWalletType-KXWMBNB4.js.map +1 -0
  13. package/dist/index.cjs +8 -8
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.css +584 -763
  16. package/dist/index.d.cts +845 -24
  17. package/dist/index.d.ts +845 -24
  18. package/dist/index.js +8 -8
  19. package/dist/index.js.map +1 -1
  20. package/dist/providers/evm-5323YCLC.js +2 -0
  21. package/dist/providers/evm-5323YCLC.js.map +1 -0
  22. package/dist/providers/index.cjs +2 -2
  23. package/dist/providers/index.cjs.map +1 -1
  24. package/dist/providers/index.js +2 -2
  25. package/dist/providers/index.js.map +1 -1
  26. package/dist/providers/solana-WHT5KTOF.js +2 -0
  27. package/dist/providers/solana-WHT5KTOF.js.map +1 -0
  28. package/dist/providers/utils-FHHKXQ5Z.js +2 -0
  29. package/dist/providers/utils-FHHKXQ5Z.js.map +1 -0
  30. package/dist/providers/utils-L6CFHW4B.js +2 -0
  31. package/dist/providers/utils-L6CFHW4B.js.map +1 -0
  32. package/dist/solana-2MXIY6UT.js +2 -0
  33. package/dist/solana-2MXIY6UT.js.map +1 -0
  34. package/dist/solana-EV65GS7Q.js +2 -0
  35. package/dist/solana-EV65GS7Q.js.map +1 -0
  36. package/dist/utils-5KC7QXWB.js +2 -0
  37. package/dist/utils-5KC7QXWB.js.map +1 -0
  38. package/dist/utils-72MDY3OH.js +2 -0
  39. package/dist/utils-72MDY3OH.js.map +1 -0
  40. package/package.json +93 -20
@@ -0,0 +1,2 @@
1
+ async function n(){try{return await import('./utils-FHHKXQ5Z.js')}catch(a){return console.warn("Solana utilities not available:",a),null}}async function r(){let a=await n();return {getChains(t,e){return a?.getSolanaClusters?a.getSolanaClusters(t,e):t&&typeof t=="object"?Object.keys(t):[]},isChainList(t){return a?.isSolanaChainList?a.isSolanaChainList(t):t.length>0&&t.every(e=>typeof e=="string")},getAvailableClusters(){return a?.getAvailableSolanaClusters?a.getAvailableSolanaClusters():[]},isValidCluster(t){return a?.isValidSolanaCluster?a.isValidSolanaCluster(t):false}}}async function l(){try{return await import('./utils-FHHKXQ5Z.js'),!0}catch{return false}}export{r as createSolanaAdapter,l as isSolanaAdapterAvailable};//# sourceMappingURL=solana-WHT5KTOF.js.map
2
+ //# sourceMappingURL=solana-WHT5KTOF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/adapters/solana.ts"],"names":["getSolanaUtils","error","createSolanaAdapter","solanaUtils","solanaRPCUrls","chains","chain","cluster","isSolanaAdapterAvailable"],"mappings":"AAiCA,eAAeA,CAAAA,EAAoD,CACjE,GAAI,CAGF,OADoB,MAAM,OAAO,qBAAoB,CAEvD,CAAA,MAASC,CAAAA,CAAO,CACd,eAAQ,IAAA,CAAK,iCAAA,CAAmCA,CAAK,CAAA,CAC9C,IACT,CACF,CAiCA,eAAsBC,CAAAA,EAA6C,CACjE,IAAMC,CAAAA,CAAc,MAAMH,CAAAA,GAE1B,OAAO,CAQL,SAAA,CAAUI,CAAAA,CAAoBC,CAAAA,CAAmC,CAE/D,OAAIF,CAAAA,EAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBC,CAAAA,CAAeC,CAAM,EAIxDD,CAAAA,EAAiB,OAAOA,CAAAA,EAAkB,QAAA,CACrC,MAAA,CAAO,IAAA,CAAKA,CAAa,CAAA,CAE3B,EACT,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIF,CAAAA,EAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBE,CAAM,CAAA,CAItCA,EAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOC,CAAAA,EAAU,OAAOA,GAAU,QAAQ,CAC/E,CAAA,CAcA,oBAAA,EAAiC,CAC/B,OAAIH,CAAAA,EAAa,0BAAA,CACRA,CAAAA,CAAY,0BAAA,EAA2B,CAEzC,EACT,CAAA,CAkBA,eAAeI,CAAAA,CAA0B,CACvC,OAAIJ,CAAAA,EAAa,oBAAA,CACRA,CAAAA,CAAY,oBAAA,CAAqBI,CAAO,CAAA,CAE1C,KACT,CACF,CACF,CAuBA,eAAsBC,GAA6C,CACjE,GAAI,CACF,OAAA,MAAM,OAAO,qBAAoB,CAAA,CAC1B,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"solana-WHT5KTOF.js","sourcesContent":["import type { ChainAdapter } from './types';\n\n/**\n * Solana utilities module interface for dynamic imports.\n *\n * @internal\n * @since 1.0.0\n */\ninterface SolanaUtilsModule {\n getSolanaClusters?: (solanaRPCUrls: any, chains?: any) => string[];\n isSolanaChainList?: (chains: (string | number)[]) => boolean;\n getAvailableSolanaClusters?: () => string[];\n isValidSolanaCluster?: (cluster: string) => boolean;\n}\n\n/**\n * Dynamically imports and checks availability of Solana utilities.\n * This function attempts to load Solana-specific utilities without throwing errors\n * if the Solana package is not installed in the current environment.\n *\n * @internal\n * @returns Promise resolving to Solana utilities module or null if not available\n *\n * @example\n * ```typescript\n * const solanaUtils = await getSolanaUtils();\n * if (solanaUtils?.getSolanaClusters) {\n * const clusters = solanaUtils.getSolanaClusters(rpcUrls);\n * }\n * ```\n *\n * @since 1.0.0\n */\nasync function getSolanaUtils(): Promise<SolanaUtilsModule | null> {\n try {\n // Dynamic import of Solana utilities - fails gracefully if package not installed\n const solanaUtils = await import('../../solana/utils');\n return solanaUtils;\n } catch (error) {\n console.warn('Solana utilities not available:', error);\n return null;\n }\n}\n\n/**\n * Creates a Solana chain adapter with dynamic loading and fallback support.\n *\n * This adapter provides Solana-specific functionality while gracefully handling\n * environments where Solana utilities are not available. It includes Solana-specific\n * methods like cluster management that are unique to the Solana blockchain architecture.\n *\n * @returns Promise resolving to a configured Solana ChainAdapter\n *\n * @example\n * ```typescript\n * const adapter = await createSolanaAdapter();\n *\n * // Get Solana cluster names from RPC configuration\n * const clusters = adapter.getChains({\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com'\n * });\n * console.log(clusters); // ['mainnet-beta', 'devnet']\n *\n * // Validate cluster list format\n * const isValid = adapter.isChainList(['mainnet-beta', 'devnet']);\n * console.log(isValid); // true (string identifiers are valid for Solana)\n *\n * // Get available clusters\n * const availableClusters = adapter.getAvailableClusters?.();\n * console.log(availableClusters); // All configured cluster names\n * ```\n *\n * @since 1.0.0\n */\nexport async function createSolanaAdapter(): Promise<ChainAdapter> {\n const solanaUtils = await getSolanaUtils();\n\n return {\n /**\n * Extracts cluster names from Solana RPC URL configuration.\n *\n * @param solanaRPCUrls Object mapping cluster names to RPC URLs\n * @param chains Optional array of specific chains to filter\n * @returns Array of cluster names (strings)\n */\n getChains(solanaRPCUrls: any, chains?: any): (string | number)[] {\n // Use imported Solana utilities if available\n if (solanaUtils?.getSolanaClusters) {\n return solanaUtils.getSolanaClusters(solanaRPCUrls, chains);\n }\n\n // Fallback implementation for basic cluster extraction\n if (solanaRPCUrls && typeof solanaRPCUrls === 'object') {\n return Object.keys(solanaRPCUrls);\n }\n return [];\n },\n\n /**\n * Validates whether the provided chains list conforms to Solana cluster format.\n * Solana clusters are typically identified by string names like 'mainnet-beta', 'devnet'.\n *\n * @param chains Array of chain identifiers to validate\n * @returns True if the chain list is valid for Solana\n */\n isChainList(chains: (string | number)[]): boolean {\n if (solanaUtils?.isSolanaChainList) {\n return solanaUtils.isSolanaChainList(chains);\n }\n\n // Fallback validation: Solana clusters should be strings\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n },\n\n /**\n * Gets all available Solana clusters from the current configuration.\n * This is a Solana-specific method that returns cluster names that can be used.\n *\n * @returns Array of available cluster names\n *\n * @example\n * ```typescript\n * const clusters = adapter.getAvailableClusters?.();\n * // Might return: ['mainnet-beta', 'devnet', 'testnet']\n * ```\n */\n getAvailableClusters(): string[] {\n if (solanaUtils?.getAvailableSolanaClusters) {\n return solanaUtils.getAvailableSolanaClusters();\n }\n return [];\n },\n\n /**\n * Validates whether a cluster name is valid for Solana.\n * Checks against known Solana cluster monikers and custom configurations.\n *\n * @param cluster Cluster name to validate\n * @returns True if the cluster name is valid\n *\n * @example\n * ```typescript\n * const isValid = adapter.isValidCluster?.('mainnet-beta');\n * console.log(isValid); // true\n *\n * const isInvalid = adapter.isValidCluster?.('invalid-cluster');\n * console.log(isInvalid); // false\n * ```\n */\n isValidCluster(cluster: string): boolean {\n if (solanaUtils?.isValidSolanaCluster) {\n return solanaUtils.isValidSolanaCluster(cluster);\n }\n return false;\n },\n };\n}\n\n/**\n * Checks if the Solana adapter can be created in the current environment.\n * This function verifies that the required Solana utilities are available\n * by attempting to import them.\n *\n * @returns Promise resolving to true if Solana adapter is available\n *\n * @example\n * ```typescript\n * const hasSolana = await isSolanaAdapterAvailable();\n * if (hasSolana) {\n * const adapter = await createSolanaAdapter();\n * // Use Solana functionality\n * const clusters = adapter.getAvailableClusters?.();\n * } else {\n * console.log('Solana support not available in this build');\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport async function isSolanaAdapterAvailable(): Promise<boolean> {\n try {\n await import('../../solana/utils');\n return true;\n } catch {\n return false;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {defaultRpcUrlsByMoniker}from'@tuwaio/orbit-solana';function o(r){let n=r.split(":");if(n.length<2)return null;let t=n[1];return t in defaultRpcUrlsByMoniker?t:null}function s(r,n){let t={};for(let i of r){if(typeof i!="string")continue;let l=o(i);if(!l)continue;let a=n?.[l]??defaultRpcUrlsByMoniker[l];a&&(t[l]=a);}return t}function f(r,n){if(n&&n.length>0){let t=s(n,r);return Object.keys(t)}return Object.keys(r||defaultRpcUrlsByMoniker)}function p(r){return r.length>0&&r.every(n=>typeof n=="string")}function C(){return Object.keys(defaultRpcUrlsByMoniker)}function S(r){return r in defaultRpcUrlsByMoniker}export{C as getAvailableSolanaClusters,f as getSolanaClusters,p as isSolanaChainList,S as isValidSolanaCluster};//# sourceMappingURL=utils-FHHKXQ5Z.js.map
2
+ //# sourceMappingURL=utils-FHHKXQ5Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/solana/utils.ts"],"names":["extractSolanaCluster","chainId","parts","cluster","defaultRpcUrlsByMoniker","buildSolanaRpcUrls","chains","solanaRPCUrls","availableRpcUrls","rpcUrl","getSolanaClusters","isSolanaChainList","chain","getAvailableSolanaClusters","isValidSolanaCluster"],"mappings":"2DAQA,SAASA,CAAAA,CAAqBC,CAAAA,CAA8C,CAC1E,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,KAAA,CAAM,GAAG,EAC/B,GAAIC,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAG,OAAO,IAAA,CAE7B,IAAMC,CAAAA,CAAUD,CAAAA,CAAM,CAAC,CAAA,CAEvB,OAAOC,CAAAA,IAAWC,uBAAAA,CAA0BD,CAAAA,CAAU,IACxD,CAKA,SAASE,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CAC0B,CAC1B,IAAMC,CAAAA,CAA6C,EAAC,CAEpD,IAAA,IAAWP,CAAAA,IAAWK,CAAAA,CAAQ,CAC5B,GAAI,OAAOL,CAAAA,EAAY,SAAU,SAEjC,IAAME,CAAAA,CAAUH,CAAAA,CAAqBC,CAAO,CAAA,CAC5C,GAAI,CAACE,EAAS,SAGd,IAAMM,CAAAA,CAASF,CAAAA,GAAgBJ,CAAO,CAAA,EAAKC,uBAAAA,CAAwBD,CAAO,EAEtEM,CAAAA,GACFD,CAAAA,CAAiBL,CAAO,CAAA,CAAIM,CAAAA,EAEhC,CAEA,OAAOD,CACT,CAKO,SAASE,CAAAA,CACdH,CAAAA,CACAD,CAAAA,CACU,CACV,GAAIA,CAAAA,EAAUA,EAAO,MAAA,CAAS,CAAA,CAAG,CAE/B,IAAME,CAAAA,CAAmBH,CAAAA,CAAmBC,CAAAA,CAAQC,CAAa,EACjE,OAAO,MAAA,CAAO,IAAA,CAAKC,CAAgB,CACrC,CAGA,OAAO,MAAA,CAAO,KAAKD,CAAAA,EAAiBH,uBAAuB,CAC7D,CAKO,SAASO,CAAAA,CAAkBL,CAAAA,CAAiD,CACjF,OAAOA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOM,CAAAA,EAAU,OAAOA,GAAU,QAAQ,CAC/E,CAKO,SAASC,CAAAA,EAAqD,CACnE,OAAO,MAAA,CAAO,KAAKT,uBAAuB,CAC5C,CAKO,SAASU,CAAAA,CAAqBX,CAAAA,CAAkD,CACrF,OAAOA,KAAWC,uBACpB","file":"utils-FHHKXQ5Z.js","sourcesContent":["import { defaultRpcUrlsByMoniker, SolanaRPCUrls } from '@tuwaio/orbit-solana';\nimport type { SolanaClusterMoniker } from 'gill';\n\nimport { ChainIdentifierArray } from '../types';\n\n/**\n * Extracts Solana cluster from chain identifier\n */\nfunction extractSolanaCluster(chainId: string): SolanaClusterMoniker | null {\n const parts = chainId.split(':');\n if (parts.length < 2) return null;\n\n const cluster = parts[1] as SolanaClusterMoniker;\n // Validate that it's a known cluster\n return cluster in defaultRpcUrlsByMoniker ? cluster : null;\n}\n\n/**\n * Builds available Solana RPC URLs from chain identifiers\n */\nfunction buildSolanaRpcUrls(\n chains: ChainIdentifierArray,\n solanaRPCUrls?: SolanaRPCUrls['rpcUrls'],\n): SolanaRPCUrls['rpcUrls'] {\n const availableRpcUrls: SolanaRPCUrls['rpcUrls'] = {};\n\n for (const chainId of chains) {\n if (typeof chainId !== 'string') continue;\n\n const cluster = extractSolanaCluster(chainId);\n if (!cluster) continue;\n\n // Get RPC URL with fallback to default\n const rpcUrl = solanaRPCUrls?.[cluster] ?? defaultRpcUrlsByMoniker[cluster];\n\n if (rpcUrl) {\n availableRpcUrls[cluster] = rpcUrl;\n }\n }\n\n return availableRpcUrls;\n}\n\n/**\n * Get Solana clusters from configuration\n */\nexport function getSolanaClusters(\n solanaRPCUrls?: Partial<Record<SolanaClusterMoniker, string>>,\n chains?: ChainIdentifierArray,\n): string[] {\n if (chains && chains.length > 0) {\n // For Solana, build RPC URLs and return cluster names\n const availableRpcUrls = buildSolanaRpcUrls(chains, solanaRPCUrls);\n return Object.keys(availableRpcUrls);\n }\n\n // Return configured clusters or defaults\n return Object.keys(solanaRPCUrls || defaultRpcUrlsByMoniker);\n}\n\n/**\n * Type guard to check if a chain list contains Solana cluster names\n */\nexport function isSolanaChainList(chains: (string | number)[]): chains is string[] {\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n}\n\n/**\n * Gets available Solana clusters from the default configuration\n */\nexport function getAvailableSolanaClusters(): SolanaClusterMoniker[] {\n return Object.keys(defaultRpcUrlsByMoniker) as SolanaClusterMoniker[];\n}\n\n/**\n * Validates if a string is a valid Solana cluster moniker\n */\nexport function isValidSolanaCluster(cluster: string): cluster is SolanaClusterMoniker {\n return cluster in defaultRpcUrlsByMoniker;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ function r(n){return n!=null&&typeof n=="number"&&n>0}function i(n){return !n||n.length===0?[]:n.map(e=>e.id).filter(r)}function t(n){return n.length>0&&n.every(e=>typeof e=="number")}export{i as getEvmChains,t as isEvmChainList};//# sourceMappingURL=utils-L6CFHW4B.js.map
2
+ //# sourceMappingURL=utils-L6CFHW4B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/evm/utils.ts"],"names":["isValidEvmChainId","id","getEvmChains","appChains","chain","isEvmChainList","chains"],"mappings":"AAKA,SAASA,CAAAA,CAAkBC,EAA2B,CACpD,OAA2BA,GAAO,IAAA,EAAQ,OAAOA,CAAAA,EAAO,QAAA,EAAYA,CAAAA,CAAK,CAC3E,CAKO,SAASC,CAAAA,CAAaC,EAAoD,CAC/E,OAAI,CAACA,CAAAA,EAAaA,CAAAA,CAAU,MAAA,GAAW,CAAA,CAC9B,EAAC,CAGHA,EAAU,GAAA,CAAKC,CAAAA,EAAUA,EAAM,EAAE,CAAA,CAAE,OAAOJ,CAAiB,CACpE,CAKO,SAASK,CAAAA,CAAeC,CAAAA,CAAiD,CAC9E,OAAOA,CAAAA,CAAO,OAAS,CAAA,EAAKA,CAAAA,CAAO,MAAOF,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E","file":"utils-L6CFHW4B.js","sourcesContent":["import type { Chain } from 'viem/chains';\n\n/**\n * Type guard to check if a value is a valid EVM chain ID\n */\nfunction isValidEvmChainId(id: unknown): id is number {\n return id !== undefined && id !== null && typeof id === 'number' && id > 0;\n}\n\n/**\n * Get EVM chain IDs from app chains configuration\n */\nexport function getEvmChains(appChains?: readonly [Chain, ...Chain[]]): number[] {\n if (!appChains || appChains.length === 0) {\n return [];\n }\n\n return appChains.map((chain) => chain.id).filter(isValidEvmChainId);\n}\n\n/**\n * Type guard to check if a chain list contains EVM chain IDs\n */\nexport function isEvmChainList(chains: (string | number)[]): chains is number[] {\n return chains.length > 0 && chains.every((chain) => typeof chain === 'number');\n}\n"]}
@@ -0,0 +1,2 @@
1
+ async function n(){try{return await import('./utils-72MDY3OH.js')}catch(a){return console.warn("Solana utilities not available:",a),null}}async function r(){let a=await n();return {getChains(t,e){return a?.getSolanaClusters?a.getSolanaClusters(t,e):t&&typeof t=="object"?Object.keys(t):[]},isChainList(t){return a?.isSolanaChainList?a.isSolanaChainList(t):t.length>0&&t.every(e=>typeof e=="string")},getAvailableClusters(){return a?.getAvailableSolanaClusters?a.getAvailableSolanaClusters():[]},isValidCluster(t){return a?.isValidSolanaCluster?a.isValidSolanaCluster(t):false}}}async function l(){try{return await import('./utils-72MDY3OH.js'),!0}catch{return false}}export{r as createSolanaAdapter,l as isSolanaAdapterAvailable};//# sourceMappingURL=solana-2MXIY6UT.js.map
2
+ //# sourceMappingURL=solana-2MXIY6UT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/adapters/solana.ts"],"names":["getSolanaUtils","error","createSolanaAdapter","solanaUtils","solanaRPCUrls","chains","chain","cluster","isSolanaAdapterAvailable"],"mappings":"AAiCA,eAAeA,CAAAA,EAAoD,CACjE,GAAI,CAGF,OADoB,MAAM,OAAO,qBAAoB,CAEvD,CAAA,MAASC,CAAAA,CAAO,CACd,eAAQ,IAAA,CAAK,iCAAA,CAAmCA,CAAK,CAAA,CAC9C,IACT,CACF,CAiCA,eAAsBC,CAAAA,EAA6C,CACjE,IAAMC,CAAAA,CAAc,MAAMH,CAAAA,GAE1B,OAAO,CAQL,SAAA,CAAUI,CAAAA,CAAoBC,CAAAA,CAAmC,CAE/D,OAAIF,CAAAA,EAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBC,CAAAA,CAAeC,CAAM,EAIxDD,CAAAA,EAAiB,OAAOA,CAAAA,EAAkB,QAAA,CACrC,MAAA,CAAO,IAAA,CAAKA,CAAa,CAAA,CAE3B,EACT,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIF,CAAAA,EAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBE,CAAM,CAAA,CAItCA,EAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOC,CAAAA,EAAU,OAAOA,GAAU,QAAQ,CAC/E,CAAA,CAcA,oBAAA,EAAiC,CAC/B,OAAIH,CAAAA,EAAa,0BAAA,CACRA,CAAAA,CAAY,0BAAA,EAA2B,CAEzC,EACT,CAAA,CAkBA,eAAeI,CAAAA,CAA0B,CACvC,OAAIJ,CAAAA,EAAa,oBAAA,CACRA,CAAAA,CAAY,oBAAA,CAAqBI,CAAO,CAAA,CAE1C,KACT,CACF,CACF,CAuBA,eAAsBC,GAA6C,CACjE,GAAI,CACF,OAAA,MAAM,OAAO,qBAAoB,CAAA,CAC1B,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"solana-2MXIY6UT.js","sourcesContent":["import type { ChainAdapter } from './types';\n\n/**\n * Solana utilities module interface for dynamic imports.\n *\n * @internal\n * @since 1.0.0\n */\ninterface SolanaUtilsModule {\n getSolanaClusters?: (solanaRPCUrls: any, chains?: any) => string[];\n isSolanaChainList?: (chains: (string | number)[]) => boolean;\n getAvailableSolanaClusters?: () => string[];\n isValidSolanaCluster?: (cluster: string) => boolean;\n}\n\n/**\n * Dynamically imports and checks availability of Solana utilities.\n * This function attempts to load Solana-specific utilities without throwing errors\n * if the Solana package is not installed in the current environment.\n *\n * @internal\n * @returns Promise resolving to Solana utilities module or null if not available\n *\n * @example\n * ```typescript\n * const solanaUtils = await getSolanaUtils();\n * if (solanaUtils?.getSolanaClusters) {\n * const clusters = solanaUtils.getSolanaClusters(rpcUrls);\n * }\n * ```\n *\n * @since 1.0.0\n */\nasync function getSolanaUtils(): Promise<SolanaUtilsModule | null> {\n try {\n // Dynamic import of Solana utilities - fails gracefully if package not installed\n const solanaUtils = await import('../../solana/utils');\n return solanaUtils;\n } catch (error) {\n console.warn('Solana utilities not available:', error);\n return null;\n }\n}\n\n/**\n * Creates a Solana chain adapter with dynamic loading and fallback support.\n *\n * This adapter provides Solana-specific functionality while gracefully handling\n * environments where Solana utilities are not available. It includes Solana-specific\n * methods like cluster management that are unique to the Solana blockchain architecture.\n *\n * @returns Promise resolving to a configured Solana ChainAdapter\n *\n * @example\n * ```typescript\n * const adapter = await createSolanaAdapter();\n *\n * // Get Solana cluster names from RPC configuration\n * const clusters = adapter.getChains({\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com'\n * });\n * console.log(clusters); // ['mainnet-beta', 'devnet']\n *\n * // Validate cluster list format\n * const isValid = adapter.isChainList(['mainnet-beta', 'devnet']);\n * console.log(isValid); // true (string identifiers are valid for Solana)\n *\n * // Get available clusters\n * const availableClusters = adapter.getAvailableClusters?.();\n * console.log(availableClusters); // All configured cluster names\n * ```\n *\n * @since 1.0.0\n */\nexport async function createSolanaAdapter(): Promise<ChainAdapter> {\n const solanaUtils = await getSolanaUtils();\n\n return {\n /**\n * Extracts cluster names from Solana RPC URL configuration.\n *\n * @param solanaRPCUrls Object mapping cluster names to RPC URLs\n * @param chains Optional array of specific chains to filter\n * @returns Array of cluster names (strings)\n */\n getChains(solanaRPCUrls: any, chains?: any): (string | number)[] {\n // Use imported Solana utilities if available\n if (solanaUtils?.getSolanaClusters) {\n return solanaUtils.getSolanaClusters(solanaRPCUrls, chains);\n }\n\n // Fallback implementation for basic cluster extraction\n if (solanaRPCUrls && typeof solanaRPCUrls === 'object') {\n return Object.keys(solanaRPCUrls);\n }\n return [];\n },\n\n /**\n * Validates whether the provided chains list conforms to Solana cluster format.\n * Solana clusters are typically identified by string names like 'mainnet-beta', 'devnet'.\n *\n * @param chains Array of chain identifiers to validate\n * @returns True if the chain list is valid for Solana\n */\n isChainList(chains: (string | number)[]): boolean {\n if (solanaUtils?.isSolanaChainList) {\n return solanaUtils.isSolanaChainList(chains);\n }\n\n // Fallback validation: Solana clusters should be strings\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n },\n\n /**\n * Gets all available Solana clusters from the current configuration.\n * This is a Solana-specific method that returns cluster names that can be used.\n *\n * @returns Array of available cluster names\n *\n * @example\n * ```typescript\n * const clusters = adapter.getAvailableClusters?.();\n * // Might return: ['mainnet-beta', 'devnet', 'testnet']\n * ```\n */\n getAvailableClusters(): string[] {\n if (solanaUtils?.getAvailableSolanaClusters) {\n return solanaUtils.getAvailableSolanaClusters();\n }\n return [];\n },\n\n /**\n * Validates whether a cluster name is valid for Solana.\n * Checks against known Solana cluster monikers and custom configurations.\n *\n * @param cluster Cluster name to validate\n * @returns True if the cluster name is valid\n *\n * @example\n * ```typescript\n * const isValid = adapter.isValidCluster?.('mainnet-beta');\n * console.log(isValid); // true\n *\n * const isInvalid = adapter.isValidCluster?.('invalid-cluster');\n * console.log(isInvalid); // false\n * ```\n */\n isValidCluster(cluster: string): boolean {\n if (solanaUtils?.isValidSolanaCluster) {\n return solanaUtils.isValidSolanaCluster(cluster);\n }\n return false;\n },\n };\n}\n\n/**\n * Checks if the Solana adapter can be created in the current environment.\n * This function verifies that the required Solana utilities are available\n * by attempting to import them.\n *\n * @returns Promise resolving to true if Solana adapter is available\n *\n * @example\n * ```typescript\n * const hasSolana = await isSolanaAdapterAvailable();\n * if (hasSolana) {\n * const adapter = await createSolanaAdapter();\n * // Use Solana functionality\n * const clusters = adapter.getAvailableClusters?.();\n * } else {\n * console.log('Solana support not available in this build');\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport async function isSolanaAdapterAvailable(): Promise<boolean> {\n try {\n await import('../../solana/utils');\n return true;\n } catch {\n return false;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export{c as getAvailableSolanaClusters,a as getSolanaClusters,b as isSolanaChainList,d as isValidSolanaCluster}from'./chunk-KKCRUSJT.js';//# sourceMappingURL=solana-EV65GS7Q.js.map
2
+ //# sourceMappingURL=solana-EV65GS7Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"solana-EV65GS7Q.js"}
@@ -0,0 +1,2 @@
1
+ export{a as getEvmChains,b as isEvmChainList}from'./chunk-RR5G7U5F.js';//# sourceMappingURL=utils-5KC7QXWB.js.map
2
+ //# sourceMappingURL=utils-5KC7QXWB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"utils-5KC7QXWB.js"}
@@ -0,0 +1,2 @@
1
+ export{c as getAvailableSolanaClusters,a as getSolanaClusters,b as isSolanaChainList,d as isValidSolanaCluster}from'./chunk-KKCRUSJT.js';//# sourceMappingURL=utils-72MDY3OH.js.map
2
+ //# sourceMappingURL=utils-72MDY3OH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"utils-72MDY3OH.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/nova-connect",
3
- "version": "1.0.0-fix-test-alpha.51.1ef6db6",
3
+ "version": "1.0.0-fix-test-alpha.53.a751bf7",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -89,12 +89,7 @@
89
89
  "@tuwaio/pulsar-core": ">=0",
90
90
  "@tuwaio/nova-core": ">=0",
91
91
  "@tuwaio/nova-transactions": ">=0",
92
- "@wallet-standard/app": "1.x.x",
93
- "@wallet-standard/base": "1.x.x",
94
- "@wallet-standard/features": "1.x.x",
95
- "@wallet-standard/core": "1.x.x",
96
- "@wallet-standard/ui": "1.x.x",
97
- "@wallet-standard/ui-registry": "1.x.x",
92
+ "@wallet-standard/react": "1.x.x",
98
93
  "@wagmi/core": "2.x.x",
99
94
  "@wagmi/connectors": "6.x.x",
100
95
  "gill": ">=0.12",
@@ -108,6 +103,89 @@
108
103
  "viem": "2.x.x",
109
104
  "zustand": "5.x.x"
110
105
  },
106
+ "peerDependenciesMeta": {
107
+ "@bgd-labs/react-web3-icons": {
108
+ "optional": false
109
+ },
110
+ "@heroicons/react": {
111
+ "optional": false
112
+ },
113
+ "@radix-ui/react-dialog": {
114
+ "optional": false
115
+ },
116
+ "@radix-ui/react-select": {
117
+ "optional": false
118
+ },
119
+ "@tuwaio/orbit-core": {
120
+ "optional": false
121
+ },
122
+ "@tuwaio/satellite-core": {
123
+ "optional": false
124
+ },
125
+ "@tuwaio/satellite-react": {
126
+ "optional": false
127
+ },
128
+ "@tuwaio/pulsar-core": {
129
+ "optional": false
130
+ },
131
+ "@tuwaio/nova-core": {
132
+ "optional": false
133
+ },
134
+ "react": {
135
+ "optional": false
136
+ },
137
+ "immer": {
138
+ "optional": false
139
+ },
140
+ "zustand": {
141
+ "optional": false
142
+ },
143
+ "ethereum-blockies-base64": {
144
+ "optional": false
145
+ },
146
+ "framer-motion": {
147
+ "optional": false
148
+ },
149
+ "@emotion/is-prop-valid": {
150
+ "optional": false
151
+ },
152
+ "react-toastify": {
153
+ "optional": false
154
+ },
155
+ "dayjs": {
156
+ "optional": true
157
+ },
158
+ "@tuwaio/orbit-evm": {
159
+ "optional": true
160
+ },
161
+ "@tuwaio/satellite-evm": {
162
+ "optional": true
163
+ },
164
+ "@tuwaio/nova-transactions": {
165
+ "optional": true
166
+ },
167
+ "@wagmi/core": {
168
+ "optional": true
169
+ },
170
+ "@wagmi/connectors": {
171
+ "optional": true
172
+ },
173
+ "viem": {
174
+ "optional": true
175
+ },
176
+ "@tuwaio/orbit-solana": {
177
+ "optional": true
178
+ },
179
+ "@tuwaio/satellite-solana": {
180
+ "optional": true
181
+ },
182
+ "@wallet-standard/react": {
183
+ "optional": true
184
+ },
185
+ "gill": {
186
+ "optional": true
187
+ }
188
+ },
111
189
  "devDependencies": {
112
190
  "@bgd-labs/react-web3-icons": "^1.51.0",
113
191
  "@heroicons/react": "^2.2.0",
@@ -116,12 +194,7 @@
116
194
  "@tuwaio/pulsar-core": "1.0.0-fix-orbit-integration-alpha.18.e3594e7",
117
195
  "@tuwaio/nova-core": "1.0.0-fix-integrate-orbit-alpha.28.5540261",
118
196
  "@tuwaio/nova-transactions": "1.0.0-fix-integrate-orbit-alpha.28.5540261",
119
- "@wallet-standard/app": "^1.1.0",
120
- "@wallet-standard/base": "^1.1.0",
121
- "@wallet-standard/features": "^1.1.0",
122
- "@wallet-standard/core": "^1.1.1",
123
- "@wallet-standard/ui": "^1.0.1",
124
- "@wallet-standard/ui-registry": "^1.0.1",
197
+ "@wallet-standard/react": "^1.0.1",
125
198
  "@wagmi/core": "^2.22.1",
126
199
  "@wagmi/connectors": "^6.0.1",
127
200
  "gill": "^0.12.0",
@@ -146,13 +219,13 @@
146
219
  "tw-animate-css": "^1.4.0",
147
220
  "typescript": "^5.9.3",
148
221
  "tsup": "^8.5.0",
149
- "@tuwaio/orbit-solana": "^1.0.0-fix-test-alpha.51.1ef6db6",
150
- "@tuwaio/orbit-evm": "^1.0.0-fix-test-alpha.51.1ef6db6",
151
- "@tuwaio/orbit-core": "^1.0.0-fix-test-alpha.51.1ef6db6",
152
- "@tuwaio/satellite-core": "^1.0.0-fix-test-alpha.51.1ef6db6",
153
- "@tuwaio/satellite-react": "^1.0.0-fix-test-alpha.51.1ef6db6",
154
- "@tuwaio/satellite-evm": "^1.0.0-fix-test-alpha.51.1ef6db6",
155
- "@tuwaio/satellite-solana": "^1.0.0-fix-test-alpha.51.1ef6db6"
222
+ "@tuwaio/orbit-core": "^1.0.0-fix-test-alpha.53.a751bf7",
223
+ "@tuwaio/orbit-solana": "^1.0.0-fix-test-alpha.53.a751bf7",
224
+ "@tuwaio/satellite-core": "^1.0.0-fix-test-alpha.53.a751bf7",
225
+ "@tuwaio/satellite-evm": "^1.0.0-fix-test-alpha.53.a751bf7",
226
+ "@tuwaio/satellite-solana": "^1.0.0-fix-test-alpha.53.a751bf7",
227
+ "@tuwaio/satellite-react": "^1.0.0-fix-test-alpha.53.a751bf7",
228
+ "@tuwaio/orbit-evm": "^1.0.0-fix-test-alpha.53.a751bf7"
156
229
  },
157
230
  "scripts": {
158
231
  "start": "tsup src/index.ts --watch",