@rango-dev/provider-rabby 0.0.0-experimental-936229e8-20251208
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/CHANGELOG.md +150 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/legacy/index.d.ts +19 -0
- 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-rabby.build.json +1 -0
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/signer.d.ts +4 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +32 -0
- package/readme.md +6 -0
- package/src/constants.ts +41 -0
- package/src/legacy/index.ts +100 -0
- package/src/mod.ts +12 -0
- package/src/namespaces/evm.ts +56 -0
- package/src/provider.ts +20 -0
- package/src/signer.ts +21 -0
- package/src/utils.ts +67 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# [0.22.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.21.1...provider-rabby@0.22.0) (2025-12-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## [0.21.1](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.21.0...provider-rabby@0.21.1) (2025-11-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# [0.19.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.18.0...provider-rabby@0.19.0) (2025-10-29)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Reverts
|
|
13
|
+
|
|
14
|
+
* Revert "feat: implement deep linking" ([a0b0edc](https://github.com/rango-exchange/rango-client/commit/a0b0edcc052bfea69af2037b73c0bb6a9b38c2a9))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# [0.18.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.17.0...provider-rabby@0.18.0) (2025-09-29)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* implement changeAccountSubscriber builder ([8e2ca97](https://github.com/rango-exchange/rango-client/commit/8e2ca9783fcd57445ca558e688c402a30aba3686))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# [0.17.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.16.0...provider-rabby@0.17.0) (2025-09-06)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* implement deep linking ([1dec48e](https://github.com/rango-exchange/rango-client/commit/1dec48e4db944977fb6d3797d7aa49527940fab6))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# [0.16.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.15.0...provider-rabby@0.16.0) (2025-08-19)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* add rango-dev/wallets-core to dependencies of providers ([84b4b2b](https://github.com/rango-exchange/rango-client/commit/84b4b2b7c3a7f5631228fb6ebf04617c3c4428e9))
|
|
42
|
+
* remove retry dynamic import and throw refined error on dynamic import failure ([a2944ac](https://github.com/rango-exchange/rango-client/commit/a2944ac3c05a0e945f6e5621fa5693ab89625485))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* implement retry mechanism for lazy imports ([9a8e191](https://github.com/rango-exchange/rango-client/commit/9a8e191711d2319990ca4d0613e8188a5f86842f))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# [0.15.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.14.0...provider-rabby@0.15.0) (2025-08-05)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Bug Fixes
|
|
55
|
+
|
|
56
|
+
* add canSwitchNetwork action to rabby ([a1052f5](https://github.com/rango-exchange/rango-client/commit/a1052f597f2c9c43a480473a4bf9be0236cd97fe))
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# [0.14.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.13.0...provider-rabby@0.14.0) (2025-07-22)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Features
|
|
64
|
+
|
|
65
|
+
* migrate rabby to use hub ([e25ba8c](https://github.com/rango-exchange/rango-client/commit/e25ba8c52e2a603ba0689e91773fd6edebf3003f))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Reverts
|
|
69
|
+
|
|
70
|
+
* Revert "chore(release): publish" ([064ce15](https://github.com/rango-exchange/rango-client/commit/064ce157a2f819856f647f83aeb1c0410542e8d7))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# [0.12.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.11.1...provider-rabby@0.12.0) (2025-06-09)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## [0.11.1](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.11.0...provider-rabby@0.11.1) (2025-05-04)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# [0.11.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.10.0...provider-rabby@0.11.0) (2025-04-30)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### Bug Fixes
|
|
86
|
+
|
|
87
|
+
* rename pbt to ptb for sui ([3d6d89f](https://github.com/rango-exchange/rango-client/commit/3d6d89f2265766607a15d61e0df92643fb33072b))
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
### Features
|
|
91
|
+
|
|
92
|
+
* update sui to consider recent api changes ([d764b25](https://github.com/rango-exchange/rango-client/commit/d764b2501df9bb295f63cdbc0b05acd4a3abb4b9))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# [0.10.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.9.0...provider-rabby@0.10.0) (2025-03-11)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# [0.9.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.8.0...provider-rabby@0.9.0) (2025-02-23)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
# [0.8.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.7.0...provider-rabby@0.8.0) (2024-12-30)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# [0.7.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.6.0...provider-rabby@0.7.0) (2024-11-27)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# [0.6.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.5.0...provider-rabby@0.6.0) (2024-11-12)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# [0.5.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.4.0...provider-rabby@0.5.0) (2024-10-12)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### Bug Fixes
|
|
120
|
+
|
|
121
|
+
* bump sdk and fix type issues ([d442208](https://github.com/rango-exchange/rango-client/commit/d4422083bf5dd27d5f509ce1db7f9560d05428c8))
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
### Performance Improvements
|
|
125
|
+
|
|
126
|
+
* lazy load signer packages ([7b88f18](https://github.com/rango-exchange/rango-client/commit/7b88f1834f7b29b4b81ab6c81a07bb88e8ccf55c))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
# [0.4.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.3.0...provider-rabby@0.4.0) (2024-09-10)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
# [0.3.0](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.2.1...provider-rabby@0.3.0) (2024-08-11)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## [0.2.1](https://github.com/rango-exchange/rango-client/compare/provider-rabby@0.2.0...provider-rabby@0.2.1) (2024-07-14)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# 0.2.0 (2024-07-09)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Features
|
|
146
|
+
|
|
147
|
+
* integrate rabby wallet extension ([145fb8f](https://github.com/rango-exchange/rango-client/commit/145fb8ffbbf5e46e7e8386aeffcefc8f4ddb22e7))
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
@@ -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,UAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,gBAgCtB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
+
import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
|
|
4
|
+
import { WalletTypes } from '@rango-dev/wallets-shared';
|
|
5
|
+
import { type Provider, rabby as rabbyInstance } from '../utils.js';
|
|
6
|
+
export declare const config: {
|
|
7
|
+
type: WalletTypes;
|
|
8
|
+
};
|
|
9
|
+
export declare const getInstance: typeof rabbyInstance;
|
|
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: Provider) => Promise<SignerFactory>;
|
|
15
|
+
export declare const canEagerConnect: CanEagerConnect;
|
|
16
|
+
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
17
|
+
declare const buildLegacyProvider: () => LegacyProviderInterface;
|
|
18
|
+
export { buildLegacyProvider };
|
|
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,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAML,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpE,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,eAAO,MAAM,WAAW,sBAAgB,CAAC;AACzC,eAAO,MAAM,OAAO,EAAE,OAarB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAA0B,CAAC;AAEnD,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,eAAe,EAAE,eAAwC,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UA8BjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAU/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 v=Object.defineProperty;var t=(o,e)=>v(o,"name",{value:e,configurable:!0});import{defineVersions as $}from"@rango-dev/wallets-core/utils";import"@rango-dev/wallets-core/legacy";import{canEagerlyConnectToEvm as I,canSwitchNetworkToEvm as P,getEvmAccounts as R,subscribeToEvm as x,switchNetworkForEvm as A,WalletTypes as T}from"@rango-dev/wallets-shared";import{evmBlockchains as g}from"rango-types";import{LegacyNetworks as E}from"@rango-dev/wallets-core/legacy";import{dynamicImportWithRefinedError as k,getNetworkInstance as S}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as N,TransactionType as C}from"rango-types";async function a(o){let e=S(o,E.ETHEREUM),r=new N,{DefaultEvmSigner:c}=await k(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(C.EVM,new c(e)),r}t(a,"getSigners");import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";import{utils as l}from"@rango-dev/wallets-core/namespaces/evm";function i(){let{ethereum:o}=window;if(!o?.isRabby)return null;let e=new Map;return e.set(p.ETHEREUM,o),e}t(i,"rabby");function n(){let e=i()?.get(p.ETHEREUM);if(!e)throw new Error("Rabby not injected or EVM not enabled. Please check your wallet.");return e}t(n,"evmRabby");async function b(o,e){try{let r=typeof e=="string"?e:e.chainId;await l.switchNetwork(o,r)}catch(r){let c=r;if(typeof e!="string"&&c.code===-32603&&c.message.includes("Unrecognized chain ID")){await l.suggestNetwork(o,e);return}throw r}}t(b,"switchOrAddNetwork");var M={type:T.Rabby},O=i,_=t(async({instance:o})=>{let{accounts:e,chainId:r}=await R(o);return{accounts:e,chainId:r}},"connect"),L=x,D=A,F=P,B=a,U=I,j=t(o=>{let e=g(o);return{name:"Rabby",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg",installLink:{CHROME:"https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",BRAVE:"https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet/",DEFAULT:"https://rabby.io/"},color:"#fff",supportedChains:e,needsNamespace:{selection:"multiple",data:[{id:"ETH",value:"EVM",label:"Evm",getSupportedChains:r=>g(r)}]}}},"getWalletInfo"),h=t(()=>({config:M,getInstance:O,connect:_,subscribe:L,switchNetwork:D,canSwitchNetworkTo:F,getSigners:B,canEagerConnect:U,getWalletInfo:j}),"buildLegacyProvider");import{ProviderBuilder as Z}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as H}from"rango-types";var s="rabby",u={name:"Rabby",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",brave:"https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",firefox:"https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet",homepage:"https://rabby.io/"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:o=>H(o)}]}},{name:"signers",value:{getSigners:async()=>a(n())}}]};import{NamespaceBuilder as V}from"@rango-dev/wallets-core";import{builders as W,standardizeAndThrowError as z}from"@rango-dev/wallets-core/namespaces/common";import{actions as m,builders as d,hooks as G}from"@rango-dev/wallets-core/namespaces/evm";var[X,y]=G.changeAccountSubscriber(n),q=d.connect().action(m.connect(n,{switchOrAddNetwork:b})).before(X).or(y).or(z).build(),J=W.disconnect().after(y).build(),K=d.canSwitchNetwork().action(m.canSwitchNetwork()).build(),Q=d.canEagerConnect().action(m.canEagerConnect(n)).build(),Y=d.getChainId().action(m.getChainId(n)).build(),w=new V("EVM",s).action(q).action(J).action(Q).action(K).action(Y).build();var f=t(()=>new Z(s).init(function(o){let[,e]=o.state();i()&&(e("installed",!0),console.debug("[rabby] instance detected.",o))}).config("metadata",u).add("evm",w).build(),"buildProvider");var Ue=t(()=>$().version("0.0.0",h()).version("1.0.0",f()).build(),"versions");export{Ue 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 CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains } from 'rango-types';\n\nimport signer from '../signer.js';\nimport { type Provider, rabby as rabbyInstance } from '../utils.js';\n\nexport const config = {\n type: WalletTypes.Rabby,\n};\n\nexport const getInstance = rabbyInstance;\nexport const connect: Connect = async ({ instance }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const { accounts, chainId } = await getEvmAccounts(instance);\n\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\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 canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n return {\n name: 'Rabby',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg',\n installLink: {\n CHROME:\n 'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',\n BRAVE:\n 'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',\n FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet/',\n DEFAULT: 'https://rabby.io/',\n },\n color: '#fff',\n supportedChains: evms,\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n id: 'ETH',\n value: 'EVM',\n label: 'Evm',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(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 canEagerConnect,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\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 evmProvider = 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(evmProvider));\n return signers;\n}\n", "import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\nimport {\n type Chain,\n type ChainId,\n type ProviderAPI as EvmProviderApi,\n type ProviderAPI,\n utils,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function rabby(): Provider | null {\n const { ethereum } = window;\n\n if (!ethereum?.isRabby) {\n return null;\n }\n\n const instances = new Map();\n\n instances.set(LegacyNetworks.ETHEREUM, ethereum);\n\n return instances;\n}\n\nexport function evmRabby(): EvmProviderApi {\n const instances = rabby();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'Rabby not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\nexport async function switchOrAddNetwork(\n instance: ProviderAPI,\n chain: ChainId | Chain\n) {\n try {\n const chainId = typeof chain === 'string' ? chain : chain.chainId;\n await utils.switchNetwork(instance, chainId);\n } catch (switchError) {\n const error = switchError as { code: number; message: string };\n\n /*\n * Workaround for handling unrecognized chain errors in rabby where error code -32603\n * (defined in EIP-1474 as an internal RPC error) is used instead of the metamask chain-not-found code.\n * Combine the code check with the specific error message \"Unrecognized chain ID\"\n * to reliably identify this scenario.\n */\n const NOT_FOUND_CHAIN_ERROR_CODE = -32603;\n const NOT_FOUND_ERROR_MESSAGE = 'Unrecognized chain ID';\n if (\n typeof chain !== 'string' &&\n error.code === NOT_FOUND_CHAIN_ERROR_CODE &&\n error.message.includes(NOT_FOUND_ERROR_MESSAGE)\n ) {\n await utils.suggestNetwork(instance, chain);\n return;\n }\n throw switchError;\n }\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { rabby as rabbyInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n if (rabbyInstance()) {\n setState('installed', true);\n console.debug('[rabby] instance detected.', context);\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 { evmRabby } from './utils.js';\n\nexport const WALLET_ID = 'rabby';\n\nexport const metadata: ProviderMetadata = {\n name: 'Rabby',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',\n brave:\n 'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet',\n homepage: 'https://rabby.io/',\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(evmRabby()) },\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 {\n actions,\n builders,\n hooks,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmRabby, switchOrAddNetwork } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(evmRabby);\n\nconst connect = builders\n .connect()\n .action(actions.connect(evmRabby, { switchOrAddNetwork }))\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(evmRabby))\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmRabby))\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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defineVersions", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "Networks", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "evmProvider", "getNetworkInstance", "Networks", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "utils", "rabby", "ethereum", "instances", "LegacyNetworks", "__name", "evmRabby", "evmInstance", "switchOrAddNetwork", "instance", "chain", "chainId", "utils", "switchError", "error", "config", "WalletTypes", "getInstance", "rabby", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "getSigners", "evmRabby", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "hooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "evmRabby", "connect", "builders", "actions", "switchOrAddNetwork", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "canEagerConnect", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "rabby", "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;AA+CzE,QAAA,MAAM,GAAG,gEAMC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/signer.ts":{"bytes":780,"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":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1897,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":2753,"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":1211,"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":1390,"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":586,"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":14574},"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-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/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","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","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":1163},"src/signer.ts":{"bytesInOutput":421},"src/utils.ts":{"bytesInOutput":663},"src/provider.ts":{"bytesInOutput":246},"src/constants.ts":{"bytesInOutput":685},"src/namespaces/evm.ts":{"bytesInOutput":651}},"bytes":4106}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,aAAa,kDAWP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/signer.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
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 Chain, type ChainId, type ProviderAPI as EvmProviderApi, type ProviderAPI } from '@rango-dev/wallets-core/namespaces/evm';
|
|
2
|
+
export type Provider = Record<string, any>;
|
|
3
|
+
export declare function rabby(): Provider | null;
|
|
4
|
+
export declare function evmRabby(): EvmProviderApi;
|
|
5
|
+
export declare function switchOrAddNetwork(instance: ProviderAPI, chain: ChainId | Chain): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,WAAW,IAAI,cAAc,EAClC,KAAK,WAAW,EAEjB,MAAM,wCAAwC,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,wBAAgB,KAAK,IAAI,QAAQ,GAAG,IAAI,CAYvC;AAED,wBAAgB,QAAQ,IAAI,cAAc,CAYzC;AACD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,OAAO,GAAG,KAAK,iBA0BvB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rango-dev/provider-rabby",
|
|
3
|
+
"version": "0.0.0-experimental-936229e8-20251208",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"source": "./src/mod.ts",
|
|
7
|
+
"main": "./dist/mod.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/mod.js"
|
|
10
|
+
},
|
|
11
|
+
"typings": "dist/mod.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"src"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-rabby --inputs src/mod.ts",
|
|
18
|
+
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
|
|
19
|
+
"clean": "rimraf dist",
|
|
20
|
+
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
21
|
+
"lint": "eslint \"**/*.{ts,tsx}\""
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@rango-dev/signer-evm": "^0.40.0",
|
|
25
|
+
"@rango-dev/wallets-core": "^0.0.0-experimental-936229e8-20251208",
|
|
26
|
+
"@rango-dev/wallets-shared": "^0.0.0-experimental-936229e8-20251208",
|
|
27
|
+
"rango-types": "^0.1.89"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/readme.md
ADDED
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 { evmRabby } from './utils.js';
|
|
6
|
+
|
|
7
|
+
export const WALLET_ID = 'rabby';
|
|
8
|
+
|
|
9
|
+
export const metadata: ProviderMetadata = {
|
|
10
|
+
name: 'Rabby',
|
|
11
|
+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg',
|
|
12
|
+
extensions: {
|
|
13
|
+
chrome:
|
|
14
|
+
'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',
|
|
15
|
+
brave:
|
|
16
|
+
'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',
|
|
17
|
+
firefox: 'https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet',
|
|
18
|
+
homepage: 'https://rabby.io/',
|
|
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(evmRabby()) },
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CanEagerConnect,
|
|
3
|
+
CanSwitchNetwork,
|
|
4
|
+
Connect,
|
|
5
|
+
Subscribe,
|
|
6
|
+
SwitchNetwork,
|
|
7
|
+
WalletInfo,
|
|
8
|
+
} from '@rango-dev/wallets-shared';
|
|
9
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
10
|
+
|
|
11
|
+
import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
|
|
12
|
+
import {
|
|
13
|
+
canEagerlyConnectToEvm,
|
|
14
|
+
canSwitchNetworkToEvm,
|
|
15
|
+
getEvmAccounts,
|
|
16
|
+
subscribeToEvm,
|
|
17
|
+
switchNetworkForEvm,
|
|
18
|
+
WalletTypes,
|
|
19
|
+
} from '@rango-dev/wallets-shared';
|
|
20
|
+
import { evmBlockchains } from 'rango-types';
|
|
21
|
+
|
|
22
|
+
import signer from '../signer.js';
|
|
23
|
+
import { type Provider, rabby as rabbyInstance } from '../utils.js';
|
|
24
|
+
|
|
25
|
+
export const config = {
|
|
26
|
+
type: WalletTypes.Rabby,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const getInstance = rabbyInstance;
|
|
30
|
+
export const connect: Connect = async ({ instance }) => {
|
|
31
|
+
/*
|
|
32
|
+
* Note: We need to get `chainId` here, because for the first time
|
|
33
|
+
* after opening the browser, wallet is locked, and don't give us accounts and chainId
|
|
34
|
+
* on `check` phase, so `network` will be null. For this case we need to get chainId
|
|
35
|
+
* whenever we are requesting accounts.
|
|
36
|
+
*/
|
|
37
|
+
const { accounts, chainId } = await getEvmAccounts(instance);
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
accounts,
|
|
41
|
+
chainId,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const subscribe: Subscribe = subscribeToEvm;
|
|
46
|
+
|
|
47
|
+
export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
48
|
+
|
|
49
|
+
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
50
|
+
|
|
51
|
+
export const getSigners: (provider: Provider) => Promise<SignerFactory> =
|
|
52
|
+
signer;
|
|
53
|
+
|
|
54
|
+
export const canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;
|
|
55
|
+
|
|
56
|
+
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
57
|
+
allBlockChains
|
|
58
|
+
) => {
|
|
59
|
+
const evms = evmBlockchains(allBlockChains);
|
|
60
|
+
return {
|
|
61
|
+
name: 'Rabby',
|
|
62
|
+
img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/rabby/icon.svg',
|
|
63
|
+
installLink: {
|
|
64
|
+
CHROME:
|
|
65
|
+
'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',
|
|
66
|
+
BRAVE:
|
|
67
|
+
'https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',
|
|
68
|
+
FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/rabby-wallet/',
|
|
69
|
+
DEFAULT: 'https://rabby.io/',
|
|
70
|
+
},
|
|
71
|
+
color: '#fff',
|
|
72
|
+
supportedChains: evms,
|
|
73
|
+
needsNamespace: {
|
|
74
|
+
selection: 'multiple',
|
|
75
|
+
data: [
|
|
76
|
+
{
|
|
77
|
+
id: 'ETH',
|
|
78
|
+
value: 'EVM',
|
|
79
|
+
label: 'Evm',
|
|
80
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
81
|
+
evmBlockchains(allBlockchains),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const buildLegacyProvider: () => LegacyProviderInterface = () => ({
|
|
89
|
+
config,
|
|
90
|
+
getInstance,
|
|
91
|
+
connect,
|
|
92
|
+
subscribe,
|
|
93
|
+
switchNetwork,
|
|
94
|
+
canSwitchNetworkTo,
|
|
95
|
+
getSigners,
|
|
96
|
+
canEagerConnect,
|
|
97
|
+
getWalletInfo,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
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,56 @@
|
|
|
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 { evmRabby, switchOrAddNetwork } from '../utils.js';
|
|
16
|
+
|
|
17
|
+
const [changeAccountSubscriber, changeAccountCleanup] =
|
|
18
|
+
hooks.changeAccountSubscriber(evmRabby);
|
|
19
|
+
|
|
20
|
+
const connect = builders
|
|
21
|
+
.connect()
|
|
22
|
+
.action(actions.connect(evmRabby, { switchOrAddNetwork }))
|
|
23
|
+
.before(changeAccountSubscriber)
|
|
24
|
+
.or(changeAccountCleanup)
|
|
25
|
+
.or(standardizeAndThrowError)
|
|
26
|
+
.build();
|
|
27
|
+
|
|
28
|
+
const disconnect = commonBuilders
|
|
29
|
+
.disconnect<EvmActions>()
|
|
30
|
+
.after(changeAccountCleanup)
|
|
31
|
+
.build();
|
|
32
|
+
|
|
33
|
+
const canSwitchNetwork = builders
|
|
34
|
+
.canSwitchNetwork()
|
|
35
|
+
.action(actions.canSwitchNetwork())
|
|
36
|
+
.build();
|
|
37
|
+
|
|
38
|
+
const canEagerConnect = builders
|
|
39
|
+
.canEagerConnect()
|
|
40
|
+
.action(actions.canEagerConnect(evmRabby))
|
|
41
|
+
.build();
|
|
42
|
+
|
|
43
|
+
const getChainId = builders
|
|
44
|
+
.getChainId()
|
|
45
|
+
.action(actions.getChainId(evmRabby))
|
|
46
|
+
.build();
|
|
47
|
+
|
|
48
|
+
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
|
|
49
|
+
.action(connect)
|
|
50
|
+
.action(disconnect)
|
|
51
|
+
.action(canEagerConnect)
|
|
52
|
+
.action(canSwitchNetwork)
|
|
53
|
+
.action(getChainId)
|
|
54
|
+
.build();
|
|
55
|
+
|
|
56
|
+
export { evm };
|
package/src/provider.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
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 { rabby as rabbyInstance } from './utils.js';
|
|
6
|
+
|
|
7
|
+
const buildProvider = () =>
|
|
8
|
+
new ProviderBuilder(WALLET_ID)
|
|
9
|
+
.init(function (context) {
|
|
10
|
+
const [, setState] = context.state();
|
|
11
|
+
if (rabbyInstance()) {
|
|
12
|
+
setState('installed', true);
|
|
13
|
+
console.debug('[rabby] instance detected.', context);
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
.config('metadata', metadata)
|
|
17
|
+
.add('evm', evm)
|
|
18
|
+
.build();
|
|
19
|
+
|
|
20
|
+
export { buildProvider };
|
package/src/signer.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Provider } from './utils.js';
|
|
2
|
+
import type { SignerFactory } from 'rango-types';
|
|
3
|
+
|
|
4
|
+
import { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
|
|
5
|
+
import {
|
|
6
|
+
dynamicImportWithRefinedError,
|
|
7
|
+
getNetworkInstance,
|
|
8
|
+
} from '@rango-dev/wallets-shared';
|
|
9
|
+
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
10
|
+
|
|
11
|
+
export default async function getSigners(
|
|
12
|
+
provider: Provider
|
|
13
|
+
): Promise<SignerFactory> {
|
|
14
|
+
const evmProvider = getNetworkInstance(provider, Networks.ETHEREUM);
|
|
15
|
+
const signers = new DefaultSignerFactory();
|
|
16
|
+
const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
|
|
17
|
+
async () => await import('@rango-dev/signer-evm')
|
|
18
|
+
);
|
|
19
|
+
signers.registerSigner(TxType.EVM, new DefaultEvmSigner(evmProvider));
|
|
20
|
+
return signers;
|
|
21
|
+
}
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
2
|
+
import {
|
|
3
|
+
type Chain,
|
|
4
|
+
type ChainId,
|
|
5
|
+
type ProviderAPI as EvmProviderApi,
|
|
6
|
+
type ProviderAPI,
|
|
7
|
+
utils,
|
|
8
|
+
} from '@rango-dev/wallets-core/namespaces/evm';
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
export type Provider = Record<string, any>;
|
|
12
|
+
export function rabby(): Provider | null {
|
|
13
|
+
const { ethereum } = window;
|
|
14
|
+
|
|
15
|
+
if (!ethereum?.isRabby) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const instances = new Map();
|
|
20
|
+
|
|
21
|
+
instances.set(LegacyNetworks.ETHEREUM, ethereum);
|
|
22
|
+
|
|
23
|
+
return instances;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function evmRabby(): EvmProviderApi {
|
|
27
|
+
const instances = rabby();
|
|
28
|
+
|
|
29
|
+
const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
|
|
30
|
+
|
|
31
|
+
if (!evmInstance) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
'Rabby not injected or EVM not enabled. Please check your wallet.'
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return evmInstance as EvmProviderApi;
|
|
38
|
+
}
|
|
39
|
+
export async function switchOrAddNetwork(
|
|
40
|
+
instance: ProviderAPI,
|
|
41
|
+
chain: ChainId | Chain
|
|
42
|
+
) {
|
|
43
|
+
try {
|
|
44
|
+
const chainId = typeof chain === 'string' ? chain : chain.chainId;
|
|
45
|
+
await utils.switchNetwork(instance, chainId);
|
|
46
|
+
} catch (switchError) {
|
|
47
|
+
const error = switchError as { code: number; message: string };
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Workaround for handling unrecognized chain errors in rabby where error code -32603
|
|
51
|
+
* (defined in EIP-1474 as an internal RPC error) is used instead of the metamask chain-not-found code.
|
|
52
|
+
* Combine the code check with the specific error message "Unrecognized chain ID"
|
|
53
|
+
* to reliably identify this scenario.
|
|
54
|
+
*/
|
|
55
|
+
const NOT_FOUND_CHAIN_ERROR_CODE = -32603;
|
|
56
|
+
const NOT_FOUND_ERROR_MESSAGE = 'Unrecognized chain ID';
|
|
57
|
+
if (
|
|
58
|
+
typeof chain !== 'string' &&
|
|
59
|
+
error.code === NOT_FOUND_CHAIN_ERROR_CODE &&
|
|
60
|
+
error.message.includes(NOT_FOUND_ERROR_MESSAGE)
|
|
61
|
+
) {
|
|
62
|
+
await utils.suggestNetwork(instance, chain);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
throw switchError;
|
|
66
|
+
}
|
|
67
|
+
}
|