@rango-dev/provider-safepal 0.51.1-next.0 → 0.51.1-next.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/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/{index.d.ts → legacy/index.d.ts} +6 -3
- package/dist/legacy/index.d.ts.map +1 -0
- package/dist/mod.d.ts +3 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +2 -0
- package/dist/mod.js.map +7 -0
- package/dist/namespaces/evm.d.ts +4 -0
- package/dist/namespaces/evm.d.ts.map +1 -0
- package/dist/provider-safepal.build.json +1 -1
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/signer.d.ts +2 -2
- package/dist/signer.d.ts.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +8 -8
- package/readme.md +31 -1
- package/src/constants.ts +41 -0
- package/src/{index.ts → legacy/index.ts} +41 -8
- package/src/mod.ts +12 -0
- package/src/namespaces/evm.ts +41 -0
- package/src/provider.ts +24 -0
- package/src/signer.ts +2 -5
- package/src/utils.ts +38 -0
- package/dist/helpers.d.ts +0 -6
- package/dist/helpers.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -7
- package/src/helpers.ts +0 -48
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,QAAQ,EAAE,gBAiCtB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
2
|
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { type LegacyProviderInterface, LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
|
|
4
|
+
import { WalletTypes } from '@rango-dev/wallets-shared';
|
|
5
|
+
import { type Provider, safepal as safepal_instance } from '../utils.js';
|
|
5
6
|
export declare const config: {
|
|
6
7
|
type: WalletTypes;
|
|
7
8
|
defaultNetwork: Networks;
|
|
@@ -11,6 +12,8 @@ export declare const connect: Connect;
|
|
|
11
12
|
export declare const subscribe: Subscribe;
|
|
12
13
|
export declare const switchNetwork: SwitchNetwork;
|
|
13
14
|
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
14
|
-
export declare const getSigners: (provider:
|
|
15
|
+
export declare const getSigners: (provider: Provider) => Promise<SignerFactory>;
|
|
15
16
|
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
17
|
+
declare const buildLegacyProvider: () => LegacyProviderInterface;
|
|
18
|
+
export { buildLegacyProvider };
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAC5B,cAAc,IAAI,QAAQ,EAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAML,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIzE,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,yBAAmB,CAAC;AAC5C,eAAO,MAAM,OAAO,EAAE,OAWrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAiBvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAC9D,CAAC;AAET,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAuCjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAS/B,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,QAAQ,kEAIF,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var P=Object.defineProperty;var o=(e,t)=>P(e,"name",{value:t,configurable:!0});import{defineVersions as $}from"@rango-dev/wallets-core/utils";import{LegacyNetworks as l}from"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as I,chooseInstance as u,getEvmAccounts as N,subscribeToEvm as L,switchNetworkForEvm as R,WalletTypes as B}from"@rango-dev/wallets-shared";import{evmBlockchains as f,solanaBlockchain as g}from"rango-types";import{dynamicImportWithRefinedError as x,getNetworkInstance as T,Networks as k}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as A,TransactionType as M}from"rango-types";async function s(e){let t=T(e,k.ETHEREUM),r=new A,{DefaultEvmSigner:a}=await x(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(M.EVM,new a(t)),r}o(s,"getSigners");import{LegacyNetworks as m}from"@rango-dev/wallets-core/legacy";function n(){let{safepalProvider:e}=window;if(!e)return null;let t=new Map;return e&&t.set(m.ETHEREUM,e),t}o(n,"safepal");function c(){let t=n()?.get(m.ETHEREUM);if(!t)throw new Error("Safepal not injected or EVM not enabled. Please check your wallet.");return t}o(c,"evmSafepal");function d(){let e=n();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(d,"getInstanceOrThrow");var C=B.SAFEPAL,F={type:C,defaultNetwork:l.ETHEREUM},W=n,H=o(async({instance:e,meta:t})=>{let r=u(e,t,l.ETHEREUM),a=[];if(r){let y=await N(r);a.push(y)}return a},"connect"),U=o(e=>{let t,r=u(e.instance,e.meta,l.ETHEREUM);return r&&(t=L({...e,instance:r})),()=>{t&&t()}},"subscribe"),V=R,D=I,_=s,j=o(e=>{let t=f(e),r=g(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=>f(a)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:a=>g(a)}]}}},"getWalletInfo"),w=o(()=>({config:F,getInstance:W,connect:H,subscribe:U,switchNetwork:V,canSwitchNetworkTo:D,getSigners:_,getWalletInfo:j}),"buildLegacyProvider");import{ProviderBuilder as Q}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as O}from"rango-types";var i="safepal",h={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()=>s(d())}}]};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 v,builders as p}from"@rango-dev/wallets-core/namespaces/evm";var[q,E]=p.changeAccountSubscriber(c).build(),G=p.connect().action(v.connect(c)).before(q).or(E).or(Y).build(),J=X.disconnect().after(E).build(),K=p.canSwitchNetwork().action(v.canSwitchNetwork()).build(),b=new z("EVM",i).action(G).action(J).action(K).build();var Z=1e3,S=o(()=>new Q(i).init(function(e){setTimeout(()=>{if(n()){let[,t]=e.state();t("installed",!0),console.debug("[safepal] instance detected.",e)}},Z)}).config("metadata",h).add("evm",b).build(),"buildProvider");var Fe=o(()=>$().version("0.0.0",w()).version("1.0.0",S()).build(),"versions");export{Fe as versions};
|
|
2
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\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", "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
|
+
}
|
|
@@ -0,0 +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;AAkCzE,QAAA,MAAM,GAAG,gEAIC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/
|
|
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":1095,"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":14147},"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":142},"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":497}},"bytes":4126}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAcP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/signer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Provider } from './utils.js';
|
|
2
2
|
import type { SignerFactory } from 'rango-types';
|
|
3
|
-
export default function getSigners(provider:
|
|
3
|
+
export default function getSigners(provider: Provider): Promise<SignerFactory>;
|
|
4
4
|
//# sourceMappingURL=signer.d.ts.map
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAQxB"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
2
|
+
export type Provider = Record<string, any>;
|
|
3
|
+
export declare function safepal(): Provider | null;
|
|
4
|
+
export declare function evmSafepal(): EvmProviderApi;
|
|
5
|
+
export declare function getInstanceOrThrow(): Provider;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-safepal",
|
|
3
|
-
"version": "0.51.1-next.
|
|
3
|
+
"version": "0.51.1-next.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"source": "./src/
|
|
7
|
-
"main": "./dist/
|
|
6
|
+
"source": "./src/mod.ts",
|
|
7
|
+
"main": "./dist/mod.js",
|
|
8
8
|
"exports": {
|
|
9
|
-
".": "./dist/
|
|
9
|
+
".": "./dist/mod.js"
|
|
10
10
|
},
|
|
11
|
-
"typings": "dist/
|
|
11
|
+
"typings": "dist/mod.d.ts",
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
|
14
14
|
"src"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "node ../../scripts/build/command.mjs --path wallets/provider-safepal",
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-safepal --inputs src/mod.ts",
|
|
18
18
|
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
|
|
19
19
|
"clean": "rimraf dist",
|
|
20
20
|
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@rango-dev/signer-evm": "^0.40.0",
|
|
25
25
|
"@rango-dev/signer-solana": "^0.44.0",
|
|
26
|
-
"@rango-dev/wallets-core": "^0.49.1-next.
|
|
27
|
-
"@rango-dev/wallets-shared": "^0.50.1-next.
|
|
26
|
+
"@rango-dev/wallets-core": "^0.49.1-next.2",
|
|
27
|
+
"@rango-dev/wallets-shared": "^0.50.1-next.2",
|
|
28
28
|
"rango-types": "^0.1.89"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
package/readme.md
CHANGED
|
@@ -1 +1,31 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SafePal
|
|
2
|
+
SafePal Wallet integration for hub.
|
|
3
|
+
[Homepage](https://www.safepal.com/) | [Docs](http://devdocs.safepal.com/Connect-wallet/Web/introduction.html)
|
|
4
|
+
|
|
5
|
+
More about implementation status can be found [here](../readme.md).
|
|
6
|
+
|
|
7
|
+
## Implementation notes/limitations
|
|
8
|
+
|
|
9
|
+
### Group
|
|
10
|
+
|
|
11
|
+
#### EVM
|
|
12
|
+
SafePal supports both EVM and Solana, but we only support EVM currently.
|
|
13
|
+
The wallet also supports **TON, Sui, Tron, and Aptos**, but these namespaces are **not yet supported**.
|
|
14
|
+
|
|
15
|
+
### Feature
|
|
16
|
+
|
|
17
|
+
#### ⚠️ Switch Account
|
|
18
|
+
- On **Solana**, switching accounts triggers a **full page reload**.
|
|
19
|
+
- Since **auto-connect is not supported**, the wallet **does not reconnect automatically** after reload.
|
|
20
|
+
- This results in both EVM and Solana **becoming disconnected** after switching accounts.
|
|
21
|
+
|
|
22
|
+
#### ❌ Auto Connect
|
|
23
|
+
- **Auto-connect is not supported**, as the wallet does **not support silent eager connection** on either EVM or Solana.
|
|
24
|
+
- A **popup is always triggered** when attempting to connect.
|
|
25
|
+
- Due to this limitation, **eager connect has been removed** from this integration.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
More wallet information can be found in [readme.md](../readme.md).
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ProviderMetadata } from '@rango-dev/wallets-core';
|
|
2
|
+
import { type BlockchainMeta, evmBlockchains } from 'rango-types';
|
|
3
|
+
|
|
4
|
+
import getSigners from './signer.js';
|
|
5
|
+
import { getInstanceOrThrow } from './utils.js';
|
|
6
|
+
|
|
7
|
+
export const WALLET_ID = 'safepal';
|
|
8
|
+
export const metadata: ProviderMetadata = {
|
|
9
|
+
name: 'SafePal',
|
|
10
|
+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',
|
|
11
|
+
extensions: {
|
|
12
|
+
chrome:
|
|
13
|
+
'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',
|
|
14
|
+
brave:
|
|
15
|
+
'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',
|
|
16
|
+
firefox:
|
|
17
|
+
'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',
|
|
18
|
+
homepage: 'https://www.safepal.com/download',
|
|
19
|
+
},
|
|
20
|
+
properties: [
|
|
21
|
+
{
|
|
22
|
+
name: 'namespaces',
|
|
23
|
+
value: {
|
|
24
|
+
selection: 'multiple',
|
|
25
|
+
data: [
|
|
26
|
+
{
|
|
27
|
+
label: 'EVM',
|
|
28
|
+
value: 'EVM',
|
|
29
|
+
id: 'ETH',
|
|
30
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
31
|
+
evmBlockchains(allBlockchains),
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'signers',
|
|
38
|
+
value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
@@ -8,19 +8,22 @@ import type {
|
|
|
8
8
|
} from '@rango-dev/wallets-shared';
|
|
9
9
|
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
10
10
|
|
|
11
|
+
import {
|
|
12
|
+
type LegacyProviderInterface,
|
|
13
|
+
LegacyNetworks as Networks,
|
|
14
|
+
} from '@rango-dev/wallets-core/legacy';
|
|
11
15
|
import {
|
|
12
16
|
canSwitchNetworkToEvm,
|
|
13
17
|
chooseInstance,
|
|
14
18
|
getEvmAccounts,
|
|
15
|
-
Networks,
|
|
16
19
|
subscribeToEvm,
|
|
17
20
|
switchNetworkForEvm,
|
|
18
21
|
WalletTypes,
|
|
19
22
|
} from '@rango-dev/wallets-shared';
|
|
20
23
|
import { evmBlockchains, solanaBlockchain } from 'rango-types';
|
|
21
24
|
|
|
22
|
-
import
|
|
23
|
-
import
|
|
25
|
+
import signer from '../signer.js';
|
|
26
|
+
import { type Provider, safepal as safepal_instance } from '../utils.js';
|
|
24
27
|
|
|
25
28
|
const WALLET = WalletTypes.SAFEPAL;
|
|
26
29
|
|
|
@@ -33,16 +36,13 @@ export const getInstance = safepal_instance;
|
|
|
33
36
|
export const connect: Connect = async ({ instance, meta }) => {
|
|
34
37
|
const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
const results: ProviderConnectResult[] = [];
|
|
37
40
|
|
|
38
41
|
if (ethInstance) {
|
|
39
42
|
const evmResult = await getEvmAccounts(ethInstance);
|
|
40
43
|
results.push(evmResult);
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
const nonEvmResults = await getNonEvmAccounts(instance);
|
|
44
|
-
results = [...results, ...nonEvmResults];
|
|
45
|
-
|
|
46
46
|
return results;
|
|
47
47
|
};
|
|
48
48
|
|
|
@@ -69,7 +69,8 @@ export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
|
69
69
|
|
|
70
70
|
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
71
71
|
|
|
72
|
-
export const getSigners: (provider:
|
|
72
|
+
export const getSigners: (provider: Provider) => Promise<SignerFactory> =
|
|
73
|
+
signer;
|
|
73
74
|
|
|
74
75
|
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
75
76
|
allBlockChains
|
|
@@ -90,5 +91,37 @@ export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
|
90
91
|
},
|
|
91
92
|
color: '#4A21EF',
|
|
92
93
|
supportedChains: [...evms, ...solana],
|
|
94
|
+
needsNamespace: {
|
|
95
|
+
selection: 'multiple',
|
|
96
|
+
data: [
|
|
97
|
+
{
|
|
98
|
+
label: 'EVM',
|
|
99
|
+
value: 'EVM',
|
|
100
|
+
id: 'ETH',
|
|
101
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
102
|
+
evmBlockchains(allBlockchains),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
label: 'Solana',
|
|
106
|
+
value: 'Solana',
|
|
107
|
+
id: 'SOLANA',
|
|
108
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
109
|
+
solanaBlockchain(allBlockchains),
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
93
113
|
};
|
|
94
114
|
};
|
|
115
|
+
|
|
116
|
+
const buildLegacyProvider: () => LegacyProviderInterface = () => ({
|
|
117
|
+
config,
|
|
118
|
+
getInstance,
|
|
119
|
+
connect,
|
|
120
|
+
subscribe,
|
|
121
|
+
switchNetwork,
|
|
122
|
+
canSwitchNetworkTo,
|
|
123
|
+
getSigners,
|
|
124
|
+
getWalletInfo,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
export { buildLegacyProvider };
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineVersions } from '@rango-dev/wallets-core/utils';
|
|
2
|
+
|
|
3
|
+
import { buildLegacyProvider } from './legacy/index.js';
|
|
4
|
+
import { buildProvider } from './provider.js';
|
|
5
|
+
|
|
6
|
+
const versions = () =>
|
|
7
|
+
defineVersions()
|
|
8
|
+
.version('0.0.0', buildLegacyProvider())
|
|
9
|
+
.version('1.0.0', buildProvider())
|
|
10
|
+
.build();
|
|
11
|
+
|
|
12
|
+
export { versions };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
|
|
2
|
+
|
|
3
|
+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
|
|
4
|
+
import {
|
|
5
|
+
builders as commonBuilders,
|
|
6
|
+
standardizeAndThrowError,
|
|
7
|
+
} from '@rango-dev/wallets-core/namespaces/common';
|
|
8
|
+
import { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';
|
|
9
|
+
|
|
10
|
+
import { WALLET_ID } from '../constants.js';
|
|
11
|
+
import { evmSafepal } from '../utils.js';
|
|
12
|
+
|
|
13
|
+
const [changeAccountSubscriber, changeAccountCleanup] = builders
|
|
14
|
+
.changeAccountSubscriber(evmSafepal)
|
|
15
|
+
.build();
|
|
16
|
+
|
|
17
|
+
const connect = builders
|
|
18
|
+
.connect()
|
|
19
|
+
.action(actions.connect(evmSafepal))
|
|
20
|
+
.before(changeAccountSubscriber)
|
|
21
|
+
.or(changeAccountCleanup)
|
|
22
|
+
.or(standardizeAndThrowError)
|
|
23
|
+
.build();
|
|
24
|
+
|
|
25
|
+
const disconnect = commonBuilders
|
|
26
|
+
.disconnect<EvmActions>()
|
|
27
|
+
.after(changeAccountCleanup)
|
|
28
|
+
.build();
|
|
29
|
+
|
|
30
|
+
const canSwitchNetwork = builders
|
|
31
|
+
.canSwitchNetwork()
|
|
32
|
+
.action(actions.canSwitchNetwork())
|
|
33
|
+
.build();
|
|
34
|
+
|
|
35
|
+
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
|
|
36
|
+
.action(connect)
|
|
37
|
+
.action(disconnect)
|
|
38
|
+
.action(canSwitchNetwork)
|
|
39
|
+
.build();
|
|
40
|
+
|
|
41
|
+
export { evm };
|
package/src/provider.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProviderBuilder } from '@rango-dev/wallets-core';
|
|
2
|
+
|
|
3
|
+
import { metadata, WALLET_ID } from './constants.js';
|
|
4
|
+
import { evm } from './namespaces/evm.js';
|
|
5
|
+
import { safepal as safepalInstance } from './utils.js';
|
|
6
|
+
|
|
7
|
+
const WAIT_TO_LOAD_INSTANCE_DELAY = 1000;
|
|
8
|
+
const buildProvider = () =>
|
|
9
|
+
new ProviderBuilder(WALLET_ID)
|
|
10
|
+
.init(function (context) {
|
|
11
|
+
setTimeout(() => {
|
|
12
|
+
if (safepalInstance()) {
|
|
13
|
+
const [, setState] = context.state();
|
|
14
|
+
setState('installed', true);
|
|
15
|
+
console.debug('[safepal] instance detected.', context);
|
|
16
|
+
}
|
|
17
|
+
}, WAIT_TO_LOAD_INSTANCE_DELAY);
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
.config('metadata', metadata)
|
|
21
|
+
.add('evm', evm)
|
|
22
|
+
.build();
|
|
23
|
+
|
|
24
|
+
export { buildProvider };
|
package/src/signer.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Provider } from './utils.js';
|
|
2
2
|
import type { SignerFactory } from 'rango-types';
|
|
3
3
|
|
|
4
|
-
import { DefaultSolanaSigner } from '@rango-dev/signer-solana';
|
|
5
4
|
import {
|
|
6
5
|
dynamicImportWithRefinedError,
|
|
7
6
|
getNetworkInstance,
|
|
@@ -10,15 +9,13 @@ import {
|
|
|
10
9
|
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
11
10
|
|
|
12
11
|
export default async function getSigners(
|
|
13
|
-
provider:
|
|
12
|
+
provider: Provider
|
|
14
13
|
): Promise<SignerFactory> {
|
|
15
14
|
const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
|
|
16
|
-
const solProvider = getNetworkInstance(provider, Networks.SOLANA);
|
|
17
15
|
const signers = new DefaultSignerFactory();
|
|
18
16
|
const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
|
|
19
17
|
async () => await import('@rango-dev/signer-evm')
|
|
20
18
|
);
|
|
21
19
|
signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
|
|
22
|
-
signers.registerSigner(TxType.SOLANA, new DefaultSolanaSigner(solProvider));
|
|
23
20
|
return signers;
|
|
24
21
|
}
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
2
|
+
|
|
3
|
+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
4
|
+
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
|
+
export type Provider = Record<string, any>;
|
|
7
|
+
export function safepal(): Provider | null {
|
|
8
|
+
const { safepalProvider: safePalEvm } = window;
|
|
9
|
+
if (!safePalEvm) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const instances = new Map();
|
|
13
|
+
if (safePalEvm) {
|
|
14
|
+
instances.set(LegacyNetworks.ETHEREUM, safePalEvm);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return instances;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function evmSafepal(): EvmProviderApi {
|
|
21
|
+
const instances = safepal();
|
|
22
|
+
const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
|
|
23
|
+
if (!evmInstance) {
|
|
24
|
+
throw new Error(
|
|
25
|
+
'Safepal not injected or EVM not enabled. Please check your wallet.'
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return evmInstance as EvmProviderApi;
|
|
29
|
+
}
|
|
30
|
+
export function getInstanceOrThrow(): Provider {
|
|
31
|
+
const instances = safepal();
|
|
32
|
+
|
|
33
|
+
if (!instances) {
|
|
34
|
+
throw new Error('Trust Wallet is not injected. Please check your wallet.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return instances;
|
|
38
|
+
}
|
package/dist/helpers.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';
|
|
2
|
-
type Provider = Map<Network, any>;
|
|
3
|
-
export declare function safepal(): Map<any, any> | null;
|
|
4
|
-
export declare function getNonEvmAccounts(instances: Provider): Promise<ProviderConnectResult[]>;
|
|
5
|
-
export {};
|
|
6
|
-
//# sourceMappingURL=helpers.d.ts.map
|
package/dist/helpers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIhF,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElC,wBAAgB,OAAO,yBAqBtB;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAgBlC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAIL,QAAQ,EAGR,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAqB,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAK9E,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,yBAAmB,CAAC;AAC5C,eAAO,MAAM,OAAO,EAAE,OAcrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAiBvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAU,CAAC;AAE5E,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAoBjE,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var d=Object.defineProperty;var r=(e,t)=>d(e,"name",{value:t,configurable:!0});import{canSwitchNetworkToEvm as y,chooseInstance as w,getEvmAccounts as v,Networks as i,subscribeToEvm as N,switchNetworkForEvm as k,WalletTypes as A}from"@rango-dev/wallets-shared";import{evmBlockchains as P,solanaBlockchain as R}from"rango-types";import{Networks as s}from"@rango-dev/wallets-shared";function l(){let e=new Map,{isSafePal:t,safepal:o,safepalProvider:n}=window;return!t||(o&&o.isSafePalWallet&&e.set(s.SOLANA,o),n&&n&&e.set(s.ETHEREUM,n),e.size===0)?null:e}r(l,"safepal");async function p(e){let t=e.get(s.SOLANA),o=[];if(t){let a=(await t.connect()).publicKey.toString();o.push({accounts:[a],chainId:s.SOLANA})}return o}r(p,"getNonEvmAccounts");import{DefaultSolanaSigner as h}from"@rango-dev/signer-solana";import{dynamicImportWithRefinedError as E,getNetworkInstance as m,Networks as f}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as S,TransactionType as g}from"rango-types";async function c(e){let t=m(e,f.ETHEREUM),o=m(e,f.SOLANA),n=new S,{DefaultEvmSigner:a}=await E(async()=>await import("@rango-dev/signer-evm"));return n.registerSigner(g.EVM,new a(t)),n.registerSigner(g.SOLANA,new h(o)),n}r(c,"getSigners");var x=A.SAFEPAL,j={type:x,defaultNetwork:i.ETHEREUM},z=l,V=r(async({instance:e,meta:t})=>{let o=w(e,t,i.ETHEREUM),n=[];if(o){let u=await v(o);n.push(u)}let a=await p(e);return n=[...n,...a],n},"connect"),K=r(e=>{let t,o=w(e.instance,e.meta,i.ETHEREUM);return o&&(t=N({...e,instance:o})),()=>{t&&t()}},"subscribe"),X=k,_=y,q=c,G=r(e=>{let t=P(e),o=R(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,...o]}},"getWalletInfo");export{_ as canSwitchNetworkTo,j as config,V as connect,z as getInstance,q as getSigners,G as getWalletInfo,K as subscribe,X as switchNetwork};
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts"],
|
|
4
|
-
"sourcesContent": ["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 canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n Networks,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport { getNonEvmAccounts, safepal as safepal_instance } from './helpers.js';\nimport signer from './signer.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 let results: ProviderConnectResult[] = [];\n\n if (ethInstance) {\n const evmResult = await getEvmAccounts(ethInstance);\n results.push(evmResult);\n }\n\n const nonEvmResults = await getNonEvmAccounts(instance);\n results = [...results, ...nonEvmResults];\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: any) => Promise<SignerFactory> = 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 };\n};\n", "import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { Networks } from '@rango-dev/wallets-shared';\n\ntype Provider = Map<Network, any>;\n\nexport function safepal() {\n const instances = new Map();\n const { isSafePal, safepal, safepalProvider } = window;\n\n if (!isSafePal) {\n return null;\n }\n\n if (!!safepal && safepal.isSafePalWallet) {\n instances.set(Networks.SOLANA, safepal);\n }\n\n if (safepalProvider && safepalProvider) {\n instances.set(Networks.ETHEREUM, safepalProvider);\n }\n\n if (instances.size === 0) {\n return null;\n }\n\n return instances;\n}\n\nexport async function getNonEvmAccounts(\n instances: Provider\n): Promise<ProviderConnectResult[]> {\n const solanaInstance = instances.get(Networks.SOLANA);\n const results: ProviderConnectResult[] = [];\n\n if (solanaInstance) {\n const solanaResponse = await solanaInstance.connect();\n\n const solanaAccounts: string = solanaResponse.publicKey.toString();\n\n results.push({\n accounts: [solanaAccounts],\n chainId: Networks.SOLANA,\n });\n }\n\n return results;\n}\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type { SignerFactory } from 'rango-types';\n\nimport { DefaultSolanaSigner } from '@rango-dev/signer-solana';\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: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\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 signers.registerSigner(TxType.SOLANA, new DefaultSolanaSigner(solProvider));\n return signers;\n}\n"],
|
|
5
|
-
"mappings": "+EAUA,OACE,yBAAAA,EACA,kBAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,kBAAAC,EACA,uBAAAC,EACA,eAAAC,MACK,4BACP,OAAS,kBAAAC,EAAgB,oBAAAC,MAAwB,cCjBjD,OAAS,YAAAC,MAAgB,4BAIlB,SAASC,GAAU,CACxB,IAAMC,EAAY,IAAI,IAChB,CAAE,UAAAC,EAAW,QAAAF,EAAS,gBAAAG,CAAgB,EAAI,OAchD,MAZI,CAACD,IAICF,GAAWA,EAAQ,iBACvBC,EAAU,IAAIG,EAAS,OAAQJ,CAAO,EAGpCG,GAAmBA,GACrBF,EAAU,IAAIG,EAAS,SAAUD,CAAe,EAG9CF,EAAU,OAAS,GACd,KAGFA,CACT,CArBgBI,EAAAL,EAAA,WAuBhB,eAAsBM,EACpBL,EACkC,CAClC,IAAMM,EAAiBN,EAAU,IAAIG,EAAS,MAAM,EAC9CI,EAAmC,CAAC,EAE1C,GAAID,EAAgB,CAGlB,IAAME,GAFiB,MAAMF,EAAe,QAAQ,GAEN,UAAU,SAAS,EAEjEC,EAAQ,KAAK,CACX,SAAU,CAACC,CAAc,EACzB,QAASL,EAAS,MACpB,CAAC,CACH,CAEA,OAAOI,CACT,CAlBsBH,EAAAC,EAAA,qBC1BtB,OAAS,uBAAAI,MAA2B,2BACpC,OACE,iCAAAC,EACA,sBAAAC,EACA,YAAAC,MACK,4BACP,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,EACLC,EACwB,CACxB,IAAMC,EAAcC,EAAmBF,EAAUG,EAAS,QAAQ,EAC5DC,EAAcF,EAAmBF,EAAUG,EAAS,MAAM,EAC1DE,EAAU,IAAIC,EACd,CAAE,iBAAAC,CAAiB,EAAI,MAAMC,EACjC,SAAY,KAAM,QAAO,uBAAuB,CAClD,EACA,OAAAH,EAAQ,eAAeI,EAAO,IAAK,IAAIF,EAAiBN,CAAW,CAAC,EACpEI,EAAQ,eAAeI,EAAO,OAAQ,IAAIC,EAAoBN,CAAW,CAAC,EACnEC,CACT,CAZ8BM,EAAAZ,EAAA,cFa9B,IAAMa,EAASC,EAAY,QAEdC,EAAS,CACpB,KAAMF,EACN,eAAgBG,EAAS,QAC3B,EAEaC,EAAcC,EACdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,EAAU,KAAAC,CAAK,IAAM,CAC5D,IAAMC,EAAcC,EAAeH,EAAUC,EAAMN,EAAS,QAAQ,EAEhES,EAAmC,CAAC,EAExC,GAAIF,EAAa,CACf,IAAMG,EAAY,MAAMC,EAAeJ,CAAW,EAClDE,EAAQ,KAAKC,CAAS,CACxB,CAEA,IAAME,EAAgB,MAAMC,EAAkBR,CAAQ,EACtD,OAAAI,EAAU,CAAC,GAAGA,EAAS,GAAGG,CAAa,EAEhCH,CACT,EAdgC,WAgBnBK,EAAuBV,EAACW,GAAY,CAC/C,IAAIC,EACET,EAAcC,EAClBO,EAAQ,SACRA,EAAQ,KACRf,EAAS,QACX,EAEA,OAAIO,IACFS,EAAUC,EAAe,CAAE,GAAGF,EAAS,SAAUR,CAAY,CAAC,GAGzD,IAAM,CACPS,GACFA,EAAQ,CAEZ,CACF,EAjBoC,aAmBvBE,EAA+BC,EAE/BC,EAAuCC,EAEvCC,EAAwDA,EAExDC,EAAkEnB,EAC7EoB,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EACpCG,EAASC,EAAiBJ,CAAc,EAC9C,MAAO,CACL,KAAM,UACN,IAAK,wFACL,YAAa,CACX,OACE,sGACF,MACE,sGACF,QACE,0EACF,QAAS,kCACX,EACA,MAAO,UACP,gBAAiB,CAAC,GAAGC,EAAM,GAAGE,CAAM,CACtC,CACF,EApB+E",
|
|
6
|
-
"names": ["canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "Networks", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "Networks", "safepal", "instances", "isSafePal", "safepalProvider", "Networks", "__name", "getNonEvmAccounts", "solanaInstance", "results", "solanaAccounts", "DefaultSolanaSigner", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "DefaultSolanaSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "safepal", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "results", "evmResult", "getEvmAccounts", "nonEvmResults", "getNonEvmAccounts", "subscribe", "options", "cleanup", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain"]
|
|
7
|
-
}
|
package/src/helpers.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';
|
|
2
|
-
|
|
3
|
-
import { Networks } from '@rango-dev/wallets-shared';
|
|
4
|
-
|
|
5
|
-
type Provider = Map<Network, any>;
|
|
6
|
-
|
|
7
|
-
export function safepal() {
|
|
8
|
-
const instances = new Map();
|
|
9
|
-
const { isSafePal, safepal, safepalProvider } = window;
|
|
10
|
-
|
|
11
|
-
if (!isSafePal) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (!!safepal && safepal.isSafePalWallet) {
|
|
16
|
-
instances.set(Networks.SOLANA, safepal);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (safepalProvider && safepalProvider) {
|
|
20
|
-
instances.set(Networks.ETHEREUM, safepalProvider);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (instances.size === 0) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return instances;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export async function getNonEvmAccounts(
|
|
31
|
-
instances: Provider
|
|
32
|
-
): Promise<ProviderConnectResult[]> {
|
|
33
|
-
const solanaInstance = instances.get(Networks.SOLANA);
|
|
34
|
-
const results: ProviderConnectResult[] = [];
|
|
35
|
-
|
|
36
|
-
if (solanaInstance) {
|
|
37
|
-
const solanaResponse = await solanaInstance.connect();
|
|
38
|
-
|
|
39
|
-
const solanaAccounts: string = solanaResponse.publicKey.toString();
|
|
40
|
-
|
|
41
|
-
results.push({
|
|
42
|
-
accounts: [solanaAccounts],
|
|
43
|
-
chainId: Networks.SOLANA,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return results;
|
|
48
|
-
}
|