@rango-dev/provider-safe 0.30.0 → 0.30.1-next.1
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 +4 -0
- package/dist/helpers.d.ts +0 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/provider-safe.build.json +1 -1
- package/dist/signer.d.ts +1 -1
- package/dist/{evm-signer.d.ts → signers/evm.d.ts} +3 -0
- package/package.json +2 -2
- package/src/helpers.ts +1 -27
- package/src/index.ts +1 -1
- package/src/signer.ts +4 -3
- package/src/{evm-signer.ts → signers/evm.ts} +28 -2
package/CHANGELOG.md
CHANGED
package/dist/helpers.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,6 @@ export declare const connect: Connect;
|
|
|
10
10
|
export declare const subscribe: Subscribe;
|
|
11
11
|
export declare const switchNetwork: SwitchNetwork;
|
|
12
12
|
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
13
|
-
export declare const getSigners: (provider: any) => SignerFactory
|
|
13
|
+
export declare const getSigners: (provider: any) => Promise<SignerFactory>;
|
|
14
14
|
export declare const canEagerConnect: CanEagerConnect;
|
|
15
15
|
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var u=Object.defineProperty;var s=(e,t)=>u(e,"name",{value:t,configurable:!0});var l=(e,t)=>()=>(e&&(t=e(e=0)),t);var k=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})};import{SafeAppProvider as E}from"@safe-global/safe-apps-provider";import i from"@safe-global/safe-apps-sdk";async function y(){let t=await Promise.race([a.safe.getInfo(),new Promise(n=>setTimeout(n,200))]);return t?new E(t,a):null}var v,h,a,p=l(()=>{"use strict";v={debug:!1},h=i;typeof i!="function"&&typeof i.default=="function"&&(h=i.default);a=new h(v);s(y,"getSafeInstance")});var x={};k(x,{CustomEvmSigner:()=>g,getTxHash:()=>S});import{DefaultEvmSigner as C,waitMs as A}from"@rango-dev/signer-evm";import{TransactionStatus as w}from"@safe-global/safe-apps-sdk";async function S(e){let t;for(;!t;)try{let o=await a.txs.getBySafeTxHash(e);o.txStatus===w.AWAITING_CONFIRMATIONS||o.txStatus===w.AWAITING_EXECUTION?await A(5e3):o.txHash&&(t=o.txHash)}catch{t=e}return{txHash:t}}var g,T=l(()=>{"use strict";p();s(S,"getTxHash");g=class{static{s(this,"CustomEvmSigner")}signer;constructor(t){this.signer=new C(t)}async signMessage(t){let{signature:n}=await a.txs.signMessage(t);return n}async signAndSendTx(t,n,o){let{hash:r,response:c}=await this.signer.signAndSendTx(t,n,o);return{hash:r,response:{...c,hashRequiringUpdate:!0}}}async wait(t,n,o){let{txHash:r}=await S(t);return{hash:r,response:o,chainId:n}}}});p();import{canEagerlyConnectToEvm as P,canSwitchNetworkToEvm as M,subscribeToEvm as F,switchNetworkForEvm as R,WalletTypes as W}from"@rango-dev/wallets-shared";import{evmBlockchains as B,isEvmBlockchain as D}from"rango-types";import{DefaultSignerFactory as b,TransactionType as N}from"rango-types";async function m(e){let t=new b,{CustomEvmSigner:n}=await Promise.resolve().then(()=>(T(),x));return t.registerSigner(N.EVM,new n(e)),t}s(m,"getSigners");var G=W.SAFE,tt={type:G,isAsyncInstance:!0},et=s(async()=>await y(),"getInstance"),nt=s(async({instance:e})=>{let t=await e.request({method:"eth_accounts"}),{chainId:n}=e;return{accounts:t,chainId:n}},"connect"),st=s(({instance:e,state:t,updateChainId:n,updateAccounts:o,meta:r,connect:c,disconnect:d})=>{let I=r.filter(D),f=F({instance:e,state:t,updateChainId:n,updateAccounts:o,meta:I,connect:c,disconnect:d});return()=>{f&&f()}},"subscribe"),ot=R,rt=M,at=m,it=P,ct=s(e=>{let t=B(e);return{name:"Safe",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safe/icon.svg",installLink:{DEFAULT:"https://app.safe.global/"},color:"#ffffff",supportedChains:t,isContractWallet:!0}},"getWalletInfo");export{it as canEagerConnect,rt as canSwitchNetworkTo,tt as config,nt as connect,et as getInstance,at as getSigners,ct as getWalletInfo,st as subscribe,ot 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
|
-
"sources": ["../src/
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../src/helpers.ts", "../src/signers/evm.ts", "../src/index.ts", "../src/signer.ts"],
|
|
4
|
+
"sourcesContent": ["import { SafeAppProvider } from '@safe-global/safe-apps-provider';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\n\nconst options = {\n debug: false,\n};\n\n/*\n * similar to:\n * https://github.com/wagmi-dev/references/pull/114\n */\nlet SDK = SafeAppsSDK;\nif (\n typeof SafeAppsSDK !== 'function' &&\n // @ts-expect-error This import error is not visible to TypeScript\n typeof SafeAppsSDK.default === 'function'\n) {\n SDK = (SafeAppsSDK as unknown as { default: typeof SafeAppsSDK }).default;\n}\nexport const sdk = new SDK(options);\n\nexport async function getSafeInstance(): Promise<any> {\n const timeout = 200;\n const accountInfo = await Promise.race([\n sdk.safe.getInfo(),\n new Promise<undefined>((resolve) => setTimeout(resolve, timeout)),\n ]);\n return accountInfo ? new SafeAppProvider(accountInfo, sdk as any) : null;\n}\n", "import type { OffChainSignMessageResponse } from '@safe-global/safe-apps-sdk';\nimport type { TransactionResponse } from 'ethers';\nimport type { GenericSigner } from 'rango-types';\nimport type { EvmTransaction } from 'rango-types/mainApi';\n\nimport { DefaultEvmSigner, waitMs } from '@rango-dev/signer-evm';\nimport { TransactionStatus } from '@safe-global/safe-apps-sdk';\n\nimport { sdk } from '../helpers.js';\n\nexport async function getTxHash(safeHash: string): Promise<{ txHash: string }> {\n let txHash;\n const timeout = 5_000;\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(timeout);\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 }\n } catch {\n txHash = safeHash;\n }\n }\n return { txHash };\n}\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: Partial<TransactionResponse> & { hashRequiringUpdate: boolean };\n }> {\n const { hash, response } = await this.signer.signAndSendTx(\n tx,\n address,\n chainId\n );\n return {\n hash,\n response: { ...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 chainId: string;\n }> {\n const { txHash: hash } = await getTxHash(safeHash);\n return {\n hash,\n response,\n chainId,\n };\n }\n}\n", "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.js';\nimport signer from './signer.js';\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 const cleanup = subscribeToEvm({\n instance,\n state,\n updateChainId,\n updateAccounts,\n meta: evmBlockchainMeta,\n connect,\n disconnect,\n });\n return () => {\n if (cleanup) {\n cleanup();\n }\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => Promise<SignerFactory> = signer;\n\nexport const 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/assets/main/wallets/safe/icon.svg',\n installLink: {\n DEFAULT: 'https://app.safe.global/',\n },\n color: '#ffffff',\n supportedChains: evms,\n isContractWallet: true,\n };\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: any\n): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n const { CustomEvmSigner } = await import('./signers/evm.ts');\n signers.registerSigner(TxType.EVM, new CustomEvmSigner(provider));\n\n return signers;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SafeAppProvider", "SafeAppsSDK", "getSafeInstance", "accountInfo", "sdk", "resolve", "options", "SDK", "init_helpers", "__esmMin", "__name", "evm_exports", "__export", "CustomEvmSigner", "getTxHash", "DefaultEvmSigner", "waitMs", "TransactionStatus", "safeHash", "txHash", "queued", "sdk", "init_evm", "__esmMin", "init_helpers", "__name", "provider", "msg", "signature", "tx", "address", "chainId", "hash", "response", "init_helpers", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "DefaultSignerFactory", "TxType", "getSigners", "provider", "signers", "DefaultSignerFactory", "CustomEvmSigner", "TxType", "__name", "WALLET", "WalletTypes", "config", "getInstance", "__name", "getSafeInstance", "connect", "instance", "accounts", "chainId", "subscribe", "state", "updateChainId", "updateAccounts", "meta", "disconnect", "evmBlockchainMeta", "isEvmBlockchain", "cleanup", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/helpers.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/helpers.ts":{"bytes":836,"imports":[{"path":"@safe-global/safe-apps-provider","kind":"import-statement","external":true},{"path":"@safe-global/safe-apps-sdk","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signers/evm.ts":{"bytes":2352,"imports":[{"path":"@rango-dev/signer-evm","kind":"import-statement","external":true},{"path":"@safe-global/safe-apps-sdk","kind":"import-statement","external":true},{"path":"src/helpers.ts","kind":"import-statement","original":"../helpers.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":417,"imports":[{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/evm.ts","kind":"dynamic-import","original":"./signers/evm.ts"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":2075,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":9786},"dist/index.js":{"imports":[{"path":"@safe-global/safe-apps-provider","kind":"import-statement","external":true},{"path":"@safe-global/safe-apps-sdk","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"import-statement","external":true},{"path":"@safe-global/safe-apps-sdk","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-types","kind":"import-statement","external":true}],"exports":["canEagerConnect","canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe","switchNetwork"],"entryPoint":"src/index.ts","inputs":{"src/helpers.ts":{"bytesInOutput":382},"src/signers/evm.ts":{"bytesInOutput":831},"src/index.ts":{"bytesInOutput":941},"src/signer.ts":{"bytesInOutput":226}},"bytes":2764}}}
|
package/dist/signer.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { SignerFactory } from 'rango-types';
|
|
2
|
-
export default function getSigners(provider: any): SignerFactory
|
|
2
|
+
export default function getSigners(provider: any): Promise<SignerFactory>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { TransactionResponse } from 'ethers';
|
|
2
2
|
import type { GenericSigner } from 'rango-types';
|
|
3
3
|
import type { EvmTransaction } from 'rango-types/mainApi';
|
|
4
|
+
export declare function getTxHash(safeHash: string): Promise<{
|
|
5
|
+
txHash: string;
|
|
6
|
+
}>;
|
|
4
7
|
export declare class CustomEvmSigner implements GenericSigner<EvmTransaction> {
|
|
5
8
|
private signer;
|
|
6
9
|
constructor(provider: any);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-safe",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.1-next.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@rango-dev/signer-evm": "^0.30.0",
|
|
25
|
-
"@rango-dev/wallets-shared": "^0.37.
|
|
25
|
+
"@rango-dev/wallets-shared": "^0.37.1-next.1",
|
|
26
26
|
"@safe-global/safe-apps-provider": "^0.17.0",
|
|
27
27
|
"@safe-global/safe-apps-sdk": "^9.1.0",
|
|
28
28
|
"ethers": "^6.13.2",
|
package/src/helpers.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { waitMs } from '@rango-dev/signer-evm';
|
|
2
1
|
import { SafeAppProvider } from '@safe-global/safe-apps-provider';
|
|
3
|
-
import SafeAppsSDK
|
|
2
|
+
import SafeAppsSDK from '@safe-global/safe-apps-sdk';
|
|
4
3
|
|
|
5
4
|
const options = {
|
|
6
5
|
debug: false,
|
|
@@ -28,28 +27,3 @@ export async function getSafeInstance(): Promise<any> {
|
|
|
28
27
|
]);
|
|
29
28
|
return accountInfo ? new SafeAppProvider(accountInfo, sdk as any) : null;
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
export async function getTxHash(safeHash: string): Promise<{ txHash: string }> {
|
|
33
|
-
let txHash;
|
|
34
|
-
const timeout = 5_000;
|
|
35
|
-
|
|
36
|
-
while (!txHash) {
|
|
37
|
-
try {
|
|
38
|
-
/** The SDK will be pinged until a txHash is available and the txStatus is in an end-state */
|
|
39
|
-
const queued = await sdk.txs.getBySafeTxHash(safeHash);
|
|
40
|
-
if (
|
|
41
|
-
queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS ||
|
|
42
|
-
queued.txStatus === TransactionStatus.AWAITING_EXECUTION
|
|
43
|
-
) {
|
|
44
|
-
/** Mimic a status watcher by checking once every 5 seconds */
|
|
45
|
-
await waitMs(timeout);
|
|
46
|
-
} else if (queued.txHash) {
|
|
47
|
-
/** The txStatus is in an end-state (e.g. success) so we probably have a valid, on chain txHash*/
|
|
48
|
-
txHash = queued.txHash;
|
|
49
|
-
}
|
|
50
|
-
} catch {
|
|
51
|
-
txHash = safeHash;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return { txHash };
|
|
55
|
-
}
|
package/src/index.ts
CHANGED
|
@@ -73,7 +73,7 @@ export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
|
73
73
|
|
|
74
74
|
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
75
75
|
|
|
76
|
-
export const getSigners: (provider: any) => SignerFactory = signer;
|
|
76
|
+
export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
|
|
77
77
|
|
|
78
78
|
export const canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;
|
|
79
79
|
|
package/src/signer.ts
CHANGED
|
@@ -2,10 +2,11 @@ import type { SignerFactory } from 'rango-types';
|
|
|
2
2
|
|
|
3
3
|
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export default async function getSigners(
|
|
6
|
+
provider: any
|
|
7
|
+
): Promise<SignerFactory> {
|
|
8
8
|
const signers = new DefaultSignerFactory();
|
|
9
|
+
const { CustomEvmSigner } = await import('./signers/evm.ts');
|
|
9
10
|
signers.registerSigner(TxType.EVM, new CustomEvmSigner(provider));
|
|
10
11
|
|
|
11
12
|
return signers;
|
|
@@ -3,9 +3,35 @@ import type { TransactionResponse } from 'ethers';
|
|
|
3
3
|
import type { GenericSigner } from 'rango-types';
|
|
4
4
|
import type { EvmTransaction } from 'rango-types/mainApi';
|
|
5
5
|
|
|
6
|
-
import { DefaultEvmSigner } from '@rango-dev/signer-evm';
|
|
6
|
+
import { DefaultEvmSigner, waitMs } from '@rango-dev/signer-evm';
|
|
7
|
+
import { TransactionStatus } from '@safe-global/safe-apps-sdk';
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
+
import { sdk } from '../helpers.js';
|
|
10
|
+
|
|
11
|
+
export async function getTxHash(safeHash: string): Promise<{ txHash: string }> {
|
|
12
|
+
let txHash;
|
|
13
|
+
const timeout = 5_000;
|
|
14
|
+
|
|
15
|
+
while (!txHash) {
|
|
16
|
+
try {
|
|
17
|
+
/** The SDK will be pinged until a txHash is available and the txStatus is in an end-state */
|
|
18
|
+
const queued = await sdk.txs.getBySafeTxHash(safeHash);
|
|
19
|
+
if (
|
|
20
|
+
queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS ||
|
|
21
|
+
queued.txStatus === TransactionStatus.AWAITING_EXECUTION
|
|
22
|
+
) {
|
|
23
|
+
/** Mimic a status watcher by checking once every 5 seconds */
|
|
24
|
+
await waitMs(timeout);
|
|
25
|
+
} else if (queued.txHash) {
|
|
26
|
+
/** The txStatus is in an end-state (e.g. success) so we probably have a valid, on chain txHash*/
|
|
27
|
+
txHash = queued.txHash;
|
|
28
|
+
}
|
|
29
|
+
} catch {
|
|
30
|
+
txHash = safeHash;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { txHash };
|
|
34
|
+
}
|
|
9
35
|
|
|
10
36
|
export class CustomEvmSigner implements GenericSigner<EvmTransaction> {
|
|
11
37
|
private signer;
|