@rango-dev/provider-safepal 0.53.1-next.1 → 0.55.1-next.0

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/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var P=Object.defineProperty;var o=(e,t)=>P(e,"name",{value:t,configurable:!0});import{defineVersions as ee}from"@rango-dev/wallets-core/utils";import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as M,chooseInstance as w,getEvmAccounts as N,subscribeToEvm as L,switchNetworkForEvm as C,WalletTypes as R}from"@rango-dev/wallets-shared";import{evmBlockchains as g,solanaBlockchain as u}from"rango-types";import{dynamicImportWithRefinedError as x,getNetworkInstance as T,Networks as k}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as A,TransactionType as I}from"rango-types";async function i(e){let t=T(e,k.ETHEREUM),r=new A,{DefaultEvmSigner:a}=await x(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(I.EVM,new a(t)),r}o(i,"getSigners");import{LegacyNetworks as d}from"@rango-dev/wallets-core/legacy";function n(){let{safepalProvider:e}=window;if(!e)return null;let t=new Map;return e&&t.set(d.ETHEREUM,e),t}o(n,"safepal");function s(){let t=n()?.get(d.ETHEREUM);if(!t)throw new Error("Safepal not injected or EVM not enabled. Please check your wallet.");return t}o(s,"evmSafepal");function f(){let e=n();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(f,"getInstanceOrThrow");var B=R.SAFEPAL,F={type:B,defaultNetwork:p.ETHEREUM},W=n,H=o(async({instance:e,meta:t})=>{let r=w(e,t,p.ETHEREUM),a=[];if(r){let y=await N(r);a.push(y)}return a},"connect"),U=o(e=>{let t,r=w(e.instance,e.meta,p.ETHEREUM);return r&&(t=L({...e,instance:r})),()=>{t&&t()}},"subscribe"),V=C,D=M,_=i,j=o(e=>{let t=g(e),r=u(e);return{name:"SafePal",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",BRAVE:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",DEFAULT:"https://www.safepal.com/download"},color:"#4A21EF",supportedChains:[...t,...r],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:a=>g(a)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:a=>u(a)}]}}},"getWalletInfo"),h=o(()=>({config:F,getInstance:W,connect:H,subscribe:U,switchNetwork:V,canSwitchNetworkTo:D,getSigners:_,getWalletInfo:j}),"buildLegacyProvider");import{ProviderBuilder as Z}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as O}from"rango-types";var c="safepal",v={name:"SafePal",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",brave:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",firefox:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",homepage:"https://www.safepal.com/download"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>O(e)}]}},{name:"signers",value:{getSigners:async()=>i(f())}}]};import{NamespaceBuilder as z}from"@rango-dev/wallets-core";import{builders as X,standardizeAndThrowError as Y}from"@rango-dev/wallets-core/namespaces/common";import{actions as m,builders as l}from"@rango-dev/wallets-core/namespaces/evm";var[q,E]=l.changeAccountSubscriber(s).build(),G=l.connect().action(m.connect(s)).before(q).or(E).or(Y).build(),J=X.disconnect().after(E).build(),K=l.canSwitchNetwork().action(m.canSwitchNetwork()).build(),Q=l.getChainId().action(m.getChainId(s)).build(),b=new z("EVM",c).action(G).action(J).action(K).action(Q).build();var $=1e3,S=o(()=>new Z(c).init(function(e){setTimeout(()=>{if(n()){let[,t]=e.state();t("installed",!0),console.debug("[safepal] instance detected.",e)}},$)}).config("metadata",v).add("evm",b).build(),"buildProvider");var We=o(()=>ee().version("0.0.0",h()).version("1.0.0",S()).build(),"versions");export{We as versions};
1
+ var P=Object.defineProperty;var o=(e,t)=>P(e,"name",{value:t,configurable:!0});import{defineVersions as ie}from"@rango-dev/wallets-core/utils";import{LegacyNetworks as l}from"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as L,chooseInstance as h,getEvmAccounts as C,subscribeToEvm as R,switchNetworkForEvm as B,WalletTypes as F}from"@rango-dev/wallets-shared";import{evmBlockchains as u,solanaBlockchain as w}from"rango-types";import{dynamicImportWithRefinedError as x,getNetworkInstance as k,Networks as T}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as I,TransactionType as M}from"rango-types";async function i(e){let t=k(e,T.ETHEREUM),r=new I,{DefaultEvmSigner:n}=await x(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(M.EVM,new n(t)),r}o(i,"getSigners");import{LegacyNetworks as d}from"@rango-dev/wallets-core/legacy";import{isEvmAddress as N}from"@rango-dev/wallets-shared";function a(){let{safepalProvider:e}=window;if(!e)return null;let t=new Map;return e&&t.set(d.ETHEREUM,e),t}o(a,"safepal");function s(){let t=a()?.get(d.ETHEREUM);if(!t)throw new Error("Safepal not injected or EVM not enabled. Please check your wallet.");return t}o(s,"evmSafepal");function f(){let e=a();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(f,"getInstanceOrThrow");function g(e){let t=e.split(":")[2];return N(t)}o(g,"isValidEvmAddress");var V=F.SAFEPAL,W={type:V,defaultNetwork:l.ETHEREUM},U=a,H=o(async({instance:e,meta:t})=>{let r=h(e,t,l.ETHEREUM),n=[];if(r){let A=await C(r);n.push(A)}return n},"connect"),_=o(e=>{let t,r=h(e.instance,e.meta,l.ETHEREUM);return r&&(t=R({...e,instance:r})),()=>{t&&t()}},"subscribe"),D=B,j=L,O=i,z=o(e=>{let t=u(e),r=w(e);return{name:"SafePal",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",BRAVE:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",DEFAULT:"https://www.safepal.com/download"},color:"#4A21EF",supportedChains:[...t,...r],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>u(n)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>w(n)}]}}},"getWalletInfo"),v=o(()=>({config:W,getInstance:U,connect:H,subscribe:_,switchNetwork:D,canSwitchNetworkTo:j,getSigners:O,getWalletInfo:z}),"buildLegacyProvider");import{ProviderBuilder as ne}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as X}from"rango-types";var c="safepal",E={name:"SafePal",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",brave:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",firefox:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",homepage:"https://www.safepal.com/download"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>X(e)}]}},{name:"signers",value:{getSigners:async()=>i(f())}}]};import{ActionBuilder as Y,NamespaceBuilder as q}from"@rango-dev/wallets-core";import{builders as G,connectAndUpdateStateForMultiNetworks as J,intoConnecting as K,intoConnectionFinished as Q,standardizeAndThrowError as Z}from"@rango-dev/wallets-core/namespaces/common";import{actions as p,builders as m}from"@rango-dev/wallets-core/namespaces/evm";var[$,b]=m.changeAccountSubscriber(s).build(),ee=new Y("connect").action(p.connect(s)).before($).before(K).and((e,t)=>{if(t.accounts.some(r=>!g(r)))throw new Error("Non valid EVM address returned from wallet");return t}).and(J).after(Q).or(b).or(Z).build(),te=G.disconnect().after(b).build(),oe=m.canSwitchNetwork().action(p.canSwitchNetwork()).build(),re=m.getChainId().action(p.getChainId(s)).build(),S=new q("EVM",c).action(ee).action(te).action(oe).action(re).build();var ae=1e3,y=o(()=>new ne(c).init(function(e){setTimeout(()=>{if(a()){let[,t]=e.state();t("installed",!0),console.debug("[safepal] instance detected.",e)}},ae)}).config("metadata",E).add("evm",S).build(),"buildProvider");var Oe=o(()=>ie().version("0.0.0",v()).version("1.0.0",y()).build(),"versions");export{Oe as versions};
2
2
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/mod.ts", "../src/legacy/index.ts", "../src/signer.ts", "../src/utils.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts"],
4
- "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type {\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n type LegacyProviderInterface,\n LegacyNetworks as Networks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport signer from '../signer.js';\nimport { type Provider, safepal as safepal_instance } from '../utils.js';\n\nconst WALLET = WalletTypes.SAFEPAL;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = safepal_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n\n const results: ProviderConnectResult[] = [];\n\n if (ethInstance) {\n const evmResult = await getEvmAccounts(ethInstance);\n results.push(evmResult);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n let cleanup: ReturnType<Subscribe>;\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n\n if (ethInstance) {\n cleanup = subscribeToEvm({ ...options, instance: ethInstance });\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n }\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'SafePal',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n FIREFOX:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n DEFAULT: 'https://www.safepal.com/download',\n },\n color: '#4A21EF',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n return signers;\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function safepal(): Provider | null {\n const { safepalProvider: safePalEvm } = window;\n if (!safePalEvm) {\n return null;\n }\n const instances = new Map();\n if (safePalEvm) {\n instances.set(LegacyNetworks.ETHEREUM, safePalEvm);\n }\n\n return instances;\n}\n\nexport function evmSafepal(): EvmProviderApi {\n const instances = safepal();\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n if (!evmInstance) {\n throw new Error(\n 'Safepal not injected or EVM not enabled. Please check your wallet.'\n );\n }\n return evmInstance as EvmProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = safepal();\n\n if (!instances) {\n throw new Error('Trust Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { safepal as safepalInstance } from './utils.js';\n\nconst WAIT_TO_LOAD_INSTANCE_DELAY = 1000;\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n setTimeout(() => {\n if (safepalInstance()) {\n const [, setState] = context.state();\n setState('installed', true);\n console.debug('[safepal] instance detected.', context);\n }\n }, WAIT_TO_LOAD_INSTANCE_DELAY);\n })\n\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { type BlockchainMeta, evmBlockchains } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'safepal';\nexport const metadata: ProviderMetadata = {\n name: 'SafePal',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n brave:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n firefox:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n homepage: 'https://www.safepal.com/download',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmSafepal } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmSafepal)\n .build();\n\nconst connect = builders\n .connect()\n .action(actions.connect(evmSafepal))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmSafepal))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "Networks", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "safepal", "safePalEvm", "instances", "LegacyNetworks", "__name", "evmSafepal", "evmInstance", "getInstanceOrThrow", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "safepal", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "results", "evmResult", "getEvmAccounts", "subscribe", "options", "cleanup", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmSafepal", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "WAIT_TO_LOAD_INSTANCE_DELAY", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "safepal", "setState", "metadata", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
4
+ "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type {\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n type LegacyProviderInterface,\n LegacyNetworks as Networks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport signer from '../signer.js';\nimport { type Provider, safepal as safepal_instance } from '../utils.js';\n\nconst WALLET = WalletTypes.SAFEPAL;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = safepal_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n\n const results: ProviderConnectResult[] = [];\n\n if (ethInstance) {\n const evmResult = await getEvmAccounts(ethInstance);\n results.push(evmResult);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n let cleanup: ReturnType<Subscribe>;\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n\n if (ethInstance) {\n cleanup = subscribeToEvm({ ...options, instance: ethInstance });\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n }\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'SafePal',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n FIREFOX:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n DEFAULT: 'https://www.safepal.com/download',\n },\n color: '#4A21EF',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n return signers;\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\nimport { isEvmAddress } from '@rango-dev/wallets-shared';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function safepal(): Provider | null {\n const { safepalProvider: safePalEvm } = window;\n if (!safePalEvm) {\n return null;\n }\n const instances = new Map();\n if (safePalEvm) {\n instances.set(LegacyNetworks.ETHEREUM, safePalEvm);\n }\n\n return instances;\n}\n\nexport function evmSafepal(): EvmProviderApi {\n const instances = safepal();\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n if (!evmInstance) {\n throw new Error(\n 'Safepal not injected or EVM not enabled. Please check your wallet.'\n );\n }\n return evmInstance as EvmProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = safepal();\n\n if (!instances) {\n throw new Error('Trust Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n/**\n * Return true if address is a valid EVM address.\n * Accepts:\n * - all-lowercase or all-uppercase 0x-prefixed hex (non-checksummed - allowed)\n * - checksummed (mixed-case according to EIP-55)\n */\nexport function isValidEvmAddress(address: string): boolean {\n // Pick wallet address.\n const walletAddress = address.split(':')[2];\n\n return isEvmAddress(walletAddress);\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { safepal as safepalInstance } from './utils.js';\n\nconst WAIT_TO_LOAD_INSTANCE_DELAY = 1000;\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n setTimeout(() => {\n if (safepalInstance()) {\n const [, setState] = context.state();\n setState('installed', true);\n console.debug('[safepal] instance detected.', context);\n }\n }, WAIT_TO_LOAD_INSTANCE_DELAY);\n })\n\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { type BlockchainMeta, evmBlockchains } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'safepal';\nexport const metadata: ProviderMetadata = {\n name: 'SafePal',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n brave:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n firefox:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n homepage: 'https://www.safepal.com/download',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmSafepal, isValidEvmAddress } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmSafepal)\n .build();\n\n/**\n * Important: Keep this implementation in sync with wallets/core/src/namespaces/evm/builders\n */\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmSafepal))\n .before(changeAccountSubscriber)\n .before(intoConnecting)\n /*\n * Validate all accounts are valid EVM addresses\n * Sometimes wallets may return non-EVM addresses - this check prevents that\n */\n .and((_, args) => {\n if (args.accounts.some((account: string) => !isValidEvmAddress(account))) {\n throw new Error('Non valid EVM address returned from wallet');\n }\n\n return args;\n })\n .and(connectAndUpdateStateForMultiNetworks)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmSafepal))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "Networks", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "isEvmAddress", "safepal", "safePalEvm", "instances", "LegacyNetworks", "__name", "evmSafepal", "evmInstance", "getInstanceOrThrow", "isValidEvmAddress", "address", "walletAddress", "isEvmAddress", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "safepal", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "results", "evmResult", "getEvmAccounts", "subscribe", "options", "cleanup", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "actions", "builders", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmSafepal", "connect", "ActionBuilder", "actions", "intoConnecting", "_", "args", "account", "isValidEvmAddress", "connectAndUpdateStateForMultiNetworks", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "WAIT_TO_LOAD_INSTANCE_DELAY", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "safepal", "setState", "metadata", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAuCzE,QAAA,MAAM,GAAG,gEAKC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AA0DzE,QAAA,MAAM,GAAG,gEAKC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"inputs":{"src/signer.ts":{"bytes":715,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1059,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":3285,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1295,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1216,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":713,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":14371},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1477},"src/signer.ts":{"bytesInOutput":371},"src/utils.ts":{"bytesInOutput":484},"src/provider.ts":{"bytesInOutput":276},"src/constants.ts":{"bytesInOutput":744},"src/namespaces/evm.ts":{"bytesInOutput":556}},"bytes":4187}}}
1
+ {"inputs":{"src/signer.ts":{"bytes":715,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1495,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":3285,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1295,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1912,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":713,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":16253},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1477},"src/signer.ts":{"bytesInOutput":371},"src/utils.ts":{"bytesInOutput":614},"src/provider.ts":{"bytesInOutput":280},"src/constants.ts":{"bytesInOutput":744},"src/namespaces/evm.ts":{"bytesInOutput":819}},"bytes":4584}}}
package/dist/utils.d.ts CHANGED
@@ -3,4 +3,11 @@ export type Provider = Record<string, any>;
3
3
  export declare function safepal(): Provider | null;
4
4
  export declare function evmSafepal(): EvmProviderApi;
5
5
  export declare function getInstanceOrThrow(): Provider;
6
+ /**
7
+ * Return true if address is a valid EVM address.
8
+ * Accepts:
9
+ * - all-lowercase or all-uppercase 0x-prefixed hex (non-checksummed - allowed)
10
+ * - checksummed (mixed-case according to EIP-55)
11
+ */
12
+ export declare function isValidEvmAddress(address: string): boolean;
6
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAK5F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,wBAAgB,OAAO,IAAI,QAAQ,GAAG,IAAI,CAWzC;AAED,wBAAgB,UAAU,IAAI,cAAc,CAS3C;AACD,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAM5F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,wBAAgB,OAAO,IAAI,QAAQ,GAAG,IAAI,CAWzC;AAED,wBAAgB,UAAU,IAAI,cAAc,CAS3C;AACD,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AACD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAK1D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-safepal",
3
- "version": "0.53.1-next.1",
3
+ "version": "0.55.1-next.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -22,9 +22,9 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@rango-dev/signer-evm": "^0.40.0",
25
- "@rango-dev/signer-solana": "^0.44.1-next.0",
26
- "@rango-dev/wallets-core": "^0.51.1-next.1",
27
- "@rango-dev/wallets-shared": "^0.52.1-next.1",
25
+ "@rango-dev/signer-solana": "^0.46.1-next.0",
26
+ "@rango-dev/wallets-core": "^0.52.1-next.1",
27
+ "@rango-dev/wallets-shared": "^0.54.1-next.0",
28
28
  "rango-types": "^0.1.89"
29
29
  },
30
30
  "publishConfig": {
package/readme.md CHANGED
@@ -14,6 +14,10 @@ The wallet also supports **TON, Sui, Tron, and Aptos**, but these namespaces are
14
14
 
15
15
  ### Feature
16
16
 
17
+ #### ⚠️ Connect
18
+ - SafePal Wallet sometimes returns **non-EVM addresses** (e.g., **Solana addresses**) during connect, which can incorrectly set invalid addresses for the EVM network.
19
+ - In such cases, the integration will **display an error** to prevent incorrect address usage.
20
+
17
21
  #### ⚠️ Switch Account
18
22
  - On **Solana**, switching accounts triggers a **full page reload**.
19
23
  - Since **auto-connect is not supported**, the wallet **does not reconnect automatically** after reload.
@@ -1,23 +1,42 @@
1
1
  import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2
2
 
3
- import { NamespaceBuilder } from '@rango-dev/wallets-core';
3
+ import { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';
4
4
  import {
5
5
  builders as commonBuilders,
6
+ connectAndUpdateStateForMultiNetworks,
7
+ intoConnecting,
8
+ intoConnectionFinished,
6
9
  standardizeAndThrowError,
7
10
  } from '@rango-dev/wallets-core/namespaces/common';
8
11
  import { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';
9
12
 
10
13
  import { WALLET_ID } from '../constants.js';
11
- import { evmSafepal } from '../utils.js';
14
+ import { evmSafepal, isValidEvmAddress } from '../utils.js';
12
15
 
13
16
  const [changeAccountSubscriber, changeAccountCleanup] = builders
14
17
  .changeAccountSubscriber(evmSafepal)
15
18
  .build();
16
19
 
17
- const connect = builders
18
- .connect()
20
+ /**
21
+ * Important: Keep this implementation in sync with wallets/core/src/namespaces/evm/builders
22
+ */
23
+ const connect = new ActionBuilder<EvmActions, 'connect'>('connect')
19
24
  .action(actions.connect(evmSafepal))
20
25
  .before(changeAccountSubscriber)
26
+ .before(intoConnecting)
27
+ /*
28
+ * Validate all accounts are valid EVM addresses
29
+ * Sometimes wallets may return non-EVM addresses - this check prevents that
30
+ */
31
+ .and((_, args) => {
32
+ if (args.accounts.some((account: string) => !isValidEvmAddress(account))) {
33
+ throw new Error('Non valid EVM address returned from wallet');
34
+ }
35
+
36
+ return args;
37
+ })
38
+ .and(connectAndUpdateStateForMultiNetworks)
39
+ .after(intoConnectionFinished)
21
40
  .or(changeAccountCleanup)
22
41
  .or(standardizeAndThrowError)
23
42
  .build();
package/src/utils.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
2
2
 
3
3
  import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
4
+ import { isEvmAddress } from '@rango-dev/wallets-shared';
4
5
 
5
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
7
  export type Provider = Record<string, any>;
@@ -36,3 +37,15 @@ export function getInstanceOrThrow(): Provider {
36
37
 
37
38
  return instances;
38
39
  }
40
+ /**
41
+ * Return true if address is a valid EVM address.
42
+ * Accepts:
43
+ * - all-lowercase or all-uppercase 0x-prefixed hex (non-checksummed - allowed)
44
+ * - checksummed (mixed-case according to EIP-55)
45
+ */
46
+ export function isValidEvmAddress(address: string): boolean {
47
+ // Pick wallet address.
48
+ const walletAddress = address.split(':')[2];
49
+
50
+ return isEvmAddress(walletAddress);
51
+ }