@privy-io/js-sdk-core
Version:
Vanilla JS client for the Privy Auth API
2 lines (1 loc) • 3.17 kB
JavaScript
;var r=require("@ethersproject/abstract-signer"),e=require("@ethersproject/providers"),t=require("../errors.js"),i=require("../gas/arbitrum.js"),s=require("../gas/bsc.js"),a=require("../gas/op-stack.js"),p=require("../gas/polygon.js"),o=require("./gas.js");require("../types.js"),require("@ethersproject/bignumber"),require("@privy-io/chains"),require("./ethers.js"),require("@ethersproject/contracts"),require("@ethersproject/transactions"),require("@ethersproject/units"),require("fetch-retry");function n(r){return/^-?0x[a-f0-9]+$/i.test(r)}function c(r){for(let e of["gasLimit","gasPrice","value","maxPriorityFeePerGas","maxFeePerGas"]){let t=r[e];if(void 0!==t&&!function(r){let e="number"==typeof r,t="bigint"==typeof r,i="string"==typeof r&&n(r);return e||t||i}(t))throw Error(`Transaction request property '${e}' must be a valid number, bigint, or hex string representing a quantity`)}if("number"!=typeof r.chainId)throw Error("Transaction request property 'chainId' must be a number")}exports.getJsonRpcEndpointFromChain=(r,e,i)=>{let s,a=r.id,p=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])s=r.rpcUrls.privyWalletOverride.http[0];else if(e.rpcUrls&&e.rpcUrls[p])s=e.rpcUrls[p];else if(r.rpcUrls.privy?.http[0]){let e=new URL(r.rpcUrls.privy.http[0]);e.searchParams.append("privyAppId",i),s=e.toString()}else s=r.rpcUrls.public?.http[0]?r.rpcUrls.public.http[0]:r.rpcUrls.default?.http[0];if(!s)throw new t.PrivyConnectorError(`No RPC url found for ${a}`);return s},exports.getJsonRpcProvider=(r,i,s,a)=>{let p=Number(r),o=i.find((r=>r.id===p));if(!o)throw new t.PrivyConnectorError(`Unsupported chainId ${r}`,4901);return new e.StaticJsonRpcProvider(o.rpcUrls.privyWalletOverride&&o.rpcUrls.privyWalletOverride.http[0]?o.rpcUrls.privyWalletOverride.http[0]:s.rpcUrls&&s.rpcUrls[p]?s.rpcUrls[p]:o.rpcUrls.privy?.http[0]?{url:o.rpcUrls.privy.http[0],headers:{"privy-app-id":a.appId}}:o.rpcUrls.public?.http[0]?o.rpcUrls.public?.http[0]:o.rpcUrls.default?.http[0])},exports.populateTransactionRequest=async function(e,t,l){if(t.chainId=Number(t.chainId),c(t),t.from||(t.from=e),!t.nonce){let i=new r.VoidSigner(e,l);t.nonce=await i.getTransactionCount("pending")}return t.gasLimit||(t.gas?(t.gasLimit=t.gas,delete t.gas):t.gasLimit=await o.defaultGasLimit(t,l)),"string"==typeof t.type&&n(t.type)&&(t.type=Number(t.type)),[23294,23295].includes(t.chainId)&&(t.type=0),0===(t=p.isPolygon(t.chainId)?await p.defaultGasForPolygon(t):i.isArbitrum(t.chainId)?await i.defaultGasForArbitrum(t,l):a.isOpStack(t.chainId)?await a.defaultGasForOpStack(t,l):s.isBsc(t.chainId)?await s.defaultGasForBsc(t,l):await o.defaultGasForEvmChain(t,l)).type&&delete t.accessList,2!==t.type&&(delete t.maxPriorityFeePerGas,delete t.maxFeePerGas),t},exports.throwIfInvalidRecoveryUpgradePath=function({currentRecoveryMethod:r,upgradeToRecoveryMethod:e}){switch(r){case"privy":case"user-passcode":case"recovery-encryption-key":return!0;case"icloud":case"google-drive":if(r===e)throw Error("Cannot upgrade to the existing cloud platform");return!0;default:throw Error("Unknown recovery method")}},exports.validateTransactionRequest=c;