@rango-dev/signer-evm 0.45.1-next.0 → 0.45.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/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { DefaultEvmSigner } from './signer.js';
2
2
  export { waitMs, cleanEvmError, toHexQuantity } from './helper.js';
3
3
  export { DEFAULT_ETHEREUM_RPC_URL } from './constants.js';
4
+ export type { TypedData } from './types.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var P=Object.defineProperty;var a=(e,r)=>P(e,"name",{value:r,configurable:!0});import{BrowserProvider as C,isError as y}from"ethers";import{RPCErrorCode as O,SignerError as g,SignerErrorCode as E}from"rango-types";import{isError as l,toQuantity as N}from"ethers";import{RPCErrorCode as p,SignerError as d,SignerErrorCode as u}from"rango-types";var h=a(e=>{if(!e)return new d(u.SEND_TX_ERROR);if(d.isSignerError(e))return e;if(e.code){if(l(e,"UNKNOWN_ERROR")){let t=e.error?.message||e.message;return new d(u.SEND_TX_ERROR,void 0,t,p.UNKNOWN_ERROR,e)}if(l(e,"ACTION_REJECTED")){let t=e.shortMessage.replace("action",`'${e.action}'`);return new d(u.SEND_TX_ERROR,void 0,t,p.REJECTION,e)}let r=e.shortMessage||e.message;return new d(u.SEND_TX_ERROR,void 0,r,p.UNKNOWN_ERROR,e)}return new d(u.SEND_TX_ERROR,void 0,e,p.UNKNOWN_ERROR,e)},"cleanEvmError");async function T(e,r){if(!e||!r)return;let t=parseInt(e);try{let o=`https://api.tenderly.co/api/v1/public-contract/${t}/tx/${r}`,n=await fetch(o,{method:"GET"});return n.ok?(await n.json())?.error_message:void 0}catch{return}}a(T,"getTenderlyError");var S=a(e=>N(e),"toHexQuantity"),m=a(async e=>new Promise(r=>setTimeout(r,e)),"waitMs");var I=a(async(e,r,t,o)=>{let i=!1;return await Promise.race([(async()=>{await r.wait(o),i=!0})(),(async()=>{for(;!i;){if(await m(3e3),i)return null;try{if(!await e.getTransaction(t))return null}catch(s){return console.log({error:s}),null}}return null})()])},"waitWithMempoolCheck"),R=class e{static{a(this,"DefaultEvmSigner")}provider;constructor(r){this.provider=new C(r)}static buildTx(r,t=!1){let n={};return n={data:r.data||"0x"},r.from&&(n={...n,from:r.from}),r.to&&(n={...n,to:r.to}),r.value&&(n={...n,value:r.value}),r.nonce&&(n={...n,nonce:parseInt(r.nonce)}),r.gasLimit&&(n={...n,gasLimit:r.gasLimit}),!t&&r.maxFeePerGas&&r.maxPriorityFeePerGas?n={...n,maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas}:r.gasPrice&&(n={...n,gasPrice:"0x"+parseInt(r.gasPrice).toString(16)}),n}async signTypedData(r){try{return await(await this.provider.getSigner()).signTypedData(r.domain,r.types,r.value)}catch(t){throw new g(E.SIGN_TX_ERROR,void 0,t)}}async signMessage(r){try{return await(await this.provider.getSigner()).signMessage(r)}catch(t){throw new g(E.SIGN_TX_ERROR,void 0,t)}}async signAndSendTx(r,t,o){try{let n=await this.provider.getSigner(r.from??void 0),i=e.buildTx(r),s=(await this.provider.getNetwork()).chainId,f=await n.getAddress();if(o&&s&&s.toString()!==Number(o).toString())throw new g(E.UNEXPECTED_BEHAVIOUR,void 0,`Signer chainId: '${s}' doesn't match with required chainId: '${o}' for tx.`);if(f&&t&&f.toLowerCase()!==t.toLowerCase())throw new g(E.UNEXPECTED_BEHAVIOUR,void 0,`Signer address: '${f.toLowerCase()}' doesn't match with required address: '${t.toLowerCase()}' for tx.`);try{let c=await n.sendTransaction(i);return{hash:c.hash,response:c}}catch(c){if(c?.message&&typeof c.message=="string"&&c.message.indexOf("EIP-1559")!==-1){console.log("retrying EIP-1559 error without v2 fields ...");let _=e.buildTx(r,!0),w=await n.sendTransaction(_);return{hash:w.hash,response:w}}throw c}}catch(n){throw h(n)}}async wait(r,t,o,n){try{if(o)return await o?.wait(n),{hash:r};if(!this.provider)return{hash:r};if(!t)return{hash:r};let i=(await this.provider.getNetwork()).chainId;if(!i||Number(t).toString()!==i.toString())return{hash:r};let s=await this.provider.getTransaction(r);if(!s)throw Error(`Transaction hash '${r}' not found in blockchain.`);return await I(this.provider,s,r,n),{hash:r}}catch(i){if(y(i,"TRANSACTION_REPLACED")){if(i.reason==="cancelled")throw new g(E.SEND_TX_ERROR,void 0,"Transaction replaced and canceled by user",void 0,i);return{hash:i.replacement.hash,response:i.replacement}}else if(y(i,"CALL_EXCEPTION")){let s=await T(t,r);if(s)throw new g(E.TX_FAILED_IN_BLOCKCHAIN,"Trannsaction failed in blockchain",s,O.CALL_EXCEPTION,i);return{hash:r}}return{hash:r}}}};var A="https://rpc.ankr.com/eth/8d43f5e842676d766141cb1943b9b4e12821f463665e180c209bd3dab9639df2";export{A as DEFAULT_ETHEREUM_RPC_URL,R as DefaultEvmSigner,h as cleanEvmError,S as toHexQuantity,m as waitMs};
1
+ var P=Object.defineProperty;var a=(e,r)=>P(e,"name",{value:r,configurable:!0});import{BrowserProvider as C,isError as y}from"ethers";import{RPCErrorCode as O,SignerError as g,SignerErrorCode as E}from"rango-types";import{isError as l,toQuantity as N}from"ethers";import{RPCErrorCode as u,SignerError as d,SignerErrorCode as p}from"rango-types";var h=a(e=>{if(!e)return new d(p.SEND_TX_ERROR);if(d.isSignerError(e))return e;if(e.code){if(l(e,"UNKNOWN_ERROR")){let t=e.error?.message||e.message;return new d(p.SEND_TX_ERROR,void 0,t,u.UNKNOWN_ERROR,e)}if(l(e,"ACTION_REJECTED")){let t=e.shortMessage.replace("action",`'${e.action}'`);return new d(p.SEND_TX_ERROR,void 0,t,u.REJECTION,e)}let r=e.shortMessage||e.message;return new d(p.SEND_TX_ERROR,void 0,r,u.UNKNOWN_ERROR,e)}return new d(p.SEND_TX_ERROR,void 0,e,u.UNKNOWN_ERROR,e)},"cleanEvmError");async function T(e,r){if(!e||!r)return;let t=parseInt(e);try{let o=`https://api.tenderly.co/api/v1/public-contract/${t}/tx/${r}`,n=await fetch(o,{method:"GET"});return n.ok?(await n.json())?.error_message:void 0}catch{return}}a(T,"getTenderlyError");var S=a(e=>N(e),"toHexQuantity"),m=a(async e=>new Promise(r=>setTimeout(r,e)),"waitMs");var I=a(async(e,r,t,o)=>{let i=!1;return await Promise.race([(async()=>{await r.wait(o),i=!0})(),(async()=>{for(;!i;){if(await m(3e3),i)return null;try{if(!await e.getTransaction(t))return null}catch(s){return console.log({error:s}),null}}return null})()])},"waitWithMempoolCheck"),R=class e{static{a(this,"DefaultEvmSigner")}provider;constructor(r){this.provider=new C(r)}static buildTx(r,t=!1){let n={};return n={data:r.data||"0x"},r.from&&(n={...n,from:r.from}),r.to&&(n={...n,to:r.to}),r.value&&(n={...n,value:r.value}),r.nonce&&(n={...n,nonce:parseInt(r.nonce)}),r.gasLimit&&(n={...n,gasLimit:r.gasLimit}),!t&&r.maxFeePerGas&&r.maxPriorityFeePerGas?n={...n,maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas}:r.gasPrice&&(n={...n,gasPrice:"0x"+parseInt(r.gasPrice).toString(16)}),n}async signTypedData(r){try{return await(await this.provider.getSigner()).signTypedData(r.domain,r.types,r.value)}catch(t){throw new g(E.SIGN_TX_ERROR,void 0,t)}}async signMessage(r){try{return await(await this.provider.getSigner()).signMessage(r)}catch(t){throw new g(E.SIGN_TX_ERROR,void 0,t)}}async signAndSendTx(r,t,o){try{let n=await this.provider.getSigner(r.from??void 0),i=e.buildTx(r),s=(await this.provider.getNetwork()).chainId,f=await n.getAddress();if(o&&s&&s.toString()!==Number(o).toString())throw new g(E.UNEXPECTED_BEHAVIOUR,void 0,`Signer chainId: '${s}' doesn't match with required chainId: '${o}' for tx.`);if(f&&t&&f.toLowerCase()!==t.toLowerCase())throw new g(E.UNEXPECTED_BEHAVIOUR,void 0,`Signer address: '${f.toLowerCase()}' doesn't match with required address: '${t.toLowerCase()}' for tx.`);try{let c=await n.sendTransaction(i);return{hash:c.hash,response:c}}catch(c){if(c?.message&&typeof c.message=="string"&&c.message.indexOf("EIP-1559")!==-1){console.log("retrying EIP-1559 error without v2 fields ...");let _=e.buildTx(r,!0),w=await n.sendTransaction(_);return{hash:w.hash,response:w}}throw c}}catch(n){throw h(n)}}async wait(r,t,o,n){try{if(o)return await o?.wait(n),{hash:r};if(!this.provider)return{hash:r};if(!t)return{hash:r};let i=(await this.provider.getNetwork()).chainId;if(!i||Number(t).toString()!==i.toString())return{hash:r};let s=await this.provider.getTransaction(r);if(!s)throw Error(`Transaction hash '${r}' not found in blockchain.`);return await I(this.provider,s,r,n),{hash:r}}catch(i){if(y(i,"TRANSACTION_REPLACED")){if(i.reason==="cancelled")throw new g(E.SEND_TX_ERROR,void 0,"Transaction replaced and canceled by user",void 0,i);return{hash:i.replacement.hash,response:i.replacement}}else if(y(i,"CALL_EXCEPTION")){let s=await T(t,r);if(s)throw new g(E.TX_FAILED_IN_BLOCKCHAIN,"Trannsaction failed in blockchain",s,O.CALL_EXCEPTION,i);return{hash:r}}return{hash:r}}}};var A="https://rpc.ankr.com/eth/8d43f5e842676d766141cb1943b9b4e12821f463665e180c209bd3dab9639df2";export{A as DEFAULT_ETHEREUM_RPC_URL,R as DefaultEvmSigner,h as cleanEvmError,S as toHexQuantity,m as waitMs};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/signer-evm",
3
- "version": "0.45.1-next.0",
3
+ "version": "0.45.1-next.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { DefaultEvmSigner } from './signer.js';
2
2
  export { waitMs, cleanEvmError, toHexQuantity } from './helper.js';
3
3
  export { DEFAULT_ETHEREUM_RPC_URL } from './constants.js';
4
+ export type { TypedData } from './types.js';