@rango-dev/provider-safe 0.8.1-next.1 → 0.8.1-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/package.json +2 -2
- package/src/index.ts +14 -14
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { CanEagerConnect, CanSwitchNetwork, Connect, GetInstance, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
+
import { WalletTypes } from '@rango-dev/wallets-shared';
|
|
3
4
|
export declare const config: {
|
|
4
5
|
type: WalletTypes;
|
|
5
6
|
isAsyncInstance: boolean;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAKL,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAQnC,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAEzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAQrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAoBvB,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,aAAsB,CAAC;AAEnE,eAAO,MAAM,eAAe,EAAE,eAAwC,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAajE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var u=Object.defineProperty;var s=(e,t)=>u(e,"name",{value:t,configurable:!0});import{
|
|
1
|
+
var u=Object.defineProperty;var s=(e,t)=>u(e,"name",{value:t,configurable:!0});import{canEagerlyConnectToEvm as E,canSwitchNetworkToEvm as k,subscribeToEvm as v,switchNetworkForEvm as b,WalletTypes as C}from"@rango-dev/wallets-shared";import{evmBlockchains as A,isEvmBlockchain as N}from"rango-types";import{waitMs as w}from"@rango-dev/signer-evm";import{SafeAppProvider as S}from"@safe-global/safe-apps-provider";import d,{TransactionStatus as p}from"@safe-global/safe-apps-sdk";var x={allowedDomains:[/gnosis-safe.io$/,/app.safe.global$/],debug:!1},o=new d(x);async function g(){let e=await Promise.race([o.safe.getInfo(),new Promise(t=>setTimeout(t,200))]);return e?new S(e,o):null}s(g,"getSafeInstance");async function h(e){let t,n=!1;for(;!t;)try{let a=await o.txs.getBySafeTxHash(e);a.txStatus===p.AWAITING_CONFIRMATIONS||a.txStatus===p.AWAITING_EXECUTION?await w(5e3):a.txHash&&(t=a.txHash,n=!0)}catch{t=e,n=!0}return{txHash:t,hashWasUpdated:n}}s(h,"getTxHash");import{DefaultSignerFactory as y,TransactionType as I}from"rango-types";import{DefaultEvmSigner as T}from"@rango-dev/signer-evm";var i=class{constructor(t){this.signer=new T(t)}async signMessage(t){let{signature:n}=await o.txs.signMessage(t);return n}async signAndSendTx(t,n,a){let r=await this.signer.signAndSendTx(t,n,a);return{hash:r.hash,response:{...r.response,hashRequiringUpdate:!0}}}async wait(t,n,a){let r=await h(t);return{hash:r.txHash,response:{...a,hashWasUpdated:r.hashWasUpdated,isMultiSig:!0},chainId:n}}};s(i,"CustomEvmSigner");function c(e){let t=new y;return t.registerSigner(I.EVM,new i(e)),t}s(c,"getSigners");var M=C.SAFE,J={type:M,isAsyncInstance:!0},Q=s(async()=>await g(),"getInstance"),Y=s(async({instance:e})=>{let t=await e.request({method:"eth_accounts"}),{chainId:n}=e;return{accounts:t,chainId:n}},"connect"),Z=s(({instance:e,state:t,updateChainId:n,updateAccounts:a,meta:r,connect:m,disconnect:f})=>{let l=r.filter(N);v({instance:e,state:t,updateChainId:n,updateAccounts:a,meta:l,connect:m,disconnect:f})},"subscribe"),tt=b,et=k,nt=c,st=E,at=s(e=>{let t=A(e);return{name:"Safe",img:"https://raw.githubusercontent.com/rango-exchange/rango-assets/main/wallets/safe/icon.svg",installLink:{DEFAULT:"https://app.safe.global/"},color:"#ffffff",supportedChains:t}},"getWalletInfo");export{st as canEagerConnect,et as canSwitchNetworkTo,J as config,Y as connect,Q as getInstance,nt as getSigners,at as getWalletInfo,Z as subscribe,tt as switchNetwork};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts", "../src/evm-signer.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n
|
|
5
|
-
"mappings": "+
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n GetInstance,\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 subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, isEvmBlockchain } from 'rango-types';\n\nimport { getSafeInstance } from './helpers';\nimport signer from './signer';\n\nconst WALLET = WalletTypes.SAFE;\n\nexport const config = {\n type: WALLET,\n isAsyncInstance: true,\n};\n\nexport const getInstance: GetInstance = async () => {\n return await getSafeInstance();\n};\n\nexport const connect: Connect = async ({ instance }) => {\n const accounts = await instance.request({\n method: 'eth_accounts',\n });\n\n const { chainId } = instance;\n\n return { accounts, chainId };\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n state,\n updateChainId,\n updateAccounts,\n meta,\n connect,\n disconnect,\n}) => {\n const evmBlockchainMeta = meta.filter(isEvmBlockchain);\n\n subscribeToEvm({\n instance,\n state,\n updateChainId,\n updateAccounts,\n meta: evmBlockchainMeta,\n connect,\n disconnect,\n });\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => SignerFactory = 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: 'Safe',\n img: 'https://raw.githubusercontent.com/rango-exchange/rango-assets/main/wallets/safe/icon.svg',\n installLink: {\n DEFAULT: 'https://app.safe.global/',\n },\n color: '#ffffff',\n supportedChains: evms,\n };\n};\n", "import { waitMs } from '@rango-dev/signer-evm';\nimport { SafeAppProvider } from '@safe-global/safe-apps-provider';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\n\nconst options = {\n allowedDomains: [/gnosis-safe.io$/, /app.safe.global$/],\n debug: false,\n};\nexport const sdk = new SafeAppsSDK(options);\nexport async function getSafeInstance(): Promise<any> {\n const accountInfo = await Promise.race([\n sdk.safe.getInfo(),\n new Promise<undefined>((resolve) => setTimeout(resolve, 200)),\n ]);\n return accountInfo ? new SafeAppProvider(accountInfo, sdk as any) : null;\n}\n\nexport async function getTxHash(\n safeHash: string\n): Promise<{ txHash: string; hashWasUpdated: boolean }> {\n let txHash;\n let hashWasUpdated = false;\n\n while (!txHash) {\n try {\n /** The SDK will be pinged until a txHash is available and the txStatus is in an end-state */\n const queued = await sdk.txs.getBySafeTxHash(safeHash);\n if (\n queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS ||\n queued.txStatus === TransactionStatus.AWAITING_EXECUTION\n ) {\n /** Mimic a status watcher by checking once every 5 seconds */\n await waitMs(5_000);\n } else if (queued.txHash) {\n /** The txStatus is in an end-state (e.g. success) so we probably have a valid, on chain txHash*/\n txHash = queued.txHash;\n hashWasUpdated = true;\n }\n } catch {\n txHash = safeHash;\n hashWasUpdated = true;\n }\n }\n return { txHash, hashWasUpdated };\n}\n", "import {\n DefaultSignerFactory,\n SignerFactory,\n TransactionType as TxType,\n} from 'rango-types';\nimport { CustomEvmSigner } from './evm-signer';\n\nexport default function getSigners(provider: any): SignerFactory {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new CustomEvmSigner(provider));\n\n return signers;\n}\n", "import { GenericSigner } from 'rango-types';\nimport { EvmTransaction } from 'rango-types/lib/api/main';\nimport { TransactionResponse } from '@ethersproject/abstract-provider';\nimport { DefaultEvmSigner } from '@rango-dev/signer-evm';\nimport { sdk, getTxHash } from './helpers';\nimport { OffChainSignMessageResponse } from '@safe-global/safe-apps-sdk';\n\nexport class CustomEvmSigner implements GenericSigner<EvmTransaction> {\n private signer;\n\n constructor(provider: any) {\n this.signer = new DefaultEvmSigner(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const { signature } = (await sdk.txs.signMessage(\n msg\n )) as OffChainSignMessageResponse & { signature: string };\n\n return signature;\n }\n\n async signAndSendTx(\n tx: EvmTransaction,\n address: string,\n chainId: string | null\n ): Promise<{\n hash: string;\n response: TransactionResponse & { hashRequiringUpdate: boolean };\n }> {\n const result = await this.signer.signAndSendTx(tx, address, chainId);\n return {\n hash: result.hash,\n response: { ...result.response, hashRequiringUpdate: true },\n };\n }\n\n async wait(\n safeHash: string,\n chainId: string,\n response: TransactionResponse\n ): Promise<{\n hash: string;\n response: TransactionResponse & {\n hashWasUpdated: boolean;\n isMultiSig: true;\n };\n chainId: string;\n }> {\n const result = await getTxHash(safeHash);\n return {\n hash: result.txHash,\n response: {\n ...response,\n hashWasUpdated: result.hashWasUpdated,\n isMultiSig: true,\n },\n chainId,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "waitMs", "SafeAppProvider", "SafeAppsSDK", "TransactionStatus", "options", "sdk", "SafeAppsSDK", "getSafeInstance", "accountInfo", "resolve", "SafeAppProvider", "__name", "getTxHash", "safeHash", "txHash", "hashWasUpdated", "queued", "TransactionStatus", "waitMs", "DefaultSignerFactory", "TxType", "DefaultEvmSigner", "CustomEvmSigner", "provider", "DefaultEvmSigner", "msg", "signature", "sdk", "tx", "address", "chainId", "result", "safeHash", "response", "getTxHash", "__name", "getSigners", "provider", "signers", "DefaultSignerFactory", "TxType", "CustomEvmSigner", "__name", "WALLET", "WalletTypes", "config", "getInstance", "__name", "getSafeInstance", "connect", "instance", "accounts", "chainId", "subscribe", "state", "updateChainId", "updateAccounts", "meta", "disconnect", "evmBlockchainMeta", "isEvmBlockchain", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-safe",
|
|
3
|
-
"version": "0.8.1-next.
|
|
3
|
+
"version": "0.8.1-next.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@ethersproject/abstract-provider": "^5.7.0",
|
|
24
|
-
"@rango-dev/signer-evm": "^0.15.0",
|
|
24
|
+
"@rango-dev/signer-evm": "^0.15.1-next.0",
|
|
25
25
|
"@rango-dev/wallets-shared": "^0.15.1-next.1",
|
|
26
26
|
"@safe-global/safe-apps-provider": "^0.17.0",
|
|
27
27
|
"@safe-global/safe-apps-sdk": "^7.11.0",
|
package/src/index.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type {
|
|
2
|
+
CanEagerConnect,
|
|
3
3
|
CanSwitchNetwork,
|
|
4
4
|
Connect,
|
|
5
|
+
GetInstance,
|
|
5
6
|
Subscribe,
|
|
7
|
+
SwitchNetwork,
|
|
6
8
|
WalletInfo,
|
|
9
|
+
} from '@rango-dev/wallets-shared';
|
|
10
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
canEagerlyConnectToEvm,
|
|
14
|
+
canSwitchNetworkToEvm,
|
|
7
15
|
subscribeToEvm,
|
|
8
16
|
switchNetworkForEvm,
|
|
9
|
-
|
|
10
|
-
canSwitchNetworkToEvm,
|
|
11
|
-
GetInstance,
|
|
12
|
-
CanEagerConnect,
|
|
13
|
-
canEagerlyConnectToEvm,
|
|
17
|
+
WalletTypes,
|
|
14
18
|
} from '@rango-dev/wallets-shared';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
BlockchainMeta,
|
|
18
|
-
evmBlockchains,
|
|
19
|
-
isEvmBlockchain,
|
|
20
|
-
} from 'rango-types';
|
|
19
|
+
import { evmBlockchains, isEvmBlockchain } from 'rango-types';
|
|
20
|
+
|
|
21
21
|
import { getSafeInstance } from './helpers';
|
|
22
22
|
import signer from './signer';
|
|
23
23
|
|
|
@@ -78,7 +78,7 @@ export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
|
78
78
|
const evms = evmBlockchains(allBlockChains);
|
|
79
79
|
return {
|
|
80
80
|
name: 'Safe',
|
|
81
|
-
img: 'https://raw.githubusercontent.com/rango-exchange/rango-
|
|
81
|
+
img: 'https://raw.githubusercontent.com/rango-exchange/rango-assets/main/wallets/safe/icon.svg',
|
|
82
82
|
installLink: {
|
|
83
83
|
DEFAULT: 'https://app.safe.global/',
|
|
84
84
|
},
|