@rango-dev/provider-brave 0.56.2-next.2 → 0.56.2-next.4
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/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/namespaces/solana.d.ts +4 -0
- package/dist/namespaces/solana.d.ts.map +1 -0
- package/dist/provider-brave.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/signers/solana.d.ts +6 -0
- package/dist/signers/solana.d.ts.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +9 -9
- package/readme.md +22 -1
- package/src/constants.ts +46 -0
- package/src/mod.ts +8 -0
- package/src/namespaces/evm.ts +55 -0
- package/src/namespaces/solana.ts +45 -0
- package/src/provider.ts +23 -0
- package/src/signer.ts +4 -4
- package/src/{solana-signer.ts → signers/solana.ts} +5 -5
- package/src/types.ts +12 -0
- package/src/utils.ts +58 -0
- package/dist/helpers.d.ts +0 -2
- package/dist/helpers.d.ts.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -7
- package/dist/solana-signer.d.ts +0 -8
- package/dist/solana-signer.d.ts.map +0 -1
- package/src/helpers.ts +0 -14
- package/src/index.ts +0 -167
|
@@ -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;AAUhE,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,QAAQ,EAAE,gBAkCtB,CAAC"}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,kEAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var x=Object.defineProperty;var r=(e,o)=>x(e,"name",{value:o,configurable:!0});import{defineVersions as oe}from"@rango-dev/wallets-core/utils";import{ProviderBuilder as ee}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as L,solanaBlockchain as N}from"rango-types";import{dynamicImportWithRefinedError as I,getNetworkInstance as v,Networks as g}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as C,TransactionType as f}from"rango-types";import{DefaultSolanaSigner as T}from"@rango-dev/signer-solana";import{SignerError as M,SignerErrorCode as k}from"rango-types";var s=class extends T{static{r(this,"BraveSolanaSigner")}constructor(o){super(o)}async signMessage(o){try{let n=new TextEncoder().encode(o),{signature:a}=await this.provider.request({method:"signMessage",params:{message:n}});return a}catch(n){throw new M(k.SIGN_TX_ERROR,void 0,n)}}};async function u(e){let o=v(e,g.ETHEREUM),n=v(e,g.SOLANA),a=new C,{DefaultEvmSigner:B}=await I(async()=>await import("@rango-dev/signer-evm"));return a.registerSigner(f.EVM,new B(o)),a.registerSigner(f.SOLANA,new s(n)),a}r(u,"getSigners");import{LegacyNetworks as m}from"@rango-dev/wallets-core/legacy";function i(){let{braveEthereum:e,braveSolana:o}=window;if(!e||!o)return null;let n=new Map;return e&&n.set(m.ETHEREUM,e),o&&n.set(m.SOLANA,o),n}r(i,"brave");function E(){let e=i();if(!e)throw new Error("Brave Wallet is not injected. Please check your wallet.");return e}r(E,"getInstanceOrThrow");function c(){let o=i()?.get(m.ETHEREUM);if(!o)throw new Error("Brave Wallet not injected or EVM not enabled. Please check your wallet.");return o}r(c,"evmBrave");function l(){let o=i()?.get(m.SOLANA);if(!o)throw new Error("Brave Wallet not injected or Solana not enabled. Please check your wallet.");return o}r(l,"solanaBrave");var t="brave",w={name:"Brave",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg",extensions:{homepage:"https://brave.com/wallet/"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>L(e)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>N(e)}]}},{name:"signers",value:{getSigners:async()=>u(E())}}]};import{NamespaceBuilder as O}from"@rango-dev/wallets-core";import{builders as W,standardizeAndThrowError as D}from"@rango-dev/wallets-core/namespaces/common";import{actions as d,builders as p,hooks as R}from"@rango-dev/wallets-core/namespaces/evm";var[V,h]=R.changeAccountSubscriber(c),_=p.connect().action(d.connect(c)).before(V).or(h).or(D).build(),j=W.disconnect().after(h).build(),H=p.canSwitchNetwork().action(d.canSwitchNetwork()).build(),F=p.canEagerConnect().action(d.canEagerConnect(c)).build(),U=p.getChainId().action(d.getChainId(c)).build(),S=new O("EVM",t).action(_).action(j).action(F).action(H).action(U).build();import{ActionBuilder as z,NamespaceBuilder as q}from"@rango-dev/wallets-core";import{builders as G,standardizeAndThrowError as X}from"@rango-dev/wallets-core/namespaces/common";import{actions as b,builders as J,hooks as K}from"@rango-dev/wallets-core/namespaces/solana";var[Q,A]=K.changeAccountSubscriber(l),Y=J.connect().action(b.connect(l)).before(Q).or(A).or(X).build(),Z=G.disconnect().after(A).build(),$=new z("canEagerConnect").action(b.canEagerConnect(l)).build(),P=new q("Solana",t).action(Y).action(Z).action($).build();var y=r(()=>new ee(t).init(function(e){let[,o]=e.state();i()&&(o("installed",!0),console.debug("[brave] instance detected.",e))}).config("metadata",w).add("solana",P).add("evm",S).build(),"buildProvider");var He=r(()=>oe().version("1.0.0",y()).build(),"versions");export{He 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/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/utils.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts"],
|
|
4
|
+
"sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { brave } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (brave()) {\n setState('installed', true);\n console.debug('[brave] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'brave';\nexport const metadata: ProviderMetadata = {\n name: 'Brave',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg',\n extensions: {\n homepage: 'https://brave.com/wallet/',\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 label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.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\nimport { BraveSolanaSigner } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\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 BraveSolanaSigner(solProvider));\n return signers;\n}\n", "import {\n DefaultSolanaSigner,\n type SolanaExternalProvider,\n} from '@rango-dev/signer-solana';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nexport class BraveSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const encodedMessage = new TextEncoder().encode(msg);\n const { signature } = await this.provider.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n },\n });\n return signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\nexport function brave(): Provider | null {\n const { braveEthereum, braveSolana } = window;\n if (!braveEthereum || !braveSolana) {\n return null;\n }\n const instances: Provider = new Map();\n if (braveEthereum) {\n instances.set(LegacyNetworks.ETHEREUM, braveEthereum);\n }\n if (braveSolana) {\n instances.set(LegacyNetworks.SOLANA, braveSolana);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = brave();\n\n if (!instances) {\n throw new Error('Brave Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function evmBrave(): EvmProviderApi {\n const instances = brave();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'Brave Wallet not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaBrave(): SolanaProviderApi {\n const instance = brave();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'Brave Wallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\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 {\n actions,\n builders,\n hooks,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmBrave } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(evmBrave);\nconst connect = builders\n .connect()\n .action(actions.connect(evmBrave))\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 canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmBrave))\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmBrave))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n hooks,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { WALLET_ID } from '../constants.js';\nimport { solanaBrave } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(solanaBrave);\n\nconst connect = builders\n .connect()\n .action(actions.connect(solanaBrave))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(actions.canEagerConnect(solanaBrave))\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n"],
|
|
5
|
+
"mappings": "+EAAA,OAAS,kBAAAA,OAAsB,gCCA/B,OAAS,mBAAAC,OAAuB,0BCAhC,MAAsC,0BACtC,OAEE,kBAAAC,EACA,oBAAAC,MACK,cCFP,OACE,iCAAAC,EACA,sBAAAC,EACA,YAAAC,MACK,4BACP,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cCRhE,OACE,uBAAAC,MAEK,2BACP,OAAS,eAAAC,EAAa,mBAAAC,MAAuB,cAEtC,IAAMC,EAAN,cAAgCC,CAAoB,CAN3D,MAM2D,CAAAC,EAAA,0BACzD,YAAYC,EAAkC,CAC5C,MAAMA,CAAQ,CAChB,CAEA,MAAM,YAAYC,EAA8B,CAC9C,GAAI,CACF,IAAMC,EAAiB,IAAI,YAAY,EAAE,OAAOD,CAAG,EAC7C,CAAE,UAAAE,CAAU,EAAI,MAAM,KAAK,SAAS,QAAQ,CAChD,OAAQ,cACR,OAAQ,CACN,QAASD,CACX,CACF,CAAC,EACD,OAAOC,CACT,OAASC,EAAO,CACd,MAAM,IAAIC,EAAYC,EAAgB,cAAe,OAAWF,CAAK,CACvE,CACF,CACF,EDbA,eAAOG,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,EAAkBN,CAAW,CAAC,EACjEC,CACT,CAZ8BM,EAAAZ,EAAA,cER9B,OAAS,kBAAAa,MAAsB,iCAExB,SAASC,GAAyB,CACvC,GAAM,CAAE,cAAAC,EAAe,YAAAC,CAAY,EAAI,OACvC,GAAI,CAACD,GAAiB,CAACC,EACrB,OAAO,KAET,IAAMC,EAAsB,IAAI,IAChC,OAAIF,GACFE,EAAU,IAAIC,EAAe,SAAUH,CAAa,EAElDC,GACFC,EAAU,IAAIC,EAAe,OAAQF,CAAW,EAG3CC,CACT,CAdgBE,EAAAL,EAAA,SAgBT,SAASM,GAA+B,CAC7C,IAAMH,EAAYH,EAAM,EAExB,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,yDAAyD,EAG3E,OAAOA,CACT,CARgBE,EAAAC,EAAA,sBAUT,SAASC,GAA2B,CAGzC,IAAMC,EAFYR,EAAM,GAEO,IAAII,EAAe,QAAQ,EAE1D,GAAI,CAACI,EACH,MAAM,IAAI,MACR,yEACF,EAGF,OAAOA,CACT,CAZgBH,EAAAE,EAAA,YAcT,SAASE,GAAiC,CAE/C,IAAMC,EADWV,EAAM,GACU,IAAII,EAAe,MAAM,EAE1D,GAAI,CAACM,EACH,MAAM,IAAI,MACR,4EACF,EAGF,OAAOA,CACT,CAXgBL,EAAAI,EAAA,eHpCT,IAAME,EAAY,QACZC,EAA6B,CACxC,KAAM,QACN,KAAM,sFACN,WAAY,CACV,SAAU,2BACZ,EACA,WAAY,CACV,CACE,KAAM,aACN,MAAO,CACL,UAAW,WACX,KAAM,CACJ,CACE,MAAO,MACP,MAAO,MACP,GAAI,MACJ,mBAAqBC,GACnBC,EAAeD,CAAc,CACjC,EACA,CACE,MAAO,SACP,MAAO,SACP,GAAI,SACJ,mBAAqBA,GACnBE,EAAiBF,CAAc,CACnC,CACF,CACF,CACF,EACA,CACE,KAAM,UACN,MAAO,CAAE,WAAY,SAAYG,EAAWC,EAAmB,CAAC,CAAE,CACpE,CACF,CACF,EI3CA,OAAS,oBAAAC,MAAwB,0BACjC,OACE,YAAYC,EACZ,4BAAAC,MACK,4CACP,OACE,WAAAC,EACA,YAAAC,EACA,SAAAC,MACK,yCAKP,GAAM,CAACC,EAAyBC,CAAoB,EAClDC,EAAM,wBAAwBC,CAAQ,EAClCC,EAAUC,EACb,QAAQ,EACR,OAAOC,EAAQ,QAAQH,CAAQ,CAAC,EAChC,OAAOH,CAAuB,EAC9B,GAAGC,CAAoB,EACvB,GAAGM,CAAwB,EAC3B,MAAM,EAEHC,EAAaC,EAChB,WAAuB,EACvB,MAAMR,CAAoB,EAC1B,MAAM,EAEHS,EAAmBL,EACtB,iBAAiB,EACjB,OAAOC,EAAQ,iBAAiB,CAAC,EACjC,MAAM,EAEHK,EAAkBN,EACrB,gBAAgB,EAChB,OAAOC,EAAQ,gBAAgBH,CAAQ,CAAC,EACxC,MAAM,EAEHS,EAAaP,EAChB,WAAW,EACX,OAAOC,EAAQ,WAAWH,CAAQ,CAAC,EACnC,MAAM,EAEHU,EAAM,IAAIC,EAA6B,MAAOC,CAAS,EAC1D,OAAOX,CAAO,EACd,OAAOI,CAAU,EACjB,OAAOG,CAAe,EACtB,OAAOD,CAAgB,EACvB,OAAOE,CAAU,EACjB,MAAM,EClDT,OAAS,iBAAAI,EAAe,oBAAAC,MAAwB,0BAChD,OACE,YAAYC,EACZ,4BAAAC,MACK,4CACP,OACE,WAAAC,EACA,YAAAC,EACA,SAAAC,MACK,4CAKP,GAAM,CAACC,EAAyBC,CAAoB,EAClDC,EAAM,wBAAwBC,CAAW,EAErCC,EAAUC,EACb,QAAQ,EACR,OAAOC,EAAQ,QAAQH,CAAW,CAAC,EACnC,OAAOH,CAAuB,EAC9B,GAAGC,CAAoB,EACvB,GAAGM,CAAwB,EAC3B,MAAM,EAEHC,EAAaC,EAChB,WAA0B,EAC1B,MAAMR,CAAoB,EAC1B,MAAM,EAEHS,EAAkB,IAAIC,EAC1B,iBACF,EACG,OAAOL,EAAQ,gBAAgBH,CAAW,CAAC,EAC3C,MAAM,EAEHS,EAAS,IAAIC,EAAgC,SAAUC,CAAS,EACnE,OAAOV,CAAO,EACd,OAAOI,CAAU,EACjB,OAAOE,CAAe,EACtB,MAAM,ENnCT,IAAMK,EAAgBC,EAAA,IACpB,IAAIC,GAAgBC,CAAS,EAC1B,KAAK,SAAUC,EAAS,CACvB,GAAM,CAAC,CAAEC,CAAQ,EAAID,EAAQ,MAAM,EAE/BE,EAAM,IACRD,EAAS,YAAa,EAAI,EAC1B,QAAQ,MAAM,6BAA8BD,CAAO,EAEvD,CAAC,EACA,OAAO,WAAYG,CAAQ,EAC3B,IAAI,SAAUC,CAAM,EACpB,IAAI,MAAOC,CAAG,EACd,MAAM,EAbW,iBDHtB,IAAMC,GAAWC,EAAA,IACfC,GAAe,EAAE,QAAQ,QAASC,EAAc,CAAC,EAAE,MAAM,EAD1C",
|
|
6
|
+
"names": ["defineVersions", "ProviderBuilder", "evmBlockchains", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "SignerError", "SignerErrorCode", "BraveSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "encodedMessage", "signature", "error", "SignerError", "SignerErrorCode", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "BraveSolanaSigner", "__name", "LegacyNetworks", "brave", "braveEthereum", "braveSolana", "instances", "LegacyNetworks", "__name", "getInstanceOrThrow", "evmBrave", "evmInstance", "solanaBrave", "solanaInstance", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "hooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "evmBrave", "connect", "builders", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "canEagerConnect", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "hooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "solanaBrave", "connect", "builders", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canEagerConnect", "ActionBuilder", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "brave", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "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;AA8CzE,QAAA,MAAM,GAAG,gEAMC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/namespaces/solana.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAsC/E,QAAA,MAAM,MAAM,mEAIF,CAAC;AAEX,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/
|
|
1
|
+
{"inputs":{"src/signers/solana.ts":{"bytes":717,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":919,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana.ts","kind":"import-statement","original":"./signers/solana.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1543,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1199,"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":1345,"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/namespaces/solana.ts":{"bytes":1188,"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/solana","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":638,"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/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":220,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"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":13620},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","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-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","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/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","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/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":123},"src/provider.ts":{"bytesInOutput":264},"src/constants.ts":{"bytesInOutput":525},"src/signer.ts":{"bytesInOutput":423},"src/signers/solana.ts":{"bytesInOutput":410},"src/utils.ts":{"bytesInOutput":688},"src/namespaces/evm.ts":{"bytesInOutput":628},"src/namespaces/solana.ts":{"bytesInOutput":529}},"bytes":3725}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAaP,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 './types.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;AAWjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAUxB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DefaultSolanaSigner, type SolanaExternalProvider } from '@rango-dev/signer-solana';
|
|
2
|
+
export declare class BraveSolanaSigner extends DefaultSolanaSigner {
|
|
3
|
+
constructor(provider: SolanaExternalProvider);
|
|
4
|
+
signMessage(msg: string): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=solana.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/signers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC5C,QAAQ,EAAE,sBAAsB;IAItC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAchD"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
export type ProviderObject = {
|
|
5
|
+
[LegacyNetworks.ETHEREUM]: EvmProviderApi;
|
|
6
|
+
[LegacyNetworks.SOLANA]: SolanaProviderApi;
|
|
7
|
+
};
|
|
8
|
+
export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5C,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Provider } from './types.js';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
export declare function brave(): Provider | null;
|
|
5
|
+
export declare function getInstanceOrThrow(): Provider;
|
|
6
|
+
export declare function evmBrave(): EvmProviderApi;
|
|
7
|
+
export declare function solanaBrave(): SolanaProviderApi;
|
|
8
|
+
//# 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,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAIlG,wBAAgB,KAAK,IAAI,QAAQ,GAAG,IAAI,CAcvC;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,QAAQ,IAAI,cAAc,CAYzC;AAED,wBAAgB,WAAW,IAAI,iBAAiB,CAW/C"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-brave",
|
|
3
|
-
"version": "0.56.2-next.
|
|
3
|
+
"version": "0.56.2-next.4",
|
|
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-brave",
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-brave --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,11 +23,11 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@rango-dev/signer-evm": "^0.40.0",
|
|
25
25
|
"@rango-dev/signer-solana": "^0.46.1",
|
|
26
|
-
"@rango-dev/wallets-core": "^0.53.1-next.
|
|
27
|
-
"@rango-dev/wallets-shared": "^0.54.2-next.
|
|
26
|
+
"@rango-dev/wallets-core": "^0.53.1-next.2",
|
|
27
|
+
"@rango-dev/wallets-shared": "^0.54.2-next.3",
|
|
28
28
|
"rango-types": "^0.1.89"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
|
32
32
|
}
|
|
33
|
-
}
|
|
33
|
+
}
|
package/readme.md
CHANGED
|
@@ -1 +1,22 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Brave
|
|
2
|
+
Brave Wallet integration for hub.
|
|
3
|
+
[Homepage](https://brave.com/wallet/) | [Docs](https://brave.com/wallet/learn/)
|
|
4
|
+
|
|
5
|
+
More about implementation status can be found [here](../readme.md).
|
|
6
|
+
|
|
7
|
+
## Implementation notes/limitations
|
|
8
|
+
|
|
9
|
+
### Group
|
|
10
|
+
No group-related limitations have been identified in this integration.
|
|
11
|
+
|
|
12
|
+
### Feature
|
|
13
|
+
|
|
14
|
+
#### ⚠️ Cross Browser
|
|
15
|
+
Brave Wallet is **only available on the Brave browser**.
|
|
16
|
+
It cannot be used on Chrome, Firefox, or other browsers.
|
|
17
|
+
|
|
18
|
+
All other features are fully supported with **no known limitations**.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
More wallet information can be found in [readme.md](../readme.md).
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type ProviderMetadata } from '@rango-dev/wallets-core';
|
|
2
|
+
import {
|
|
3
|
+
type BlockchainMeta,
|
|
4
|
+
evmBlockchains,
|
|
5
|
+
solanaBlockchain,
|
|
6
|
+
} from 'rango-types';
|
|
7
|
+
|
|
8
|
+
import getSigners from './signer.js';
|
|
9
|
+
import { getInstanceOrThrow } from './utils.js';
|
|
10
|
+
|
|
11
|
+
export const WALLET_ID = 'brave';
|
|
12
|
+
export const metadata: ProviderMetadata = {
|
|
13
|
+
name: 'Brave',
|
|
14
|
+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg',
|
|
15
|
+
extensions: {
|
|
16
|
+
homepage: 'https://brave.com/wallet/',
|
|
17
|
+
},
|
|
18
|
+
properties: [
|
|
19
|
+
{
|
|
20
|
+
name: 'namespaces',
|
|
21
|
+
value: {
|
|
22
|
+
selection: 'multiple',
|
|
23
|
+
data: [
|
|
24
|
+
{
|
|
25
|
+
label: 'EVM',
|
|
26
|
+
value: 'EVM',
|
|
27
|
+
id: 'ETH',
|
|
28
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
29
|
+
evmBlockchains(allBlockchains),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'Solana',
|
|
33
|
+
value: 'Solana',
|
|
34
|
+
id: 'SOLANA',
|
|
35
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
36
|
+
solanaBlockchain(allBlockchains),
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'signers',
|
|
43
|
+
value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
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 {
|
|
9
|
+
actions,
|
|
10
|
+
builders,
|
|
11
|
+
hooks,
|
|
12
|
+
} from '@rango-dev/wallets-core/namespaces/evm';
|
|
13
|
+
|
|
14
|
+
import { WALLET_ID } from '../constants.js';
|
|
15
|
+
import { evmBrave } from '../utils.js';
|
|
16
|
+
|
|
17
|
+
const [changeAccountSubscriber, changeAccountCleanup] =
|
|
18
|
+
hooks.changeAccountSubscriber(evmBrave);
|
|
19
|
+
const connect = builders
|
|
20
|
+
.connect()
|
|
21
|
+
.action(actions.connect(evmBrave))
|
|
22
|
+
.before(changeAccountSubscriber)
|
|
23
|
+
.or(changeAccountCleanup)
|
|
24
|
+
.or(standardizeAndThrowError)
|
|
25
|
+
.build();
|
|
26
|
+
|
|
27
|
+
const disconnect = commonBuilders
|
|
28
|
+
.disconnect<EvmActions>()
|
|
29
|
+
.after(changeAccountCleanup)
|
|
30
|
+
.build();
|
|
31
|
+
|
|
32
|
+
const canSwitchNetwork = builders
|
|
33
|
+
.canSwitchNetwork()
|
|
34
|
+
.action(actions.canSwitchNetwork())
|
|
35
|
+
.build();
|
|
36
|
+
|
|
37
|
+
const canEagerConnect = builders
|
|
38
|
+
.canEagerConnect()
|
|
39
|
+
.action(actions.canEagerConnect(evmBrave))
|
|
40
|
+
.build();
|
|
41
|
+
|
|
42
|
+
const getChainId = builders
|
|
43
|
+
.getChainId()
|
|
44
|
+
.action(actions.getChainId(evmBrave))
|
|
45
|
+
.build();
|
|
46
|
+
|
|
47
|
+
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
|
|
48
|
+
.action(connect)
|
|
49
|
+
.action(disconnect)
|
|
50
|
+
.action(canEagerConnect)
|
|
51
|
+
.action(canSwitchNetwork)
|
|
52
|
+
.action(getChainId)
|
|
53
|
+
.build();
|
|
54
|
+
|
|
55
|
+
export { evm };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
|
|
2
|
+
|
|
3
|
+
import { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';
|
|
4
|
+
import {
|
|
5
|
+
builders as commonBuilders,
|
|
6
|
+
standardizeAndThrowError,
|
|
7
|
+
} from '@rango-dev/wallets-core/namespaces/common';
|
|
8
|
+
import {
|
|
9
|
+
actions,
|
|
10
|
+
builders,
|
|
11
|
+
hooks,
|
|
12
|
+
} from '@rango-dev/wallets-core/namespaces/solana';
|
|
13
|
+
|
|
14
|
+
import { WALLET_ID } from '../constants.js';
|
|
15
|
+
import { solanaBrave } from '../utils.js';
|
|
16
|
+
|
|
17
|
+
const [changeAccountSubscriber, changeAccountCleanup] =
|
|
18
|
+
hooks.changeAccountSubscriber(solanaBrave);
|
|
19
|
+
|
|
20
|
+
const connect = builders
|
|
21
|
+
.connect()
|
|
22
|
+
.action(actions.connect(solanaBrave))
|
|
23
|
+
.before(changeAccountSubscriber)
|
|
24
|
+
.or(changeAccountCleanup)
|
|
25
|
+
.or(standardizeAndThrowError)
|
|
26
|
+
.build();
|
|
27
|
+
|
|
28
|
+
const disconnect = commonBuilders
|
|
29
|
+
.disconnect<SolanaActions>()
|
|
30
|
+
.after(changeAccountCleanup)
|
|
31
|
+
.build();
|
|
32
|
+
|
|
33
|
+
const canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(
|
|
34
|
+
'canEagerConnect'
|
|
35
|
+
)
|
|
36
|
+
.action(actions.canEagerConnect(solanaBrave))
|
|
37
|
+
.build();
|
|
38
|
+
|
|
39
|
+
const solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)
|
|
40
|
+
.action(connect)
|
|
41
|
+
.action(disconnect)
|
|
42
|
+
.action(canEagerConnect)
|
|
43
|
+
.build();
|
|
44
|
+
|
|
45
|
+
export { solana };
|
package/src/provider.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
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 { solana } from './namespaces/solana.js';
|
|
6
|
+
import { brave } from './utils.js';
|
|
7
|
+
|
|
8
|
+
const buildProvider = () =>
|
|
9
|
+
new ProviderBuilder(WALLET_ID)
|
|
10
|
+
.init(function (context) {
|
|
11
|
+
const [, setState] = context.state();
|
|
12
|
+
|
|
13
|
+
if (brave()) {
|
|
14
|
+
setState('installed', true);
|
|
15
|
+
console.debug('[brave] instance detected.', context);
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
.config('metadata', metadata)
|
|
19
|
+
.add('solana', solana)
|
|
20
|
+
.add('evm', evm)
|
|
21
|
+
.build();
|
|
22
|
+
|
|
23
|
+
export { buildProvider };
|
package/src/signer.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Provider } from './types.js';
|
|
2
2
|
import type { SignerFactory } from 'rango-types';
|
|
3
3
|
|
|
4
4
|
import {
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
} from '@rango-dev/wallets-shared';
|
|
9
9
|
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { BraveSolanaSigner } from './signers/solana.js';
|
|
12
12
|
|
|
13
13
|
export default async function getSigners(
|
|
14
|
-
provider:
|
|
14
|
+
provider: Provider
|
|
15
15
|
): Promise<SignerFactory> {
|
|
16
16
|
const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
|
|
17
17
|
const solProvider = getNetworkInstance(provider, Networks.SOLANA);
|
|
@@ -20,6 +20,6 @@ export default async function getSigners(
|
|
|
20
20
|
async () => await import('@rango-dev/signer-evm')
|
|
21
21
|
);
|
|
22
22
|
signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
|
|
23
|
-
signers.registerSigner(TxType.SOLANA, new
|
|
23
|
+
signers.registerSigner(TxType.SOLANA, new BraveSolanaSigner(solProvider));
|
|
24
24
|
return signers;
|
|
25
25
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DefaultSolanaSigner,
|
|
3
|
+
type SolanaExternalProvider,
|
|
4
|
+
} from '@rango-dev/signer-solana';
|
|
2
5
|
import { SignerError, SignerErrorCode } from 'rango-types';
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
type SolanaExternalProvider = any;
|
|
6
|
-
|
|
7
|
-
export class CustomSolanaSigner extends DefaultSolanaSigner {
|
|
7
|
+
export class BraveSolanaSigner extends DefaultSolanaSigner {
|
|
8
8
|
constructor(provider: SolanaExternalProvider) {
|
|
9
9
|
super(provider);
|
|
10
10
|
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
|
|
5
|
+
export type ProviderObject = {
|
|
6
|
+
[LegacyNetworks.ETHEREUM]: EvmProviderApi;
|
|
7
|
+
[LegacyNetworks.SOLANA]: SolanaProviderApi;
|
|
8
|
+
};
|
|
9
|
+
export type Provider = Map<
|
|
10
|
+
keyof ProviderObject,
|
|
11
|
+
ProviderObject[keyof ProviderObject]
|
|
12
|
+
>;
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Provider } from './types.js';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
|
|
5
|
+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
6
|
+
|
|
7
|
+
export function brave(): Provider | null {
|
|
8
|
+
const { braveEthereum, braveSolana } = window;
|
|
9
|
+
if (!braveEthereum || !braveSolana) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const instances: Provider = new Map();
|
|
13
|
+
if (braveEthereum) {
|
|
14
|
+
instances.set(LegacyNetworks.ETHEREUM, braveEthereum);
|
|
15
|
+
}
|
|
16
|
+
if (braveSolana) {
|
|
17
|
+
instances.set(LegacyNetworks.SOLANA, braveSolana);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return instances;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function getInstanceOrThrow(): Provider {
|
|
24
|
+
const instances = brave();
|
|
25
|
+
|
|
26
|
+
if (!instances) {
|
|
27
|
+
throw new Error('Brave Wallet is not injected. Please check your wallet.');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return instances;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function evmBrave(): EvmProviderApi {
|
|
34
|
+
const instances = brave();
|
|
35
|
+
|
|
36
|
+
const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
|
|
37
|
+
|
|
38
|
+
if (!evmInstance) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
'Brave Wallet not injected or EVM not enabled. Please check your wallet.'
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return evmInstance as EvmProviderApi;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function solanaBrave(): SolanaProviderApi {
|
|
48
|
+
const instance = brave();
|
|
49
|
+
const solanaInstance = instance?.get(LegacyNetworks.SOLANA);
|
|
50
|
+
|
|
51
|
+
if (!solanaInstance) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
'Brave Wallet not injected or Solana not enabled. Please check your wallet.'
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return solanaInstance as SolanaProviderApi;
|
|
58
|
+
}
|
package/dist/helpers.d.ts
DELETED
package/dist/helpers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,yBAWpB"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
|
-
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
-
import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
|
|
4
|
-
import { brave as brave_instances } from './helpers.js';
|
|
5
|
-
export declare const config: {
|
|
6
|
-
type: WalletTypes;
|
|
7
|
-
defaultNetwork: Networks;
|
|
8
|
-
};
|
|
9
|
-
export declare const getInstance: typeof brave_instances;
|
|
10
|
-
export declare const connect: Connect;
|
|
11
|
-
export declare const subscribe: Subscribe;
|
|
12
|
-
export declare const switchNetwork: SwitchNetwork;
|
|
13
|
-
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
14
|
-
export declare const getSigners: (provider: any) => Promise<SignerFactory>;
|
|
15
|
-
export declare const canEagerConnect: CanEagerConnect;
|
|
16
|
-
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
17
|
-
//# sourceMappingURL=index.d.ts.map
|
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,eAAe,EACf,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,EAML,QAAQ,EAER,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAKxD,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OA8CrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAgDvB,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,eAAe,EAAE,eAM7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAcjE,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var k=Object.defineProperty;var r=(t,n)=>k(t,"name",{value:n,configurable:!0});import{canEagerlyConnectToEvm as b,canSwitchNetworkToEvm as R,chooseInstance as m,getEvmAccounts as P,getSolanaAccounts as L,Networks as a,switchNetworkForEvm as W,WalletTypes as B}from"@rango-dev/wallets-shared";import{evmBlockchains as I,isEvmBlockchain as U,isSolanaBlockchain as _,solanaBlockchain as H}from"rango-types";import{Networks as u}from"@rango-dev/wallets-shared";function d(){let{ethereum:t,braveSolana:n}=window,e=new Map;return t?.isBraveWallet&&e.set(u.ETHEREUM,t),n&&e.set(u.SOLANA,n),e.size===0?null:e}r(d,"brave");import{dynamicImportWithRefinedError as x,getNetworkInstance as v,Networks as y}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as M,TransactionType as S}from"rango-types";import{DefaultSolanaSigner as N}from"@rango-dev/signer-solana";import{SignerError as A,SignerErrorCode as T}from"rango-types";var E=class extends N{static{r(this,"CustomSolanaSigner")}constructor(n){super(n)}async signMessage(n){try{let e=new TextEncoder().encode(n),{signature:o}=await this.provider.request({method:"signMessage",params:{message:e}});return o}catch(e){throw new A(T.SIGN_TX_ERROR,void 0,e)}}};async function w(t){let n=v(t,y.ETHEREUM),e=v(t,y.SOLANA),o=new M,{DefaultEvmSigner:c}=await x(async()=>await import("@rango-dev/signer-evm"));return o.registerSigner(S.EVM,new c(n)),o.registerSigner(S.SOLANA,new E(e)),o}r(w,"getSigners");var O=B.BRAVE,re={type:O,defaultNetwork:a.ETHEREUM},oe=d,se=r(async({instance:t,meta:n})=>{let e=m(t,n,a.ETHEREUM),o=m(t,n,a.SOLANA),c=[],i=-32603,g="Please create or import a wallet",l=0;if(e)try{let s=await P(e);c.push(s)}catch(s){if(s.code===i)l+=1;else throw s}if(o)try{let s=await L({instance:o,meta:n});c.push(s)}catch(s){if(s.code===i)l+=1;else throw s}if(l===t.size)throw new Error(g);return c},"connect"),ce=r(({instance:t,updateAccounts:n,meta:e,state:o,updateChainId:c})=>{let i=m(t,e,a.ETHEREUM),g=m(t,e,a.SOLANA),l=r(f=>{let h=e.filter(U).find(C=>C.name===a.ETHEREUM)?.chainId;o.connected&&(o.network!=a.ETHEREUM&&h&&c(h),n(f))},"handleEvmAccountsChanged"),s=r(f=>{c(f)},"handleEvmChainChanged"),p=r(async()=>{o.network!=a.SOLANA&&c(e.filter(_)[0].chainId);let h=(await g.connect()).publicKey.toString();n([h])},"handleSolanaAccountsChanged");return i?.on?.("accountsChanged",l),i?.on?.("chainChanged",s),g?.on?.("accountChanged",p),()=>{i?.off?.("accountsChanged",l),i?.off?.("chainChanged",s),g?.off?.("accountChanged",p)}},"subscribe"),ae=W,ie=R,le=w,ge=r(async({instance:t,meta:n})=>{let e=m(t,n,a.ETHEREUM);return e?b({instance:e,meta:n}):Promise.resolve(!1)},"canEagerConnect"),me=r(t=>{let n=I(t),e=H(t);return{name:"Brave",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg",installLink:{DEFAULT:"https://brave.com/wallet/"},color:"#ef342f",supportedChains:[...n,...e]}},"getWalletInfo");export{ge as canEagerConnect,ie as canSwitchNetworkTo,re as config,se as connect,oe as getInstance,le as getSigners,me as getWalletInfo,ce as subscribe,ae 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", "../src/solana-signer.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n CanEagerConnect,\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 canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n getSolanaAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport {\n evmBlockchains,\n isEvmBlockchain,\n isSolanaBlockchain,\n solanaBlockchain,\n} from 'rango-types';\n\nimport { brave as brave_instances } from './helpers.js';\nimport signer from './signer.js';\n\nconst WALLET = WalletTypes.BRAVE;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = brave_instances;\n\nexport const connect: Connect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);\n const results: ProviderConnectResult[] = [];\n const emptyWalletErrorCode = -32603;\n const emptyWalletCustomErrorMessage = 'Please create or import a wallet';\n let numberOfEmptyWallets = 0;\n\n if (evm_instance) {\n try {\n const evmAccounts = await getEvmAccounts(evm_instance);\n results.push(evmAccounts);\n } catch (error) {\n // To resolve this error: Catch clause variable type annotation must be any or unknown if specified\n const err = error as { code: number };\n if (err.code === emptyWalletErrorCode) {\n numberOfEmptyWallets += 1;\n } else {\n throw error;\n }\n }\n }\n\n if (sol_instance) {\n try {\n const solanaAccounts = await getSolanaAccounts({\n instance: sol_instance,\n meta,\n });\n results.push(solanaAccounts as ProviderConnectResult);\n } catch (error) {\n // To resolve this error: Catch clause variable type annotation must be any or unknown if specified\n const err = error as { code: number };\n if (err.code === emptyWalletErrorCode) {\n numberOfEmptyWallets += 1;\n } else {\n throw error;\n }\n }\n }\n\n if (numberOfEmptyWallets === instance.size) {\n throw new Error(emptyWalletCustomErrorMessage);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n updateAccounts,\n meta,\n state,\n updateChainId,\n}) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);\n\n const handleEvmAccountsChanged = (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n if (state.connected) {\n if (state.network != Networks.ETHEREUM && eth_chainId) {\n updateChainId(eth_chainId);\n }\n updateAccounts(addresses);\n }\n };\n\n const handleEvmChainChanged = (chainId: string) => {\n updateChainId(chainId);\n };\n\n const handleSolanaAccountsChanged = async () => {\n if (state.network != Networks.SOLANA) {\n updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);\n }\n const response = await sol_instance.connect();\n const account: string = response.publicKey.toString();\n updateAccounts([account]);\n };\n\n evm_instance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n evm_instance?.on?.('chainChanged', handleEvmChainChanged);\n\n sol_instance?.on?.('accountChanged', handleSolanaAccountsChanged);\n\n return () => {\n evm_instance?.off?.('accountsChanged', handleEvmAccountsChanged);\n\n evm_instance?.off?.('chainChanged', handleEvmChainChanged);\n\n sol_instance?.off?.('accountChanged', handleSolanaAccountsChanged);\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 canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'Brave',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg',\n installLink: {\n DEFAULT: 'https://brave.com/wallet/',\n },\n color: '#ef342f',\n supportedChains: [...evms, ...solana],\n };\n};\n", "import { Networks } from '@rango-dev/wallets-shared';\n\nexport function brave() {\n const { ethereum, braveSolana } = window;\n\n const instances = new Map();\n\n if (ethereum?.isBraveWallet) instances.set(Networks.ETHEREUM, ethereum);\n if (braveSolana) instances.set(Networks.SOLANA, braveSolana);\n\n if (instances.size === 0) return null;\n\n return instances;\n}\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\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\nimport { CustomSolanaSigner } from './solana-signer.js';\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 CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const encodedMessage = new TextEncoder().encode(msg);\n const { signature } = await this.provider.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n },\n });\n return signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "getSolanaAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "isSolanaBlockchain", "solanaBlockchain", "Networks", "brave", "ethereum", "braveSolana", "instances", "Networks", "__name", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "SignerError", "SignerErrorCode", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "encodedMessage", "signature", "error", "SignerError", "SignerErrorCode", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "brave", "connect", "__name", "instance", "meta", "evm_instance", "chooseInstance", "sol_instance", "results", "emptyWalletErrorCode", "emptyWalletCustomErrorMessage", "numberOfEmptyWallets", "evmAccounts", "getEvmAccounts", "error", "solanaAccounts", "getSolanaAccounts", "subscribe", "updateAccounts", "state", "updateChainId", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "handleEvmChainChanged", "chainId", "handleSolanaAccountsChanged", "isSolanaBlockchain", "account", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain"]
|
|
7
|
-
}
|
package/dist/solana-signer.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DefaultSolanaSigner } from '@rango-dev/signer-solana';
|
|
2
|
-
type SolanaExternalProvider = any;
|
|
3
|
-
export declare class CustomSolanaSigner extends DefaultSolanaSigner {
|
|
4
|
-
constructor(provider: SolanaExternalProvider);
|
|
5
|
-
signMessage(msg: string): Promise<string>;
|
|
6
|
-
}
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=solana-signer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solana-signer.d.ts","sourceRoot":"","sources":["../src/solana-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,KAAK,sBAAsB,GAAG,GAAG,CAAC;AAElC,qBAAa,kBAAmB,SAAQ,mBAAmB;gBAC7C,QAAQ,EAAE,sBAAsB;IAItC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAchD"}
|
package/src/helpers.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Networks } from '@rango-dev/wallets-shared';
|
|
2
|
-
|
|
3
|
-
export function brave() {
|
|
4
|
-
const { ethereum, braveSolana } = window;
|
|
5
|
-
|
|
6
|
-
const instances = new Map();
|
|
7
|
-
|
|
8
|
-
if (ethereum?.isBraveWallet) instances.set(Networks.ETHEREUM, ethereum);
|
|
9
|
-
if (braveSolana) instances.set(Networks.SOLANA, braveSolana);
|
|
10
|
-
|
|
11
|
-
if (instances.size === 0) return null;
|
|
12
|
-
|
|
13
|
-
return instances;
|
|
14
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CanEagerConnect,
|
|
3
|
-
CanSwitchNetwork,
|
|
4
|
-
Connect,
|
|
5
|
-
ProviderConnectResult,
|
|
6
|
-
Subscribe,
|
|
7
|
-
SwitchNetwork,
|
|
8
|
-
WalletInfo,
|
|
9
|
-
} from '@rango-dev/wallets-shared';
|
|
10
|
-
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
canEagerlyConnectToEvm,
|
|
14
|
-
canSwitchNetworkToEvm,
|
|
15
|
-
chooseInstance,
|
|
16
|
-
getEvmAccounts,
|
|
17
|
-
getSolanaAccounts,
|
|
18
|
-
Networks,
|
|
19
|
-
switchNetworkForEvm,
|
|
20
|
-
WalletTypes,
|
|
21
|
-
} from '@rango-dev/wallets-shared';
|
|
22
|
-
import {
|
|
23
|
-
evmBlockchains,
|
|
24
|
-
isEvmBlockchain,
|
|
25
|
-
isSolanaBlockchain,
|
|
26
|
-
solanaBlockchain,
|
|
27
|
-
} from 'rango-types';
|
|
28
|
-
|
|
29
|
-
import { brave as brave_instances } from './helpers.js';
|
|
30
|
-
import signer from './signer.js';
|
|
31
|
-
|
|
32
|
-
const WALLET = WalletTypes.BRAVE;
|
|
33
|
-
|
|
34
|
-
export const config = {
|
|
35
|
-
type: WALLET,
|
|
36
|
-
defaultNetwork: Networks.ETHEREUM,
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const getInstance = brave_instances;
|
|
40
|
-
|
|
41
|
-
export const connect: Connect = async ({ instance, meta }) => {
|
|
42
|
-
const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
43
|
-
const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);
|
|
44
|
-
const results: ProviderConnectResult[] = [];
|
|
45
|
-
const emptyWalletErrorCode = -32603;
|
|
46
|
-
const emptyWalletCustomErrorMessage = 'Please create or import a wallet';
|
|
47
|
-
let numberOfEmptyWallets = 0;
|
|
48
|
-
|
|
49
|
-
if (evm_instance) {
|
|
50
|
-
try {
|
|
51
|
-
const evmAccounts = await getEvmAccounts(evm_instance);
|
|
52
|
-
results.push(evmAccounts);
|
|
53
|
-
} catch (error) {
|
|
54
|
-
// To resolve this error: Catch clause variable type annotation must be any or unknown if specified
|
|
55
|
-
const err = error as { code: number };
|
|
56
|
-
if (err.code === emptyWalletErrorCode) {
|
|
57
|
-
numberOfEmptyWallets += 1;
|
|
58
|
-
} else {
|
|
59
|
-
throw error;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (sol_instance) {
|
|
65
|
-
try {
|
|
66
|
-
const solanaAccounts = await getSolanaAccounts({
|
|
67
|
-
instance: sol_instance,
|
|
68
|
-
meta,
|
|
69
|
-
});
|
|
70
|
-
results.push(solanaAccounts as ProviderConnectResult);
|
|
71
|
-
} catch (error) {
|
|
72
|
-
// To resolve this error: Catch clause variable type annotation must be any or unknown if specified
|
|
73
|
-
const err = error as { code: number };
|
|
74
|
-
if (err.code === emptyWalletErrorCode) {
|
|
75
|
-
numberOfEmptyWallets += 1;
|
|
76
|
-
} else {
|
|
77
|
-
throw error;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (numberOfEmptyWallets === instance.size) {
|
|
83
|
-
throw new Error(emptyWalletCustomErrorMessage);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return results;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export const subscribe: Subscribe = ({
|
|
90
|
-
instance,
|
|
91
|
-
updateAccounts,
|
|
92
|
-
meta,
|
|
93
|
-
state,
|
|
94
|
-
updateChainId,
|
|
95
|
-
}) => {
|
|
96
|
-
const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
97
|
-
const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);
|
|
98
|
-
|
|
99
|
-
const handleEvmAccountsChanged = (addresses: string[]) => {
|
|
100
|
-
const eth_chainId = meta
|
|
101
|
-
.filter(isEvmBlockchain)
|
|
102
|
-
.find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;
|
|
103
|
-
if (state.connected) {
|
|
104
|
-
if (state.network != Networks.ETHEREUM && eth_chainId) {
|
|
105
|
-
updateChainId(eth_chainId);
|
|
106
|
-
}
|
|
107
|
-
updateAccounts(addresses);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
const handleEvmChainChanged = (chainId: string) => {
|
|
112
|
-
updateChainId(chainId);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const handleSolanaAccountsChanged = async () => {
|
|
116
|
-
if (state.network != Networks.SOLANA) {
|
|
117
|
-
updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);
|
|
118
|
-
}
|
|
119
|
-
const response = await sol_instance.connect();
|
|
120
|
-
const account: string = response.publicKey.toString();
|
|
121
|
-
updateAccounts([account]);
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
evm_instance?.on?.('accountsChanged', handleEvmAccountsChanged);
|
|
125
|
-
|
|
126
|
-
evm_instance?.on?.('chainChanged', handleEvmChainChanged);
|
|
127
|
-
|
|
128
|
-
sol_instance?.on?.('accountChanged', handleSolanaAccountsChanged);
|
|
129
|
-
|
|
130
|
-
return () => {
|
|
131
|
-
evm_instance?.off?.('accountsChanged', handleEvmAccountsChanged);
|
|
132
|
-
|
|
133
|
-
evm_instance?.off?.('chainChanged', handleEvmChainChanged);
|
|
134
|
-
|
|
135
|
-
sol_instance?.off?.('accountChanged', handleSolanaAccountsChanged);
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
140
|
-
|
|
141
|
-
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
142
|
-
|
|
143
|
-
export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
|
|
144
|
-
|
|
145
|
-
export const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {
|
|
146
|
-
const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
147
|
-
if (evm_instance) {
|
|
148
|
-
return canEagerlyConnectToEvm({ instance: evm_instance, meta });
|
|
149
|
-
}
|
|
150
|
-
return Promise.resolve(false);
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
154
|
-
allBlockChains
|
|
155
|
-
) => {
|
|
156
|
-
const evms = evmBlockchains(allBlockChains);
|
|
157
|
-
const solana = solanaBlockchain(allBlockChains);
|
|
158
|
-
return {
|
|
159
|
-
name: 'Brave',
|
|
160
|
-
img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/brave/icon.svg',
|
|
161
|
-
installLink: {
|
|
162
|
-
DEFAULT: 'https://brave.com/wallet/',
|
|
163
|
-
},
|
|
164
|
-
color: '#ef342f',
|
|
165
|
-
supportedChains: [...evms, ...solana],
|
|
166
|
-
};
|
|
167
|
-
};
|