@tuwaio/orbit-solana 0.3.1 → 0.3.2
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.
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -74,7 +74,9 @@ declare const getCluster: ({ cluster, walletCluster }: {
|
|
|
74
74
|
* @param params.cluster - The target cluster, used when `walletCluster` is not provided.
|
|
75
75
|
* @param params.walletCluster - The cluster of the connected wallet. Takes precedence over `cluster`.
|
|
76
76
|
* @param params.rpcUrls - Mapping of cluster monikers to RPC URLs.
|
|
77
|
-
* @returns The configured RPC URL
|
|
77
|
+
* @returns The configured RPC URL. When the cluster has no URL configured, the public endpoint of the same cluster
|
|
78
|
+
* (`https://api.mainnet-beta.solana.com`, `https://api.devnet.solana.com` or `https://api.testnet.solana.com`); for
|
|
79
|
+
* `localnet`, which has no public endpoint, `https://api.mainnet-beta.solana.com/`.
|
|
78
80
|
*/
|
|
79
81
|
declare const getRpcUrlForCluster: ({ cluster, walletCluster, rpcUrls, }: {
|
|
80
82
|
cluster: SolanaClusterMoniker;
|
package/dist/index.d.ts
CHANGED
|
@@ -74,7 +74,9 @@ declare const getCluster: ({ cluster, walletCluster }: {
|
|
|
74
74
|
* @param params.cluster - The target cluster, used when `walletCluster` is not provided.
|
|
75
75
|
* @param params.walletCluster - The cluster of the connected wallet. Takes precedence over `cluster`.
|
|
76
76
|
* @param params.rpcUrls - Mapping of cluster monikers to RPC URLs.
|
|
77
|
-
* @returns The configured RPC URL
|
|
77
|
+
* @returns The configured RPC URL. When the cluster has no URL configured, the public endpoint of the same cluster
|
|
78
|
+
* (`https://api.mainnet-beta.solana.com`, `https://api.devnet.solana.com` or `https://api.testnet.solana.com`); for
|
|
79
|
+
* `localnet`, which has no public endpoint, `https://api.mainnet-beta.solana.com/`.
|
|
78
80
|
*/
|
|
79
81
|
declare const getRpcUrlForCluster: ({ cluster, walletCluster, rpcUrls, }: {
|
|
80
82
|
cluster: SolanaClusterMoniker;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var kit=require('@solana/kit'),orbitCore=require('@tuwaio/orbit-core'),app=require('@wallet-standard/app'),uiRegistry=require('@wallet-standard/ui-registry');var s={mainnet:"https://api.mainnet-beta.solana.com",devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com"};function
|
|
2
|
-
exports.clearSolanaAvatarCache=
|
|
1
|
+
'use strict';var kit=require('@solana/kit'),orbitCore=require('@tuwaio/orbit-core'),app=require('@wallet-standard/app'),uiRegistry=require('@wallet-standard/ui-registry');var s={mainnet:"https://api.mainnet-beta.solana.com",devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com"};function g(t){let e=t.split(":");if(e.length<2)return null;let r=e[1];r==="mainnet-beta"&&(r="mainnet");let n=r;return n in s?n:null}function S(t,e){let r={},n=Object.keys(e||s);for(let a of t){if(typeof a!="string")continue;let o=g(a);if(!o||!n.includes(o))continue;let f=e?.[o]??s[o];f&&(r[o]=f);}return r}function z(t,e){if(e&&e.length>0){let r=S(e,t);return Object.keys(r)}return Object.keys(t||s)}function T(t){return t.length>0&&t.every(e=>typeof e=="string")}function W(){return Object.keys(s)}function D(t){return t in s}var m=({cluster:t,walletCluster:e})=>{let r="mainnet";return t?t.includes(":")?t.split(":")[1]:t:e??r},X=({cluster:t,walletCluster:e,rpcUrls:r})=>{let n=e??t;return r[n]??s[n]??"https://api.mainnet-beta.solana.com/"};function h(t){try{return new URL(t),!0}catch{return false}}function R(t){return t.replace(/^http/,"ws")}var l=new Map,J=({rpcUrlOrMoniker:t,rpcUrls:e})=>{if(l.has(t))return l.get(t);let r=h(t)?t:e?e[t]??s[t]:s[t];if(!r)throw new Error(`Unable to resolve RPC URL for input: "${t}". Ensure it's a valid URL or known moniker.`);let n=kit.createSolanaRpc(r),a;try{a=kit.createSolanaRpcSubscriptions(R(r));}catch{}let o={rpc:n,...a?{rpcSubscriptions:a}:{}};return l.set(t,o),o},Q=()=>{l.clear();};function v(t){try{return new URL(t),!0}catch{return false}}var c=new Map,tt=({rpcUrlOrMoniker:t,rpcUrls:e})=>{if(c.has(t))return c.get(t);let r=v(t)?t:e?e[t]??s[t]:s[t];if(!r)throw new Error(`Unable to resolve RPC URL for input: "${t}". Ensure it's a valid URL or known moniker.`);let n=kit.createSolanaRpc(r);return c.set(t,n),n},et=()=>{c.clear();};function d(){return orbitCore.filterUniqueByKey(app.getWallets().get().map(uiRegistry.getOrCreateUiWalletForStandardWallet),"name").filter(t=>{try{return !t||!Array.isArray(t.chains)||!t.features||!Array.isArray(t.features)||!["standard:connect","standard:disconnect","standard:events","solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"].every(n=>t.features.includes(n))?!1:t.chains.every(n=>{try{if(typeof n!="string")return !1;let a=n.split(":");return a.length>=1&&a[0]==="solana"}catch(a){return console.warn("Error parsing chain:",n,a),!1}})}catch(e){return console.warn("Error filtering wallet:",e),false}})}function ct(){let t=orbitCore.lastConnectedConnectorHelpers.getLastConnectedConnector(),r=d().find(n=>n.accounts.find(a=>a.address.toLowerCase()===t?.address?.toLowerCase()));if(!r)throw new Error("Connector not provided. Cannot perform chain check.");return r}var u=new Map,L="https://image-api.bonfida.com",P=t=>/^[a-z0-9-]+\.sol$/.test(t.toLowerCase()),N=async t=>{try{let e=await fetch(`${L}/image?domain=${encodeURIComponent(t)}`);if(!e.ok)return null;let r=await e.json();return r.result&&Array.isArray(r.result)&&r.result.length>0?r.result.find(a=>a.domain===t)?.image??r.result[0]?.image??null:null}catch(e){return console.warn("Failed to fetch SNS avatar:",e),null}},i=t=>`https://api.dicebear.com/7.x/identicon/svg?seed=${encodeURIComponent(t)}`,E=async t=>{if(!t)return i("default");let e=t.trim();if(!e)return i("default");let r=e.toLowerCase(),n=u.get(r);if(n!==void 0)return n;let a;try{if(P(e)){let o=await N(e);o?a=o:a=i(e);}else kit.isAddress(e),a=i(e);}catch(o){console.warn("Error resolving avatar:",o),a=i(e);}return u.set(r,a),a},ft=()=>{u.clear();},mt=()=>u.size,dt=async t=>{try{await E(t);}catch(e){console.warn("Failed to preload avatar:",e);}};var p=new Map,$="https://sns-api.bonfida.com",I=async t=>{try{let e=await fetch(`${$}/v2/user/fav-domains/${t}`);if(!e.ok)return null;let r=await e.json();return r.result&&typeof r.result=="object"&&t in r.result?r.result[t]:null}catch(e){return console.warn("Failed to fetch SNS name:",e),null}},Ct=async t=>{if(!t)return t||"";let e=t.trim();if(!kit.isAddress(e))return t;let r=e.toLowerCase(),n=p.get(r);if(n!==void 0)return n;let a=t;try{let o=await I(e);o&&(a=o);}catch(o){console.warn("Error resolving address name:",o);}return p.set(r,a),a},yt=()=>{p.clear();},ht=()=>p.size;var _="https://explorer.solana.com",B=new Set(["mainnet","mainnet-beta"]),vt=(t,e)=>{let r=m({cluster:e===void 0?void 0:String(e)}),n=_,a=B.has(r)?"":`?cluster=${r}`,o=t?t.startsWith("/")?t:`/${t}`:"/";return `${n}${o}${a}`};
|
|
2
|
+
exports.clearSolanaAvatarCache=ft;exports.clearSolanaClientCache=Q;exports.clearSolanaNameCache=yt;exports.clearSolanaRpcCache=et;exports.createSolanaClientWithCache=J;exports.createSolanaRPC=tt;exports.defaultRpcUrlsByMoniker=s;exports.getAvailableSolanaClusters=W;exports.getAvailableSolanaConnectors=d;exports.getCluster=m;exports.getConnectedSolanaConnector=ct;exports.getRpcUrlForCluster=X;exports.getSolanaAddressAvatar=E;exports.getSolanaAddressName=Ct;exports.getSolanaAvatarCacheSize=mt;exports.getSolanaClusters=z;exports.getSolanaExplorerLink=vt;exports.getSolanaNameCacheSize=ht;exports.isSolanaChainList=T;exports.isValidSolanaCluster=D;exports.preloadSolanaAvatar=dt;
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {createSolanaRpc,createSolanaRpcSubscriptions,isAddress}from'@solana/kit';import {filterUniqueByKey,lastConnectedConnectorHelpers}from'@tuwaio/orbit-core';import {getWallets}from'@wallet-standard/app';import {getOrCreateUiWalletForStandardWallet}from'@wallet-standard/ui-registry';var s={mainnet:"https://api.mainnet-beta.solana.com",devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com"};function
|
|
2
|
-
export{
|
|
1
|
+
import {createSolanaRpc,createSolanaRpcSubscriptions,isAddress}from'@solana/kit';import {filterUniqueByKey,lastConnectedConnectorHelpers}from'@tuwaio/orbit-core';import {getWallets}from'@wallet-standard/app';import {getOrCreateUiWalletForStandardWallet}from'@wallet-standard/ui-registry';var s={mainnet:"https://api.mainnet-beta.solana.com",devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com"};function g(t){let e=t.split(":");if(e.length<2)return null;let r=e[1];r==="mainnet-beta"&&(r="mainnet");let n=r;return n in s?n:null}function S(t,e){let r={},n=Object.keys(e||s);for(let a of t){if(typeof a!="string")continue;let o=g(a);if(!o||!n.includes(o))continue;let f=e?.[o]??s[o];f&&(r[o]=f);}return r}function z(t,e){if(e&&e.length>0){let r=S(e,t);return Object.keys(r)}return Object.keys(t||s)}function T(t){return t.length>0&&t.every(e=>typeof e=="string")}function W(){return Object.keys(s)}function D(t){return t in s}var m=({cluster:t,walletCluster:e})=>{let r="mainnet";return t?t.includes(":")?t.split(":")[1]:t:e??r},X=({cluster:t,walletCluster:e,rpcUrls:r})=>{let n=e??t;return r[n]??s[n]??"https://api.mainnet-beta.solana.com/"};function h(t){try{return new URL(t),!0}catch{return false}}function R(t){return t.replace(/^http/,"ws")}var l=new Map,J=({rpcUrlOrMoniker:t,rpcUrls:e})=>{if(l.has(t))return l.get(t);let r=h(t)?t:e?e[t]??s[t]:s[t];if(!r)throw new Error(`Unable to resolve RPC URL for input: "${t}". Ensure it's a valid URL or known moniker.`);let n=createSolanaRpc(r),a;try{a=createSolanaRpcSubscriptions(R(r));}catch{}let o={rpc:n,...a?{rpcSubscriptions:a}:{}};return l.set(t,o),o},Q=()=>{l.clear();};function v(t){try{return new URL(t),!0}catch{return false}}var c=new Map,tt=({rpcUrlOrMoniker:t,rpcUrls:e})=>{if(c.has(t))return c.get(t);let r=v(t)?t:e?e[t]??s[t]:s[t];if(!r)throw new Error(`Unable to resolve RPC URL for input: "${t}". Ensure it's a valid URL or known moniker.`);let n=createSolanaRpc(r);return c.set(t,n),n},et=()=>{c.clear();};function d(){return filterUniqueByKey(getWallets().get().map(getOrCreateUiWalletForStandardWallet),"name").filter(t=>{try{return !t||!Array.isArray(t.chains)||!t.features||!Array.isArray(t.features)||!["standard:connect","standard:disconnect","standard:events","solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"].every(n=>t.features.includes(n))?!1:t.chains.every(n=>{try{if(typeof n!="string")return !1;let a=n.split(":");return a.length>=1&&a[0]==="solana"}catch(a){return console.warn("Error parsing chain:",n,a),!1}})}catch(e){return console.warn("Error filtering wallet:",e),false}})}function ct(){let t=lastConnectedConnectorHelpers.getLastConnectedConnector(),r=d().find(n=>n.accounts.find(a=>a.address.toLowerCase()===t?.address?.toLowerCase()));if(!r)throw new Error("Connector not provided. Cannot perform chain check.");return r}var u=new Map,L="https://image-api.bonfida.com",P=t=>/^[a-z0-9-]+\.sol$/.test(t.toLowerCase()),N=async t=>{try{let e=await fetch(`${L}/image?domain=${encodeURIComponent(t)}`);if(!e.ok)return null;let r=await e.json();return r.result&&Array.isArray(r.result)&&r.result.length>0?r.result.find(a=>a.domain===t)?.image??r.result[0]?.image??null:null}catch(e){return console.warn("Failed to fetch SNS avatar:",e),null}},i=t=>`https://api.dicebear.com/7.x/identicon/svg?seed=${encodeURIComponent(t)}`,E=async t=>{if(!t)return i("default");let e=t.trim();if(!e)return i("default");let r=e.toLowerCase(),n=u.get(r);if(n!==void 0)return n;let a;try{if(P(e)){let o=await N(e);o?a=o:a=i(e);}else isAddress(e),a=i(e);}catch(o){console.warn("Error resolving avatar:",o),a=i(e);}return u.set(r,a),a},ft=()=>{u.clear();},mt=()=>u.size,dt=async t=>{try{await E(t);}catch(e){console.warn("Failed to preload avatar:",e);}};var p=new Map,$="https://sns-api.bonfida.com",I=async t=>{try{let e=await fetch(`${$}/v2/user/fav-domains/${t}`);if(!e.ok)return null;let r=await e.json();return r.result&&typeof r.result=="object"&&t in r.result?r.result[t]:null}catch(e){return console.warn("Failed to fetch SNS name:",e),null}},Ct=async t=>{if(!t)return t||"";let e=t.trim();if(!isAddress(e))return t;let r=e.toLowerCase(),n=p.get(r);if(n!==void 0)return n;let a=t;try{let o=await I(e);o&&(a=o);}catch(o){console.warn("Error resolving address name:",o);}return p.set(r,a),a},yt=()=>{p.clear();},ht=()=>p.size;var _="https://explorer.solana.com",B=new Set(["mainnet","mainnet-beta"]),vt=(t,e)=>{let r=m({cluster:e===void 0?void 0:String(e)}),n=_,a=B.has(r)?"":`?cluster=${r}`,o=t?t.startsWith("/")?t:`/${t}`:"/";return `${n}${o}${a}`};
|
|
2
|
+
export{ft as clearSolanaAvatarCache,Q as clearSolanaClientCache,yt as clearSolanaNameCache,et as clearSolanaRpcCache,J as createSolanaClientWithCache,tt as createSolanaRPC,s as defaultRpcUrlsByMoniker,W as getAvailableSolanaClusters,d as getAvailableSolanaConnectors,m as getCluster,ct as getConnectedSolanaConnector,X as getRpcUrlForCluster,E as getSolanaAddressAvatar,Ct as getSolanaAddressName,mt as getSolanaAvatarCacheSize,z as getSolanaClusters,vt as getSolanaExplorerLink,ht as getSolanaNameCacheSize,T as isSolanaChainList,D as isValidSolanaCluster,dt as preloadSolanaAvatar};
|