@privy-io/js-sdk-core 0.41.2 → 0.41.4

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../Error.js"),r=require("../chains/index.js"),t=require("../embedded/EmbeddedBitcoinWalletProvider.js"),i=require("../embedded/errors.js"),o=require("../embedded/utils/index.js"),s=require("../embedded/EmbeddedWalletProxy.js"),d=require("../embedded/EmbeddedWalletProvider.js"),a=require("../embedded/EmbeddedSolanaWalletProvider.js");require("../chains/arbitrum.js"),require("../chains/arbitrumGoerli.js"),require("../chains/arbitrumSepolia.js"),require("../chains/avalanche.js"),require("../chains/avalancheFuji.js"),require("../chains/base.js"),require("../chains/baseGoerli.js"),require("../chains/baseSepolia.js"),require("../chains/berachainArtio.js"),require("../chains/celo.js"),require("../chains/celoAlfajores.js"),require("../chains/filecoin.js"),require("../chains/filecoinCalibration.js"),require("../chains/garnetHolesky.js"),require("../chains/goerli.js"),require("../chains/holesky.js"),require("../chains/linea.js"),require("../chains/lineaTestnet.js"),require("../chains/mainnet.js"),require("../chains/optimism.js"),require("../chains/optimismGoerli.js"),require("../chains/optimismSepolia.js"),require("../chains/polygon.js"),require("../chains/polygonMumbai.js"),require("../chains/redstone.js"),require("../chains/redstoneHolesky.js"),require("../chains/sepolia.js"),require("../chains/zora.js"),require("../chains/zoraSepolia.js"),require("../chains/zoraTestnet.js"),require("../embedded/types.js"),require("@ethersproject/abstract-signer"),require("@ethersproject/providers"),require("../embedded/gas/arbitrum.js"),require("@ethersproject/bignumber"),require("../embedded/utils/ethers.js"),require("../embedded/gas/bsc.js"),require("../embedded/gas/op-stack.js"),require("@ethersproject/contracts"),require("@ethersproject/transactions"),require("../embedded/gas/polygon.js"),require("@ethersproject/units"),require("fetch-retry"),require("../chains/polygonAmoy.js"),require("../embedded/utils/gas.js"),require("../utils/sleep.js"),require("../embedded/EventCallbackQueue.js"),require("../embedded/withMfa.js"),require("eventemitter3"),require("../embedded/methods.js"),require("../solana/getWalletPublicKeyFromTransaction.js"),require("../solana/isVersionedTransaction.js");exports.default=class{setMessagePoster(e){this._proxy=new s.EmbeddedWalletProxy(e,this._mfaPromises),this._mfa.setProxy(this._proxy)}async add(r){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let t=await this._privyInternal.getAccessToken();if(!t)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.addWallet({accessToken:t,...r});let{user:i}=await this._privyInternal.refreshSession();return{user:i}}async getBitcoinProvider({wallet:e,entropyId:r,entropyIdVerifier:i,recoveryPassword:o,recoveryAccessToken:s,recoverySecretOverride:d}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(!await this._privyInternal.getAccessToken())throw Error("User must be logged in to create an embedded wallet");return await this._load({entropyId:r,entropyIdVerifier:i,wallet:e,recoveryPassword:o,recoveryAccessToken:s,recoverySecretOverride:d}),new t.EmbeddedBitcoinWalletProvider({account:e,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:r,entropyIdVerifier:i})}async create({password:e,recoveryMethod:r,recoveryToken:t,recoveryKey:i,recoverySecretOverride:o,iCloudRecordNameOverride:s,solanaAccount:d,skipCallbacks:a}){let n;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(n=r||(e?"user-passcode":"privy"),e&&"string"!=typeof e)throw Error("Invalid recovery password, must be a string");if("privy"===n&&this._privyInternal.config?.embedded_wallet_config.require_user_password_on_create)throw Error("Password not provided yet is required by App configuration");let c=await this._privyInternal.getAccessToken();if(!c)throw Error("User must be logged in to create an embedded wallet");let{address:l}=await this._proxy.create({accessToken:c,recoveryMethod:n,recoveryKey:i,recoveryPassword:e,recoveryAccessToken:t,recoverySecretOverride:o,iCloudRecordNameOverride:s,solanaAddress:d?.address});if(!l)throw Error("Failed to create wallet");return await this._privyInternal.refreshSession(a)}async createSolana(r){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let t=await this._privyInternal.getAccessToken();if(!t)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});r?.ethereumAccount&&await this.getProvider(r.ethereumAccount);let{publicKey:i}=await this._proxy.createSolana({accessToken:t,ethereumAddress:r?.ethereumAccount?.address});if(!i)throw new e.PrivyClientError({error:"Failed to create wallet",code:"embedded_wallet_creation_error"});return await this._privyInternal.refreshSession()}async delegateWallets({delegatedWallets:r,rootWallet:t}){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let i=await this._privyInternal.getAccessToken();if(!i)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.delegateWallets({accessToken:i,delegatedWallets:r,rootWallet:t})}async getProvider(e,r,t,i,o){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return new d.EmbeddedWalletProvider({address:await this._load({wallet:e,entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier",recoveryPassword:r,recoveryKey:o,recoveryAccessToken:t,recoverySecretOverride:i}),privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}async getSolanaProvider(r,t,i,o,s,d){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_webview_not_loaded"});return await this._load({wallet:r,entropyId:t,entropyIdVerifier:i,recoveryPassword:o,recoveryAccessToken:s,recoverySecretOverride:d}),new a.EmbeddedSolanaWalletProvider({publicKey:r.address,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:t,entropyIdVerifier:i,hdWalletIndex:r.wallet_index})}async setRecovery(e){let{wallet:r,...t}=e;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");o.throwIfInvalidRecoveryUpgradePath({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:"icloud-native"===t.recoveryMethod?"icloud":t.recoveryMethod}),await this._load("solana"===r.chain_type?{wallet:r,entropyId:r.address,entropyIdVerifier:"solana-address-verifier"}:{wallet:r,entropyId:r.address,entropyIdVerifier:"ethereum-address-verifier"});let i=await this._privyInternal.getAccessToken();if(!i)throw Error("User must be logged in to interact with embedded wallets");let s=r.recovery_method;this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_started",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});try{let e;if("user-passcode"===t.recoveryMethod)e={recoveryMethod:"user-passcode",recoveryPassword:t.password};else if("google-drive"===t.recoveryMethod)e={recoveryMethod:"google-drive",recoveryAccessToken:t.recoveryAccessToken};else if("icloud"===t.recoveryMethod)e={recoveryMethod:"icloud",recoveryAccessToken:t.recoveryAccessToken};else if("icloud-native"===t.recoveryMethod)e={recoveryMethod:"icloud-native",iCloudRecordNameOverride:t.iCloudRecordNameOverride,recoverySecretOverride:t.recoverySecretOverride};else{if("privy"!==t.recoveryMethod)throw Error(`Unknown recovery method: ${t.recoveryMethod}`);e={recoveryMethod:"privy"}}await this._proxy.setRecovery({accessToken:i,entropyId:r.address,entropyIdVerifier:"solana"===r.chain_type?"solana-address-verifier":"ethereum-address-verifier",...e}),this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_completed",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});let{user:o}=await this._privyInternal.refreshSession();return{user:o,provider:"ethereum"!==r.chain_type?null:new d.EmbeddedWalletProvider({address:r.address,privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}}catch(e){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_failed",{address:r.address,recovery_method:r.recovery_method,error:e instanceof Error?e.message:"Unable to recover wallet"}),e}}getURL(){let e=new URL(`${this._privyInternal.baseUrl}/apps/${this._privyInternal.appId}/embedded-wallets`);return this._privyInternal.caid&&e.searchParams.append("caid",this._privyInternal.caid),this._privyInternal.appClientId&&e.searchParams.append("client_id",this._privyInternal.appClientId),e.href}get chains(){return this._chains}onMessage(e){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return this._proxy.handleEmbeddedWalletMessages(e)}async ping(e){try{if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return await this._proxy.ping(e),!0}catch(e){return console.error(e),!1}}async _load({entropyId:e,entropyIdVerifier:r,wallet:t,recoveryPassword:o,recoveryKey:s,recoveryAccessToken:d,recoverySecretOverride:a}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let n=await this._privyInternal.getAccessToken();if(!n)throw Error("User must be logged in to interact with embedded wallets");try{return await this._proxy.connect({accessToken:n,entropyId:e,entropyIdVerifier:r}),e}catch(c){if(i.errorIndicatesRecoveryIsNeeded(c))try{if("privy"===t.recovery_method){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let i=await this._proxy.recover({accessToken:n,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),i.entropyId}if("user-passcode"===t.recovery_method&&o){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let i=await this._proxy.recover({accessToken:n,recoveryPassword:o,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),i.entropyId}if(["google-drive","icloud"].includes(t.recovery_method)&&d){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let i=await this._proxy.recover({accessToken:n,recoveryAccessToken:d,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),i.entropyId}if("icloud"===t.recovery_method&&a){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:"icloud-native"});let i=await this._proxy.recover({accessToken:n,recoverySecretOverride:a,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:"icloud-native"}),i.entropyId}if("recovery-encryption-key"===t.recovery_method&&s){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let i=await this._proxy.recover({accessToken:n,recoveryKey:s,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),i.entropyId}}catch(r){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_failed",{address:t.address,recovery_method:t.recovery_method,error:r instanceof Error?r.message:`Unable to recover wallet: ${e}`}),r}throw c}}constructor(e,t,i,o,d){this._chains=Array.from(r.DEFAULT_SUPPORTED_CHAINS),this._privyInternal=e,t&&(this._proxy=new s.EmbeddedWalletProxy(t,d),o.setProxy(this._proxy)),i&&(this._chains=i),this._mfa=o,this._mfaPromises=d}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../Error.js"),r=require("../chains/index.js"),t=require("../embedded/EmbeddedBitcoinWalletProvider.js"),o=require("../embedded/errors.js"),i=require("../embedded/utils/index.js"),d=require("../embedded/EmbeddedWalletProxy.js"),s=require("../embedded/EmbeddedWalletProvider.js"),a=require("../embedded/EmbeddedSolanaWalletProvider.js");require("../chains/arbitrum.js"),require("../chains/arbitrumGoerli.js"),require("../chains/arbitrumSepolia.js"),require("../chains/avalanche.js"),require("../chains/avalancheFuji.js"),require("../chains/base.js"),require("../chains/baseGoerli.js"),require("../chains/baseSepolia.js"),require("../chains/berachainArtio.js"),require("../chains/celo.js"),require("../chains/celoAlfajores.js"),require("../chains/filecoin.js"),require("../chains/filecoinCalibration.js"),require("../chains/garnetHolesky.js"),require("../chains/goerli.js"),require("../chains/holesky.js"),require("../chains/linea.js"),require("../chains/lineaTestnet.js"),require("../chains/mainnet.js"),require("../chains/optimism.js"),require("../chains/optimismGoerli.js"),require("../chains/optimismSepolia.js"),require("../chains/polygon.js"),require("../chains/polygonMumbai.js"),require("../chains/redstone.js"),require("../chains/redstoneHolesky.js"),require("../chains/sepolia.js"),require("../chains/zora.js"),require("../chains/zoraSepolia.js"),require("../chains/zoraTestnet.js"),require("../embedded/types.js"),require("@ethersproject/abstract-signer"),require("@ethersproject/providers"),require("../embedded/gas/arbitrum.js"),require("@ethersproject/bignumber"),require("../embedded/utils/ethers.js"),require("../embedded/gas/bsc.js"),require("../embedded/gas/op-stack.js"),require("@ethersproject/contracts"),require("@ethersproject/transactions"),require("../embedded/gas/polygon.js"),require("@ethersproject/units"),require("fetch-retry"),require("../chains/polygonAmoy.js"),require("../embedded/utils/gas.js"),require("../utils/sleep.js"),require("../embedded/EventCallbackQueue.js"),require("../embedded/withMfa.js"),require("eventemitter3"),require("../embedded/methods.js"),require("../solana/getWalletPublicKeyFromTransaction.js"),require("../solana/isVersionedTransaction.js");exports.default=class{setMessagePoster(e){this._proxy=new d.EmbeddedWalletProxy(e,this._mfaPromises),this._mfa.setProxy(this._proxy)}async add(r){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let t=await this._privyInternal.getAccessToken();if(!t)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.addWallet({accessToken:t,...r});let{user:o}=await this._privyInternal.refreshSession();return{user:o}}async getBitcoinProvider({wallet:e,entropyId:r,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:d,recoverySecretOverride:s}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(!await this._privyInternal.getAccessToken())throw Error("User must be logged in to create an embedded wallet");return await this._load({entropyId:r,entropyIdVerifier:o,wallet:e,recoveryPassword:i,recoveryAccessToken:d,recoverySecretOverride:s}),new t.EmbeddedBitcoinWalletProvider({account:e,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:r,entropyIdVerifier:o})}async create({password:e,recoveryMethod:r,recoveryToken:t,recoveryKey:o,recoverySecretOverride:i,iCloudRecordNameOverride:d,solanaAccount:s,skipCallbacks:a}){let n;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(n=r||(e?"user-passcode":"privy"),e&&"string"!=typeof e)throw Error("Invalid recovery password, must be a string");if("privy"===n&&this._privyInternal.config?.embedded_wallet_config.require_user_password_on_create)throw Error("Password not provided yet is required by App configuration");let c=await this._privyInternal.getAccessToken();if(!c)throw Error("User must be logged in to create an embedded wallet");let{address:l}=await this._proxy.create({accessToken:c,recoveryMethod:n,recoveryKey:o,recoveryPassword:e,recoveryAccessToken:t,recoverySecretOverride:i,iCloudRecordNameOverride:d,solanaAddress:s?.address});if(!l)throw Error("Failed to create wallet");return await this._privyInternal.refreshSession(a)}async createSolana(r){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let t=await this._privyInternal.getAccessToken();if(!t)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});r?.ethereumAccount&&await this.getProvider(r.ethereumAccount);let{publicKey:o}=await this._proxy.createSolana({accessToken:t,ethereumAddress:r?.ethereumAccount?.address});if(!o)throw new e.PrivyClientError({error:"Failed to create wallet",code:"embedded_wallet_creation_error"});return await this._privyInternal.refreshSession()}async delegateWallets({delegatedWallets:r,rootWallet:t}){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let o=await this._privyInternal.getAccessToken();if(!o)throw new e.PrivyClientError({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.delegateWallets({accessToken:o,delegatedWallets:r,rootWallet:t})}async getProvider(e,r,t,o,i){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return new s.EmbeddedWalletProvider({address:await this._load({wallet:e,entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier",recoveryPassword:r,recoveryKey:i,recoveryAccessToken:t,recoverySecretOverride:o}),privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}async getSolanaProvider(r,t,o,i,d,s){if(!this._proxy)throw new e.PrivyClientError({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_webview_not_loaded"});return await this._load({wallet:r,entropyId:t,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:d,recoverySecretOverride:s}),new a.EmbeddedSolanaWalletProvider({publicKey:r.address,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:t,entropyIdVerifier:o,hdWalletIndex:r.wallet_index})}async setRecovery(e){let{wallet:r,...t}=e;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");i.throwIfInvalidRecoveryUpgradePath({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:"icloud-native"===t.recoveryMethod?"icloud":t.recoveryMethod}),await this._load("solana"===r.chain_type?{wallet:r,entropyId:r.address,entropyIdVerifier:"solana-address-verifier"}:{wallet:r,entropyId:r.address,entropyIdVerifier:"ethereum-address-verifier"});let o=await this._privyInternal.getAccessToken();if(!o)throw Error("User must be logged in to interact with embedded wallets");let d=r.recovery_method;this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_started",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:d});try{let e;if("user-passcode"===t.recoveryMethod)e={recoveryMethod:"user-passcode",recoveryPassword:t.password};else if("google-drive"===t.recoveryMethod)e={recoveryMethod:"google-drive",recoveryAccessToken:t.recoveryAccessToken};else if("icloud"===t.recoveryMethod)e={recoveryMethod:"icloud",recoveryAccessToken:t.recoveryAccessToken};else if("icloud-native"===t.recoveryMethod)e={recoveryMethod:"icloud-native",iCloudRecordNameOverride:t.iCloudRecordNameOverride,recoverySecretOverride:t.recoverySecretOverride};else if("recovery-encryption-key"===t.recoveryMethod)e={recoveryMethod:"recovery-encryption-key",recoveryKey:t.recoveryKey};else{if("privy"!==t.recoveryMethod)throw Error(`Unknown recovery method: ${t.recoveryMethod}`);e={recoveryMethod:"privy"}}await this._proxy.setRecovery({accessToken:o,entropyId:r.address,entropyIdVerifier:"solana"===r.chain_type?"solana-address-verifier":"ethereum-address-verifier",...e}),this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_completed",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:d});let{user:i}=await this._privyInternal.refreshSession();return{user:i,provider:"ethereum"!==r.chain_type?null:new s.EmbeddedWalletProvider({address:r.address,privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}}catch(e){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_failed",{address:r.address,recovery_method:r.recovery_method,error:e instanceof Error?e.message:"Unable to recover wallet"}),e}}getURL(){let e=new URL(`${this._privyInternal.baseUrl}/apps/${this._privyInternal.appId}/embedded-wallets`);return this._privyInternal.caid&&e.searchParams.append("caid",this._privyInternal.caid),this._privyInternal.appClientId&&e.searchParams.append("client_id",this._privyInternal.appClientId),e.href}get chains(){return this._chains}onMessage(e){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return this._proxy.handleEmbeddedWalletMessages(e)}async ping(e){try{if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return await this._proxy.ping(e),!0}catch(e){return console.error(e),!1}}async _load({entropyId:e,entropyIdVerifier:r,wallet:t,recoveryPassword:i,recoveryKey:d,recoveryAccessToken:s,recoverySecretOverride:a}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let n=await this._privyInternal.getAccessToken();if(!n)throw Error("User must be logged in to interact with embedded wallets");try{return await this._proxy.connect({accessToken:n,entropyId:e,entropyIdVerifier:r}),e}catch(c){if(o.errorIndicatesRecoveryIsNeeded(c))try{if("privy"===t.recovery_method){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("user-passcode"===t.recovery_method&&i){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryPassword:i,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if(["google-drive","icloud"].includes(t.recovery_method)&&s){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryAccessToken:s,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("icloud"===t.recovery_method&&a){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:"icloud-native"});let o=await this._proxy.recover({accessToken:n,recoverySecretOverride:a,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:"icloud-native"}),o.entropyId}if("recovery-encryption-key"===t.recovery_method&&d){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryKey:d,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}}catch(r){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_failed",{address:t.address,recovery_method:t.recovery_method,error:r instanceof Error?r.message:`Unable to recover wallet: ${e}`}),r}throw c}}constructor(e,t,o,i,s){this._chains=Array.from(r.DEFAULT_SUPPORTED_CHAINS),this._privyInternal=e,t&&(this._proxy=new d.EmbeddedWalletProxy(t,s),i.setProxy(this._proxy)),o&&(this._chains=o),this._mfa=i,this._mfaPromises=s}};
@@ -1 +1 @@
1
- "use strict";var e=require("fetch-retry"),t=require("uuid"),s=require("@privy-io/api-base"),i=require("@privy-io/public-api"),r=require("../Error.js"),a=require("../Session.js"),n=require("../toAbortSignalTimeout.js"),o=require("../utils/toSearchParams.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("eventemitter3"),require("jose"),require("js-cookie"),require("../Token.js"),require("../utils/allSettled.js");var c=/*#__PURE__*/h(e);let l="privy:caid";exports.PrivyInternal=class{setCallbacks(e){this.callbacks={...this.callbacks,...e}}get isReady(){return!!this._config}get config(){return this._config}get caid(){return this._analyticsId}async _initialize(){if(this.isReady)this.callbacks?.setIsReady?.(!0);else{if(!await this.isStorageAccessible())throw new r.PrivyClientError({code:"storage_error",error:"Unable to access storage"});this._config=await this.getAppConfig(),this._config?.custom_api_url&&(this.baseUrl=this._config.custom_api_url,this.session.isUsingServerCookies=!0),this.callbacks?.setIsReady?.(!0),this.createAnalyticsEvent("sdk_initialize",{})}}async fetch(e,{body:t,params:s,query:a,headers:n,options:h={onRequest:this._beforeRequest.bind(this)}}){let c=new Request(`${this.baseUrl}${i.getPathWithParams(e.path,s)}${o.toSearchParams(a)}`,{method:e.method,body:JSON.stringify(t),headers:n}),l=await h.onRequest(c),d=await this._fetch(c,l),u=await d.json();if(d.status>299)throw new r.PrivyApiError(u);return u}async _beforeRequestWithoutInitialize(e){let t=await this.session.getToken(),s=new Headers(e.headers);s.set("privy-app-id",this.appId),this.appClientId&&s.set("privy-client-id",this.appClientId),s.set("privy-client",this._sdkVersion),t&&s.set("Authorization",`Bearer ${t}`),s.set("Content-Type","application/json"),s.set("Accept","application/json");let i=await this._getOrGenerateClientAnalyticsId();return i&&s.set("privy-ca-id",i),this.nativeAppIdentifier&&s.set("x-native-app-identifier",this.nativeAppIdentifier),{signal:n.default(2e4),headers:s,credentials:"include"}}async beforeRequestWithoutRefresh(e){return await this._initialize(),this._beforeRequestWithoutInitialize(e)}async _beforeRequest(e){return await this._initialize(),await this.getAccessToken(),this.beforeRequestWithoutRefresh(e)}async getAppConfig(){return await this.fetch(i.AppConfig,{params:{app_id:this.appId},options:{onRequest:this._beforeRequestWithoutInitialize.bind(this)}})}async _getOrGenerateClientAnalyticsId(){if(this._analyticsId)return this._analyticsId;try{let e=await this._storage.get(l);if("string"==typeof e&&e.length>0)return this._analyticsId=e,e}catch(e){console.error("Unable to load clientId",e)}try{this._analyticsId=t.v4()}catch(e){console.error("Unable to generate uuidv4",e)}if(!this._analyticsId)return null;try{await this._storage.put(l,this._analyticsId)}catch(e){console.error(`Unable to store clientId: ${this._analyticsId}`,e)}return this._analyticsId}async destroyClientAnalyticsId(){try{return await this._storage.del(l)}catch(e){console.error("Unable to delete clientId",e)}}async createAnalyticsEvent(e,t){try{await this.fetch(i.AnalyticsEvent,{body:{event_name:e,client_id:await this._getOrGenerateClientAnalyticsId(),payload:t},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}})}catch(e){}}async refreshSession(e=!1){let t=await this.session.getRefreshToken()??void 0,s=t??"key",i=this._cache.get(s);if(i)return console.debug("Found in-flight session refresh request, deduping"),await i;let r=this._refreshSession(t,e);this._cache.set(s,r);try{return await r}finally{this._cache.delete(s)}}async _refreshSession(e,t){let a=await this.session.getToken();if(!this.session.hasRefreshCredentials(a,e??null))throw await this._initialize(),new r.PrivyApiError({code:s.PrivyErrorCode.MISSING_OR_INVALID_TOKEN,error:"No tokens found in storage"});try{let s=await this.fetch(i.RefreshSession,{body:{refresh_token:e},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}}),r=s.session_update_action;return t||this.callbacks?.setUser?.(s.user),"set"===r&&await this.session.updateWithTokensResponse(s),"clear"===r&&(await this.session.destroyLocalState(),t||this.callbacks?.setUser?.(null)),"ignore"===r&&s.token&&(await this.session.storeToken(s.token),s.identity_token&&await this.session.storeIdentityToken(s.identity_token)),s}catch(e){throw e instanceof r.PrivyApiError&&e.code===s.PrivyErrorCode.MISSING_OR_INVALID_TOKEN&&(await this.session.destroyLocalState(),t||this.callbacks?.setUser?.(null)),e}}async getAccessToken(){let[e,t]=await Promise.all([this.session.getToken(),this.session.getRefreshToken()]);return!this.session.tokenIsActive(e)&&this.session.hasRefreshCredentials(e,t)?(await this.refreshSession(),await this.session.getToken()):e}async getIdentityToken(){return await this.session.getIdentityToken()}async isStorageAccessible(){try{let e=`privy:__storage__test-${t.v4()}`,s="blobby";await this._storage.put(e,s);let i=await this._storage.get(e);return await this._storage.del(e),i===s}catch(e){return console.error(e),!1}}constructor(e){this._sdkVersion="js-sdk-core:0.41.2",this._cache=new Map,this._storage=e.storage,this._analyticsId=null,this._getOrGenerateClientAnalyticsId(),this.baseUrl=e.baseUrl??"https://auth.privy.io",this.appId=e.appId,this.appClientId=e.appClientId,this._sdkVersion=e.sdkVersion??this._sdkVersion,this.callbacks=e.callbacks,this.nativeAppIdentifier=e.nativeAppIdentifier,this.session=new a.Session({storage:this._storage,isUsingServerCookies:!1,appId:e.appId}),this._fetch=c.default(fetch,{retries:3,retryDelay:500}),this.session.on("error_storing_tokens",(e=>{this.createAnalyticsEvent("error_updating_tokens_in_storage",{reason:e})}))}};
1
+ "use strict";var e=require("fetch-retry"),t=require("uuid"),s=require("@privy-io/api-base"),i=require("@privy-io/public-api"),r=require("../Error.js"),a=require("../Session.js"),n=require("../toAbortSignalTimeout.js"),o=require("../utils/toSearchParams.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("eventemitter3"),require("jose"),require("js-cookie"),require("../Token.js"),require("../utils/allSettled.js");var c=/*#__PURE__*/h(e);let l="privy:caid";exports.PrivyInternal=class{setCallbacks(e){this.callbacks={...this.callbacks,...e}}get isReady(){return!!this._config}get config(){return this._config}get caid(){return this._analyticsId}async _initialize(){if(this.isReady)this.callbacks?.setIsReady?.(!0);else{if(!await this.isStorageAccessible())throw new r.PrivyClientError({code:"storage_error",error:"Unable to access storage"});this._config=await this.getAppConfig(),this._config?.custom_api_url&&(this.baseUrl=this._config.custom_api_url,this.session.isUsingServerCookies=!0),this.callbacks?.setIsReady?.(!0),this.createAnalyticsEvent("sdk_initialize",{})}}async fetch(e,{body:t,params:s,query:a,headers:n,options:h={onRequest:this._beforeRequest.bind(this)}}){let c=new Request(`${this.baseUrl}${i.getPathWithParams(e.path,s)}${o.toSearchParams(a)}`,{method:e.method,body:JSON.stringify(t),headers:n}),l=await h.onRequest(c),d=await this._fetch(c,l),u=await d.json();if(d.status>299)throw new r.PrivyApiError(u);return u}async _beforeRequestWithoutInitialize(e){let t=await this.session.getToken(),s=new Headers(e.headers);s.set("privy-app-id",this.appId),this.appClientId&&s.set("privy-client-id",this.appClientId),s.set("privy-client",this._sdkVersion),t&&s.set("Authorization",`Bearer ${t}`),s.set("Content-Type","application/json"),s.set("Accept","application/json");let i=await this._getOrGenerateClientAnalyticsId();return i&&s.set("privy-ca-id",i),this.nativeAppIdentifier&&s.set("x-native-app-identifier",this.nativeAppIdentifier),{signal:n.default(2e4),headers:s,credentials:"include"}}async beforeRequestWithoutRefresh(e){return await this._initialize(),this._beforeRequestWithoutInitialize(e)}async _beforeRequest(e){return await this._initialize(),await this.getAccessToken(),this.beforeRequestWithoutRefresh(e)}async getAppConfig(){return await this.fetch(i.AppConfig,{params:{app_id:this.appId},options:{onRequest:this._beforeRequestWithoutInitialize.bind(this)}})}async _getOrGenerateClientAnalyticsId(){if(this._analyticsId)return this._analyticsId;try{let e=await this._storage.get(l);if("string"==typeof e&&e.length>0)return this._analyticsId=e,e}catch(e){console.error("Unable to load clientId",e)}try{this._analyticsId=t.v4()}catch(e){console.error("Unable to generate uuidv4",e)}if(!this._analyticsId)return null;try{await this._storage.put(l,this._analyticsId)}catch(e){console.error(`Unable to store clientId: ${this._analyticsId}`,e)}return this._analyticsId}async destroyClientAnalyticsId(){try{return await this._storage.del(l)}catch(e){console.error("Unable to delete clientId",e)}}async createAnalyticsEvent(e,t){try{await this.fetch(i.AnalyticsEvent,{body:{event_name:e,client_id:await this._getOrGenerateClientAnalyticsId(),payload:t},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}})}catch(e){}}async refreshSession(e=!1){let t=await this.session.getRefreshToken()??void 0,s=t??"key",i=this._cache.get(s);if(i)return console.debug("Found in-flight session refresh request, deduping"),await i;let r=this._refreshSession(t,e);this._cache.set(s,r);try{return await r}finally{this._cache.delete(s)}}async _refreshSession(e,t){let a=await this.session.getToken();if(!this.session.hasRefreshCredentials(a,e??null))throw await this._initialize(),new r.PrivyApiError({code:s.PrivyErrorCode.MISSING_OR_INVALID_TOKEN,error:"No tokens found in storage"});try{let s=await this.fetch(i.RefreshSession,{body:{refresh_token:e},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}}),r=s.session_update_action;return t||this.callbacks?.setUser?.(s.user),"set"===r&&await this.session.updateWithTokensResponse(s),"clear"===r&&(await this.session.destroyLocalState(),t||this.callbacks?.setUser?.(null)),"ignore"===r&&s.token&&(await this.session.storeToken(s.token),s.identity_token&&await this.session.storeIdentityToken(s.identity_token)),s}catch(e){throw e instanceof r.PrivyApiError&&e.code===s.PrivyErrorCode.MISSING_OR_INVALID_TOKEN&&(await this.session.destroyLocalState(),t||this.callbacks?.setUser?.(null)),e}}async getAccessToken(){let[e,t]=await Promise.all([this.session.getToken(),this.session.getRefreshToken()]);return!this.session.tokenIsActive(e)&&this.session.hasRefreshCredentials(e,t)?(await this.refreshSession(),await this.session.getToken()):e}async getIdentityToken(){return await this.session.getIdentityToken()}async isStorageAccessible(){try{let e=`privy:__storage__test-${t.v4()}`,s="blobby";await this._storage.put(e,s);let i=await this._storage.get(e);return await this._storage.del(e),i===s}catch(e){return console.error(e),!1}}constructor(e){this._sdkVersion="js-sdk-core:0.41.4",this._cache=new Map,this._storage=e.storage,this._analyticsId=null,this._getOrGenerateClientAnalyticsId(),this.baseUrl=e.baseUrl??"https://auth.privy.io",this.appId=e.appId,this.appClientId=e.appClientId,this._sdkVersion=e.sdkVersion??this._sdkVersion,this.callbacks=e.callbacks,this.nativeAppIdentifier=e.nativeAppIdentifier,this.session=new a.Session({storage:this._storage,isUsingServerCookies:!1,appId:e.appId}),this._fetch=c.default(fetch,{retries:3,retryDelay:500}),this.session.on("error_storing_tokens",(e=>{this.createAnalyticsEvent("error_updating_tokens_in_storage",{reason:e})}))}};
@@ -1 +1 @@
1
- "use strict";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"),o=require("../gas/polygon.js"),p=require("./gas.js");require("../types.js"),require("@ethersproject/bignumber"),require("../../chains/arbitrum.js"),require("../../chains/arbitrumGoerli.js"),require("../../chains/arbitrumSepolia.js"),require("./ethers.js"),require("@ethersproject/contracts"),require("@ethersproject/transactions"),require("../../chains/base.js"),require("../../chains/baseGoerli.js"),require("../../chains/baseSepolia.js"),require("../../chains/optimism.js"),require("../../chains/optimismGoerli.js"),require("../../chains/optimismSepolia.js"),require("../../chains/zora.js"),require("../../chains/zoraSepolia.js"),require("../../chains/zoraTestnet.js"),require("@ethersproject/units"),require("fetch-retry"),require("../../chains/polygon.js"),require("../../chains/polygonAmoy.js"),require("../../chains/polygonMumbai.js");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,o=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])s=r.rpcUrls.privyWalletOverride.http[0];else if(e.rpcUrls&&e.rpcUrls[o])s=e.rpcUrls[o];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 o=Number(r),p=i.find((r=>r.id===o));if(!p)throw new t.PrivyConnectorError(`Unsupported chainId ${r}`,4901);return new e.StaticJsonRpcProvider(p.rpcUrls.privyWalletOverride&&p.rpcUrls.privyWalletOverride.http[0]?p.rpcUrls.privyWalletOverride.http[0]:s.rpcUrls&&s.rpcUrls[o]?s.rpcUrls[o]:p.rpcUrls.privy?.http[0]?{url:p.rpcUrls.privy.http[0],headers:{"privy-app-id":a.appId}}:p.rpcUrls.public?.http[0]?p.rpcUrls.public?.http[0]:p.rpcUrls.default?.http[0])},exports.populateTransactionRequest=async function(e,t,u){if(t.chainId=Number(t.chainId),c(t),t.from||(t.from=e),!t.nonce){let i=new r.VoidSigner(e,u);t.nonce=await i.getTransactionCount("pending")}return t.gasLimit||(t.gas?(t.gasLimit=t.gas,delete t.gas):t.gasLimit=await p.defaultGasLimit(t,u)),"string"==typeof t.type&&n(t.type)&&(t.type=Number(t.type)),[23294,23295].includes(t.chainId)&&(t.type=0),0===(t=o.isPolygon(t.chainId)?await o.defaultGasForPolygon(t):i.isArbitrum(t.chainId)?await i.defaultGasForArbitrum(t,u):a.isOpStack(t.chainId)?await a.defaultGasForOpStack(t,u):s.isBsc(t.chainId)?await s.defaultGasForBsc(t,u):await p.defaultGasForEvmChain(t,u)).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":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;
1
+ "use strict";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"),o=require("../gas/polygon.js"),p=require("./gas.js");require("../types.js"),require("@ethersproject/bignumber"),require("../../chains/arbitrum.js"),require("../../chains/arbitrumGoerli.js"),require("../../chains/arbitrumSepolia.js"),require("./ethers.js"),require("@ethersproject/contracts"),require("@ethersproject/transactions"),require("../../chains/base.js"),require("../../chains/baseGoerli.js"),require("../../chains/baseSepolia.js"),require("../../chains/optimism.js"),require("../../chains/optimismGoerli.js"),require("../../chains/optimismSepolia.js"),require("../../chains/zora.js"),require("../../chains/zoraSepolia.js"),require("../../chains/zoraTestnet.js"),require("@ethersproject/units"),require("fetch-retry"),require("../../chains/polygon.js"),require("../../chains/polygonAmoy.js"),require("../../chains/polygonMumbai.js");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,o=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])s=r.rpcUrls.privyWalletOverride.http[0];else if(e.rpcUrls&&e.rpcUrls[o])s=e.rpcUrls[o];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 o=Number(r),p=i.find((r=>r.id===o));if(!p)throw new t.PrivyConnectorError(`Unsupported chainId ${r}`,4901);return new e.StaticJsonRpcProvider(p.rpcUrls.privyWalletOverride&&p.rpcUrls.privyWalletOverride.http[0]?p.rpcUrls.privyWalletOverride.http[0]:s.rpcUrls&&s.rpcUrls[o]?s.rpcUrls[o]:p.rpcUrls.privy?.http[0]?{url:p.rpcUrls.privy.http[0],headers:{"privy-app-id":a.appId}}:p.rpcUrls.public?.http[0]?p.rpcUrls.public?.http[0]:p.rpcUrls.default?.http[0])},exports.populateTransactionRequest=async function(e,t,u){if(t.chainId=Number(t.chainId),c(t),t.from||(t.from=e),!t.nonce){let i=new r.VoidSigner(e,u);t.nonce=await i.getTransactionCount("pending")}return t.gasLimit||(t.gas?(t.gasLimit=t.gas,delete t.gas):t.gasLimit=await p.defaultGasLimit(t,u)),"string"==typeof t.type&&n(t.type)&&(t.type=Number(t.type)),[23294,23295].includes(t.chainId)&&(t.type=0),0===(t=o.isPolygon(t.chainId)?await o.defaultGasForPolygon(t):i.isArbitrum(t.chainId)?await i.defaultGasForArbitrum(t,u):a.isOpStack(t.chainId)?await a.defaultGasForOpStack(t,u):s.isBsc(t.chainId)?await s.defaultGasForBsc(t,u):await p.defaultGasForEvmChain(t,u)).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;
@@ -550,6 +550,10 @@ type PasswordRecoveryInput = {
550
550
  recoveryMethod: 'user-passcode';
551
551
  password: string;
552
552
  };
553
+ type AppKeyRecoveryInput = {
554
+ recoveryMethod: 'recovery-encryption-key';
555
+ recoveryKey: string;
556
+ };
553
557
  type CloudRecoveryInput = {
554
558
  recoveryMethod: 'google-drive' | 'icloud';
555
559
  recoveryAccessToken: string;
@@ -561,7 +565,7 @@ type ICloudNativeRecoveryInput = {
561
565
  };
562
566
  type SetRecoveryInput = {
563
567
  wallet: PrivyEthereumEmbeddedWalletAccount | PrivySolanaEmbeddedWalletAccount;
564
- } & (PasswordRecoveryInput | CloudRecoveryInput | ICloudNativeRecoveryInput | PrivyRecoveryInput);
568
+ } & (PasswordRecoveryInput | CloudRecoveryInput | ICloudNativeRecoveryInput | PrivyRecoveryInput | AppKeyRecoveryInput);
565
569
  interface SetRecoveryOutput {
566
570
  /** User object with the updated embedded wallet */
567
571
  user: PrivyUser;
@@ -630,7 +634,11 @@ type WalletsSetRecoveryICloudNativeDataType = WalletsSetRecoveryBaseRequestDataT
630
634
  recoverySecretOverride: string;
631
635
  iCloudRecordNameOverride: string;
632
636
  };
633
- type WalletsSetRecoveryRequestDataType = Omit<WalletsSetRecoveryPasswordDataType, 'chainType'> | Omit<WalletsSetRecoveryGoogleDriveDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudNativeDataType, 'chainType'>;
637
+ type WalletsRecoveryEncyrptionKeyDataType = WalletsSetRecoveryBaseRequestDataType & {
638
+ recoveryMethod: 'recovery-encryption-key';
639
+ recoveryKey: string;
640
+ };
641
+ type WalletsSetRecoveryRequestDataType = Omit<WalletsSetRecoveryPasswordDataType, 'chainType'> | Omit<WalletsSetRecoveryGoogleDriveDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudNativeDataType, 'chainType'> | Omit<WalletsRecoveryEncyrptionKeyDataType, 'chainType'>;
634
642
  type WalletsSetRecoveryResponseDataType = {
635
643
  entropyId: string;
636
644
  entropyIdVerifier: EntropyIdVerifier;
@@ -550,6 +550,10 @@ type PasswordRecoveryInput = {
550
550
  recoveryMethod: 'user-passcode';
551
551
  password: string;
552
552
  };
553
+ type AppKeyRecoveryInput = {
554
+ recoveryMethod: 'recovery-encryption-key';
555
+ recoveryKey: string;
556
+ };
553
557
  type CloudRecoveryInput = {
554
558
  recoveryMethod: 'google-drive' | 'icloud';
555
559
  recoveryAccessToken: string;
@@ -561,7 +565,7 @@ type ICloudNativeRecoveryInput = {
561
565
  };
562
566
  type SetRecoveryInput = {
563
567
  wallet: PrivyEthereumEmbeddedWalletAccount | PrivySolanaEmbeddedWalletAccount;
564
- } & (PasswordRecoveryInput | CloudRecoveryInput | ICloudNativeRecoveryInput | PrivyRecoveryInput);
568
+ } & (PasswordRecoveryInput | CloudRecoveryInput | ICloudNativeRecoveryInput | PrivyRecoveryInput | AppKeyRecoveryInput);
565
569
  interface SetRecoveryOutput {
566
570
  /** User object with the updated embedded wallet */
567
571
  user: PrivyUser;
@@ -630,7 +634,11 @@ type WalletsSetRecoveryICloudNativeDataType = WalletsSetRecoveryBaseRequestDataT
630
634
  recoverySecretOverride: string;
631
635
  iCloudRecordNameOverride: string;
632
636
  };
633
- type WalletsSetRecoveryRequestDataType = Omit<WalletsSetRecoveryPasswordDataType, 'chainType'> | Omit<WalletsSetRecoveryGoogleDriveDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudNativeDataType, 'chainType'>;
637
+ type WalletsRecoveryEncyrptionKeyDataType = WalletsSetRecoveryBaseRequestDataType & {
638
+ recoveryMethod: 'recovery-encryption-key';
639
+ recoveryKey: string;
640
+ };
641
+ type WalletsSetRecoveryRequestDataType = Omit<WalletsSetRecoveryPasswordDataType, 'chainType'> | Omit<WalletsSetRecoveryGoogleDriveDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudDataType, 'chainType'> | Omit<WalletsSetRecoveryICloudNativeDataType, 'chainType'> | Omit<WalletsRecoveryEncyrptionKeyDataType, 'chainType'>;
634
642
  type WalletsSetRecoveryResponseDataType = {
635
643
  entropyId: string;
636
644
  entropyIdVerifier: EntropyIdVerifier;
@@ -1 +1 @@
1
- import{PrivyClientError as e}from"../Error.mjs";import{DEFAULT_SUPPORTED_CHAINS as r}from"../chains/index.mjs";import{EmbeddedBitcoinWalletProvider as t}from"../embedded/EmbeddedBitcoinWalletProvider.mjs";import{errorIndicatesRecoveryIsNeeded as o}from"../embedded/errors.mjs";import{throwIfInvalidRecoveryUpgradePath as i}from"../embedded/utils/index.mjs";import{EmbeddedWalletProxy as s}from"../embedded/EmbeddedWalletProxy.mjs";import{EmbeddedWalletProvider as d}from"../embedded/EmbeddedWalletProvider.mjs";import{EmbeddedSolanaWalletProvider as a}from"../embedded/EmbeddedSolanaWalletProvider.mjs";import"../chains/arbitrum.mjs";import"../chains/arbitrumGoerli.mjs";import"../chains/arbitrumSepolia.mjs";import"../chains/avalanche.mjs";import"../chains/avalancheFuji.mjs";import"../chains/base.mjs";import"../chains/baseGoerli.mjs";import"../chains/baseSepolia.mjs";import"../chains/berachainArtio.mjs";import"../chains/celo.mjs";import"../chains/celoAlfajores.mjs";import"../chains/filecoin.mjs";import"../chains/filecoinCalibration.mjs";import"../chains/garnetHolesky.mjs";import"../chains/goerli.mjs";import"../chains/holesky.mjs";import"../chains/linea.mjs";import"../chains/lineaTestnet.mjs";import"../chains/mainnet.mjs";import"../chains/optimism.mjs";import"../chains/optimismGoerli.mjs";import"../chains/optimismSepolia.mjs";import"../chains/polygon.mjs";import"../chains/polygonMumbai.mjs";import"../chains/redstone.mjs";import"../chains/redstoneHolesky.mjs";import"../chains/sepolia.mjs";import"../chains/zora.mjs";import"../chains/zoraSepolia.mjs";import"../chains/zoraTestnet.mjs";import"../embedded/types.mjs";import"@ethersproject/abstract-signer";import"@ethersproject/providers";import"../embedded/gas/arbitrum.mjs";import"@ethersproject/bignumber";import"../embedded/utils/ethers.mjs";import"../embedded/gas/bsc.mjs";import"../embedded/gas/op-stack.mjs";import"@ethersproject/contracts";import"@ethersproject/transactions";import"../embedded/gas/polygon.mjs";import"@ethersproject/units";import"fetch-retry";import"../chains/polygonAmoy.mjs";import"../embedded/utils/gas.mjs";import"../utils/sleep.mjs";import"../embedded/EventCallbackQueue.mjs";import"../embedded/withMfa.mjs";import"eventemitter3";import"../embedded/methods.mjs";import"../solana/getWalletPublicKeyFromTransaction.mjs";import"../solana/isVersionedTransaction.mjs";class n{setMessagePoster(e){this._proxy=new s(e,this._mfaPromises),this._mfa.setProxy(this._proxy)}async add(r){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let t=await this._privyInternal.getAccessToken();if(!t)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.addWallet({accessToken:t,...r});let{user:o}=await this._privyInternal.refreshSession();return{user:o}}async getBitcoinProvider({wallet:e,entropyId:r,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(!await this._privyInternal.getAccessToken())throw Error("User must be logged in to create an embedded wallet");return await this._load({entropyId:r,entropyIdVerifier:o,wallet:e,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}),new t({account:e,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:r,entropyIdVerifier:o})}async create({password:e,recoveryMethod:r,recoveryToken:t,recoveryKey:o,recoverySecretOverride:i,iCloudRecordNameOverride:s,solanaAccount:d,skipCallbacks:a}){let n;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(n=r||(e?"user-passcode":"privy"),e&&"string"!=typeof e)throw Error("Invalid recovery password, must be a string");if("privy"===n&&this._privyInternal.config?.embedded_wallet_config.require_user_password_on_create)throw Error("Password not provided yet is required by App configuration");let c=await this._privyInternal.getAccessToken();if(!c)throw Error("User must be logged in to create an embedded wallet");let{address:l}=await this._proxy.create({accessToken:c,recoveryMethod:n,recoveryKey:o,recoveryPassword:e,recoveryAccessToken:t,recoverySecretOverride:i,iCloudRecordNameOverride:s,solanaAddress:d?.address});if(!l)throw Error("Failed to create wallet");return await this._privyInternal.refreshSession(a)}async createSolana(r){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let t=await this._privyInternal.getAccessToken();if(!t)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});r?.ethereumAccount&&await this.getProvider(r.ethereumAccount);let{publicKey:o}=await this._proxy.createSolana({accessToken:t,ethereumAddress:r?.ethereumAccount?.address});if(!o)throw new e({error:"Failed to create wallet",code:"embedded_wallet_creation_error"});return await this._privyInternal.refreshSession()}async delegateWallets({delegatedWallets:r,rootWallet:t}){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let o=await this._privyInternal.getAccessToken();if(!o)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.delegateWallets({accessToken:o,delegatedWallets:r,rootWallet:t})}async getProvider(e,r,t,o,i){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return new d({address:await this._load({wallet:e,entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier",recoveryPassword:r,recoveryKey:i,recoveryAccessToken:t,recoverySecretOverride:o}),privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}async getSolanaProvider(r,t,o,i,s,d){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_webview_not_loaded"});return await this._load({wallet:r,entropyId:t,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}),new a({publicKey:r.address,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:t,entropyIdVerifier:o,hdWalletIndex:r.wallet_index})}async setRecovery(e){let{wallet:r,...t}=e;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");i({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:"icloud-native"===t.recoveryMethod?"icloud":t.recoveryMethod}),await this._load("solana"===r.chain_type?{wallet:r,entropyId:r.address,entropyIdVerifier:"solana-address-verifier"}:{wallet:r,entropyId:r.address,entropyIdVerifier:"ethereum-address-verifier"});let o=await this._privyInternal.getAccessToken();if(!o)throw Error("User must be logged in to interact with embedded wallets");let s=r.recovery_method;this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_started",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});try{let e;if("user-passcode"===t.recoveryMethod)e={recoveryMethod:"user-passcode",recoveryPassword:t.password};else if("google-drive"===t.recoveryMethod)e={recoveryMethod:"google-drive",recoveryAccessToken:t.recoveryAccessToken};else if("icloud"===t.recoveryMethod)e={recoveryMethod:"icloud",recoveryAccessToken:t.recoveryAccessToken};else if("icloud-native"===t.recoveryMethod)e={recoveryMethod:"icloud-native",iCloudRecordNameOverride:t.iCloudRecordNameOverride,recoverySecretOverride:t.recoverySecretOverride};else{if("privy"!==t.recoveryMethod)throw Error(`Unknown recovery method: ${t.recoveryMethod}`);e={recoveryMethod:"privy"}}await this._proxy.setRecovery({accessToken:o,entropyId:r.address,entropyIdVerifier:"solana"===r.chain_type?"solana-address-verifier":"ethereum-address-verifier",...e}),this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_completed",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});let{user:i}=await this._privyInternal.refreshSession();return{user:i,provider:"ethereum"!==r.chain_type?null:new d({address:r.address,privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}}catch(e){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_failed",{address:r.address,recovery_method:r.recovery_method,error:e instanceof Error?e.message:"Unable to recover wallet"}),e}}getURL(){let e=new URL(`${this._privyInternal.baseUrl}/apps/${this._privyInternal.appId}/embedded-wallets`);return this._privyInternal.caid&&e.searchParams.append("caid",this._privyInternal.caid),this._privyInternal.appClientId&&e.searchParams.append("client_id",this._privyInternal.appClientId),e.href}get chains(){return this._chains}onMessage(e){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return this._proxy.handleEmbeddedWalletMessages(e)}async ping(e){try{if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return await this._proxy.ping(e),!0}catch(e){return console.error(e),!1}}async _load({entropyId:e,entropyIdVerifier:r,wallet:t,recoveryPassword:i,recoveryKey:s,recoveryAccessToken:d,recoverySecretOverride:a}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let n=await this._privyInternal.getAccessToken();if(!n)throw Error("User must be logged in to interact with embedded wallets");try{return await this._proxy.connect({accessToken:n,entropyId:e,entropyIdVerifier:r}),e}catch(c){if(o(c))try{if("privy"===t.recovery_method){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("user-passcode"===t.recovery_method&&i){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryPassword:i,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if(["google-drive","icloud"].includes(t.recovery_method)&&d){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryAccessToken:d,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("icloud"===t.recovery_method&&a){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:"icloud-native"});let o=await this._proxy.recover({accessToken:n,recoverySecretOverride:a,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:"icloud-native"}),o.entropyId}if("recovery-encryption-key"===t.recovery_method&&s){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryKey:s,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}}catch(r){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_failed",{address:t.address,recovery_method:t.recovery_method,error:r instanceof Error?r.message:`Unable to recover wallet: ${e}`}),r}throw c}}constructor(e,t,o,i,d){this._chains=Array.from(r),this._privyInternal=e,t&&(this._proxy=new s(t,d),i.setProxy(this._proxy)),o&&(this._chains=o),this._mfa=i,this._mfaPromises=d}}export{n as default};
1
+ import{PrivyClientError as e}from"../Error.mjs";import{DEFAULT_SUPPORTED_CHAINS as r}from"../chains/index.mjs";import{EmbeddedBitcoinWalletProvider as t}from"../embedded/EmbeddedBitcoinWalletProvider.mjs";import{errorIndicatesRecoveryIsNeeded as o}from"../embedded/errors.mjs";import{throwIfInvalidRecoveryUpgradePath as i}from"../embedded/utils/index.mjs";import{EmbeddedWalletProxy as s}from"../embedded/EmbeddedWalletProxy.mjs";import{EmbeddedWalletProvider as d}from"../embedded/EmbeddedWalletProvider.mjs";import{EmbeddedSolanaWalletProvider as a}from"../embedded/EmbeddedSolanaWalletProvider.mjs";import"../chains/arbitrum.mjs";import"../chains/arbitrumGoerli.mjs";import"../chains/arbitrumSepolia.mjs";import"../chains/avalanche.mjs";import"../chains/avalancheFuji.mjs";import"../chains/base.mjs";import"../chains/baseGoerli.mjs";import"../chains/baseSepolia.mjs";import"../chains/berachainArtio.mjs";import"../chains/celo.mjs";import"../chains/celoAlfajores.mjs";import"../chains/filecoin.mjs";import"../chains/filecoinCalibration.mjs";import"../chains/garnetHolesky.mjs";import"../chains/goerli.mjs";import"../chains/holesky.mjs";import"../chains/linea.mjs";import"../chains/lineaTestnet.mjs";import"../chains/mainnet.mjs";import"../chains/optimism.mjs";import"../chains/optimismGoerli.mjs";import"../chains/optimismSepolia.mjs";import"../chains/polygon.mjs";import"../chains/polygonMumbai.mjs";import"../chains/redstone.mjs";import"../chains/redstoneHolesky.mjs";import"../chains/sepolia.mjs";import"../chains/zora.mjs";import"../chains/zoraSepolia.mjs";import"../chains/zoraTestnet.mjs";import"../embedded/types.mjs";import"@ethersproject/abstract-signer";import"@ethersproject/providers";import"../embedded/gas/arbitrum.mjs";import"@ethersproject/bignumber";import"../embedded/utils/ethers.mjs";import"../embedded/gas/bsc.mjs";import"../embedded/gas/op-stack.mjs";import"@ethersproject/contracts";import"@ethersproject/transactions";import"../embedded/gas/polygon.mjs";import"@ethersproject/units";import"fetch-retry";import"../chains/polygonAmoy.mjs";import"../embedded/utils/gas.mjs";import"../utils/sleep.mjs";import"../embedded/EventCallbackQueue.mjs";import"../embedded/withMfa.mjs";import"eventemitter3";import"../embedded/methods.mjs";import"../solana/getWalletPublicKeyFromTransaction.mjs";import"../solana/isVersionedTransaction.mjs";class n{setMessagePoster(e){this._proxy=new s(e,this._mfaPromises),this._mfa.setProxy(this._proxy)}async add(r){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let t=await this._privyInternal.getAccessToken();if(!t)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.addWallet({accessToken:t,...r});let{user:o}=await this._privyInternal.refreshSession();return{user:o}}async getBitcoinProvider({wallet:e,entropyId:r,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(!await this._privyInternal.getAccessToken())throw Error("User must be logged in to create an embedded wallet");return await this._load({entropyId:r,entropyIdVerifier:o,wallet:e,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}),new t({account:e,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:r,entropyIdVerifier:o})}async create({password:e,recoveryMethod:r,recoveryToken:t,recoveryKey:o,recoverySecretOverride:i,iCloudRecordNameOverride:s,solanaAccount:d,skipCallbacks:a}){let n;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");if(n=r||(e?"user-passcode":"privy"),e&&"string"!=typeof e)throw Error("Invalid recovery password, must be a string");if("privy"===n&&this._privyInternal.config?.embedded_wallet_config.require_user_password_on_create)throw Error("Password not provided yet is required by App configuration");let c=await this._privyInternal.getAccessToken();if(!c)throw Error("User must be logged in to create an embedded wallet");let{address:l}=await this._proxy.create({accessToken:c,recoveryMethod:n,recoveryKey:o,recoveryPassword:e,recoveryAccessToken:t,recoverySecretOverride:i,iCloudRecordNameOverride:s,solanaAddress:d?.address});if(!l)throw Error("Failed to create wallet");return await this._privyInternal.refreshSession(a)}async createSolana(r){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let t=await this._privyInternal.getAccessToken();if(!t)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});r?.ethereumAccount&&await this.getProvider(r.ethereumAccount);let{publicKey:o}=await this._proxy.createSolana({accessToken:t,ethereumAddress:r?.ethereumAccount?.address});if(!o)throw new e({error:"Failed to create wallet",code:"embedded_wallet_creation_error"});return await this._privyInternal.refreshSession()}async delegateWallets({delegatedWallets:r,rootWallet:t}){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_creation_error"});let o=await this._privyInternal.getAccessToken();if(!o)throw new e({error:"User must be logged in to create an embedded wallet",code:"embedded_wallet_creation_error"});await this._proxy.delegateWallets({accessToken:o,delegatedWallets:r,rootWallet:t})}async getProvider(e,r,t,o,i){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return new d({address:await this._load({wallet:e,entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier",recoveryPassword:r,recoveryKey:i,recoveryAccessToken:t,recoverySecretOverride:o}),privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}async getSolanaProvider(r,t,o,i,s,d){if(!this._proxy)throw new e({error:"Embedded wallet proxy not initialized",code:"embedded_wallet_webview_not_loaded"});return await this._load({wallet:r,entropyId:t,entropyIdVerifier:o,recoveryPassword:i,recoveryAccessToken:s,recoverySecretOverride:d}),new a({publicKey:r.address,privyInternal:this._privyInternal,proxy:this._proxy,entropyId:t,entropyIdVerifier:o,hdWalletIndex:r.wallet_index})}async setRecovery(e){let{wallet:r,...t}=e;if(!this._proxy)throw Error("Embedded wallet proxy not initialized");i({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:"icloud-native"===t.recoveryMethod?"icloud":t.recoveryMethod}),await this._load("solana"===r.chain_type?{wallet:r,entropyId:r.address,entropyIdVerifier:"solana-address-verifier"}:{wallet:r,entropyId:r.address,entropyIdVerifier:"ethereum-address-verifier"});let o=await this._privyInternal.getAccessToken();if(!o)throw Error("User must be logged in to interact with embedded wallets");let s=r.recovery_method;this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_started",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});try{let e;if("user-passcode"===t.recoveryMethod)e={recoveryMethod:"user-passcode",recoveryPassword:t.password};else if("google-drive"===t.recoveryMethod)e={recoveryMethod:"google-drive",recoveryAccessToken:t.recoveryAccessToken};else if("icloud"===t.recoveryMethod)e={recoveryMethod:"icloud",recoveryAccessToken:t.recoveryAccessToken};else if("icloud-native"===t.recoveryMethod)e={recoveryMethod:"icloud-native",iCloudRecordNameOverride:t.iCloudRecordNameOverride,recoverySecretOverride:t.recoverySecretOverride};else if("recovery-encryption-key"===t.recoveryMethod)e={recoveryMethod:"recovery-encryption-key",recoveryKey:t.recoveryKey};else{if("privy"!==t.recoveryMethod)throw Error(`Unknown recovery method: ${t.recoveryMethod}`);e={recoveryMethod:"privy"}}await this._proxy.setRecovery({accessToken:o,entropyId:r.address,entropyIdVerifier:"solana"===r.chain_type?"solana-address-verifier":"ethereum-address-verifier",...e}),this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_completed",{address:r.address,target_recovery_method:t.recoveryMethod,existing_recovery_method:s});let{user:i}=await this._privyInternal.refreshSession();return{user:i,provider:"ethereum"!==r.chain_type?null:new d({address:r.address,privyInternal:this._privyInternal,chains:this._chains,walletProxy:this._proxy})}}catch(e){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_set_recovery_failed",{address:r.address,recovery_method:r.recovery_method,error:e instanceof Error?e.message:"Unable to recover wallet"}),e}}getURL(){let e=new URL(`${this._privyInternal.baseUrl}/apps/${this._privyInternal.appId}/embedded-wallets`);return this._privyInternal.caid&&e.searchParams.append("caid",this._privyInternal.caid),this._privyInternal.appClientId&&e.searchParams.append("client_id",this._privyInternal.appClientId),e.href}get chains(){return this._chains}onMessage(e){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return this._proxy.handleEmbeddedWalletMessages(e)}async ping(e){try{if(!this._proxy)throw Error("Embedded wallet proxy not initialized");return await this._proxy.ping(e),!0}catch(e){return console.error(e),!1}}async _load({entropyId:e,entropyIdVerifier:r,wallet:t,recoveryPassword:i,recoveryKey:s,recoveryAccessToken:d,recoverySecretOverride:a}){if(!this._proxy)throw Error("Embedded wallet proxy not initialized");let n=await this._privyInternal.getAccessToken();if(!n)throw Error("User must be logged in to interact with embedded wallets");try{return await this._proxy.connect({accessToken:n,entropyId:e,entropyIdVerifier:r}),e}catch(c){if(o(c))try{if("privy"===t.recovery_method){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("user-passcode"===t.recovery_method&&i){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryPassword:i,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if(["google-drive","icloud"].includes(t.recovery_method)&&d){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryAccessToken:d,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}if("icloud"===t.recovery_method&&a){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:"icloud-native"});let o=await this._proxy.recover({accessToken:n,recoverySecretOverride:a,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:"icloud-native"}),o.entropyId}if("recovery-encryption-key"===t.recovery_method&&s){this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_started",{address:t.address,recovery_method:t.recovery_method});let o=await this._proxy.recover({accessToken:n,recoveryKey:s,entropyId:e,entropyIdVerifier:r});return this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_completed",{address:t.address,recovery_method:t.recovery_method}),o.entropyId}}catch(r){throw this._privyInternal.createAnalyticsEvent("embedded_wallet_sdk_recovery_failed",{address:t.address,recovery_method:t.recovery_method,error:r instanceof Error?r.message:`Unable to recover wallet: ${e}`}),r}throw c}}constructor(e,t,o,i,d){this._chains=Array.from(r),this._privyInternal=e,t&&(this._proxy=new s(t,d),i.setProxy(this._proxy)),o&&(this._chains=o),this._mfa=i,this._mfaPromises=d}}export{n as default};
@@ -1 +1 @@
1
- import t from"fetch-retry";import{v4 as e}from"uuid";import{PrivyErrorCode as s}from"@privy-io/api-base";import{getPathWithParams as i,AppConfig as a,AnalyticsEvent as r,RefreshSession as n}from"@privy-io/public-api";import{PrivyClientError as o,PrivyApiError as h}from"../Error.mjs";import{Session as c}from"../Session.mjs";import l from"../toAbortSignalTimeout.mjs";import{toSearchParams as d}from"../utils/toSearchParams.mjs";import"eventemitter3";import"jose";import"js-cookie";import"../Token.mjs";import"../utils/allSettled.mjs";let p="privy:caid";class _{setCallbacks(t){this.callbacks={...this.callbacks,...t}}get isReady(){return!!this._config}get config(){return this._config}get caid(){return this._analyticsId}async _initialize(){if(this.isReady)this.callbacks?.setIsReady?.(!0);else{if(!await this.isStorageAccessible())throw new o({code:"storage_error",error:"Unable to access storage"});this._config=await this.getAppConfig(),this._config?.custom_api_url&&(this.baseUrl=this._config.custom_api_url,this.session.isUsingServerCookies=!0),this.callbacks?.setIsReady?.(!0),this.createAnalyticsEvent("sdk_initialize",{})}}async fetch(t,{body:e,params:s,query:a,headers:r,options:n={onRequest:this._beforeRequest.bind(this)}}){let o=new Request(`${this.baseUrl}${i(t.path,s)}${d(a)}`,{method:t.method,body:JSON.stringify(e),headers:r}),c=await n.onRequest(o),l=await this._fetch(o,c),p=await l.json();if(l.status>299)throw new h(p);return p}async _beforeRequestWithoutInitialize(t){let e=await this.session.getToken(),s=new Headers(t.headers);s.set("privy-app-id",this.appId),this.appClientId&&s.set("privy-client-id",this.appClientId),s.set("privy-client",this._sdkVersion),e&&s.set("Authorization",`Bearer ${e}`),s.set("Content-Type","application/json"),s.set("Accept","application/json");let i=await this._getOrGenerateClientAnalyticsId();return i&&s.set("privy-ca-id",i),this.nativeAppIdentifier&&s.set("x-native-app-identifier",this.nativeAppIdentifier),{signal:l(2e4),headers:s,credentials:"include"}}async beforeRequestWithoutRefresh(t){return await this._initialize(),this._beforeRequestWithoutInitialize(t)}async _beforeRequest(t){return await this._initialize(),await this.getAccessToken(),this.beforeRequestWithoutRefresh(t)}async getAppConfig(){return await this.fetch(a,{params:{app_id:this.appId},options:{onRequest:this._beforeRequestWithoutInitialize.bind(this)}})}async _getOrGenerateClientAnalyticsId(){if(this._analyticsId)return this._analyticsId;try{let t=await this._storage.get(p);if("string"==typeof t&&t.length>0)return this._analyticsId=t,t}catch(t){console.error("Unable to load clientId",t)}try{this._analyticsId=e()}catch(t){console.error("Unable to generate uuidv4",t)}if(!this._analyticsId)return null;try{await this._storage.put(p,this._analyticsId)}catch(t){console.error(`Unable to store clientId: ${this._analyticsId}`,t)}return this._analyticsId}async destroyClientAnalyticsId(){try{return await this._storage.del(p)}catch(t){console.error("Unable to delete clientId",t)}}async createAnalyticsEvent(t,e){try{await this.fetch(r,{body:{event_name:t,client_id:await this._getOrGenerateClientAnalyticsId(),payload:e},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}})}catch(t){}}async refreshSession(t=!1){let e=await this.session.getRefreshToken()??void 0,s=e??"key",i=this._cache.get(s);if(i)return console.debug("Found in-flight session refresh request, deduping"),await i;let a=this._refreshSession(e,t);this._cache.set(s,a);try{return await a}finally{this._cache.delete(s)}}async _refreshSession(t,e){let i=await this.session.getToken();if(!this.session.hasRefreshCredentials(i,t??null))throw await this._initialize(),new h({code:s.MISSING_OR_INVALID_TOKEN,error:"No tokens found in storage"});try{let s=await this.fetch(n,{body:{refresh_token:t},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}}),i=s.session_update_action;return e||this.callbacks?.setUser?.(s.user),"set"===i&&await this.session.updateWithTokensResponse(s),"clear"===i&&(await this.session.destroyLocalState(),e||this.callbacks?.setUser?.(null)),"ignore"===i&&s.token&&(await this.session.storeToken(s.token),s.identity_token&&await this.session.storeIdentityToken(s.identity_token)),s}catch(t){throw t instanceof h&&t.code===s.MISSING_OR_INVALID_TOKEN&&(await this.session.destroyLocalState(),e||this.callbacks?.setUser?.(null)),t}}async getAccessToken(){let[t,e]=await Promise.all([this.session.getToken(),this.session.getRefreshToken()]);return!this.session.tokenIsActive(t)&&this.session.hasRefreshCredentials(t,e)?(await this.refreshSession(),await this.session.getToken()):t}async getIdentityToken(){return await this.session.getIdentityToken()}async isStorageAccessible(){try{let t=`privy:__storage__test-${e()}`,s="blobby";await this._storage.put(t,s);let i=await this._storage.get(t);return await this._storage.del(t),i===s}catch(t){return console.error(t),!1}}constructor(e){this._sdkVersion="js-sdk-core:0.41.2",this._cache=new Map,this._storage=e.storage,this._analyticsId=null,this._getOrGenerateClientAnalyticsId(),this.baseUrl=e.baseUrl??"https://auth.privy.io",this.appId=e.appId,this.appClientId=e.appClientId,this._sdkVersion=e.sdkVersion??this._sdkVersion,this.callbacks=e.callbacks,this.nativeAppIdentifier=e.nativeAppIdentifier,this.session=new c({storage:this._storage,isUsingServerCookies:!1,appId:e.appId}),this._fetch=t(fetch,{retries:3,retryDelay:500}),this.session.on("error_storing_tokens",(t=>{this.createAnalyticsEvent("error_updating_tokens_in_storage",{reason:t})}))}}export{_ as PrivyInternal};
1
+ import t from"fetch-retry";import{v4 as e}from"uuid";import{PrivyErrorCode as s}from"@privy-io/api-base";import{getPathWithParams as i,AppConfig as a,AnalyticsEvent as r,RefreshSession as n}from"@privy-io/public-api";import{PrivyClientError as o,PrivyApiError as h}from"../Error.mjs";import{Session as c}from"../Session.mjs";import l from"../toAbortSignalTimeout.mjs";import{toSearchParams as d}from"../utils/toSearchParams.mjs";import"eventemitter3";import"jose";import"js-cookie";import"../Token.mjs";import"../utils/allSettled.mjs";let p="privy:caid";class _{setCallbacks(t){this.callbacks={...this.callbacks,...t}}get isReady(){return!!this._config}get config(){return this._config}get caid(){return this._analyticsId}async _initialize(){if(this.isReady)this.callbacks?.setIsReady?.(!0);else{if(!await this.isStorageAccessible())throw new o({code:"storage_error",error:"Unable to access storage"});this._config=await this.getAppConfig(),this._config?.custom_api_url&&(this.baseUrl=this._config.custom_api_url,this.session.isUsingServerCookies=!0),this.callbacks?.setIsReady?.(!0),this.createAnalyticsEvent("sdk_initialize",{})}}async fetch(t,{body:e,params:s,query:a,headers:r,options:n={onRequest:this._beforeRequest.bind(this)}}){let o=new Request(`${this.baseUrl}${i(t.path,s)}${d(a)}`,{method:t.method,body:JSON.stringify(e),headers:r}),c=await n.onRequest(o),l=await this._fetch(o,c),p=await l.json();if(l.status>299)throw new h(p);return p}async _beforeRequestWithoutInitialize(t){let e=await this.session.getToken(),s=new Headers(t.headers);s.set("privy-app-id",this.appId),this.appClientId&&s.set("privy-client-id",this.appClientId),s.set("privy-client",this._sdkVersion),e&&s.set("Authorization",`Bearer ${e}`),s.set("Content-Type","application/json"),s.set("Accept","application/json");let i=await this._getOrGenerateClientAnalyticsId();return i&&s.set("privy-ca-id",i),this.nativeAppIdentifier&&s.set("x-native-app-identifier",this.nativeAppIdentifier),{signal:l(2e4),headers:s,credentials:"include"}}async beforeRequestWithoutRefresh(t){return await this._initialize(),this._beforeRequestWithoutInitialize(t)}async _beforeRequest(t){return await this._initialize(),await this.getAccessToken(),this.beforeRequestWithoutRefresh(t)}async getAppConfig(){return await this.fetch(a,{params:{app_id:this.appId},options:{onRequest:this._beforeRequestWithoutInitialize.bind(this)}})}async _getOrGenerateClientAnalyticsId(){if(this._analyticsId)return this._analyticsId;try{let t=await this._storage.get(p);if("string"==typeof t&&t.length>0)return this._analyticsId=t,t}catch(t){console.error("Unable to load clientId",t)}try{this._analyticsId=e()}catch(t){console.error("Unable to generate uuidv4",t)}if(!this._analyticsId)return null;try{await this._storage.put(p,this._analyticsId)}catch(t){console.error(`Unable to store clientId: ${this._analyticsId}`,t)}return this._analyticsId}async destroyClientAnalyticsId(){try{return await this._storage.del(p)}catch(t){console.error("Unable to delete clientId",t)}}async createAnalyticsEvent(t,e){try{await this.fetch(r,{body:{event_name:t,client_id:await this._getOrGenerateClientAnalyticsId(),payload:e},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}})}catch(t){}}async refreshSession(t=!1){let e=await this.session.getRefreshToken()??void 0,s=e??"key",i=this._cache.get(s);if(i)return console.debug("Found in-flight session refresh request, deduping"),await i;let a=this._refreshSession(e,t);this._cache.set(s,a);try{return await a}finally{this._cache.delete(s)}}async _refreshSession(t,e){let i=await this.session.getToken();if(!this.session.hasRefreshCredentials(i,t??null))throw await this._initialize(),new h({code:s.MISSING_OR_INVALID_TOKEN,error:"No tokens found in storage"});try{let s=await this.fetch(n,{body:{refresh_token:t},options:{onRequest:this.beforeRequestWithoutRefresh.bind(this)}}),i=s.session_update_action;return e||this.callbacks?.setUser?.(s.user),"set"===i&&await this.session.updateWithTokensResponse(s),"clear"===i&&(await this.session.destroyLocalState(),e||this.callbacks?.setUser?.(null)),"ignore"===i&&s.token&&(await this.session.storeToken(s.token),s.identity_token&&await this.session.storeIdentityToken(s.identity_token)),s}catch(t){throw t instanceof h&&t.code===s.MISSING_OR_INVALID_TOKEN&&(await this.session.destroyLocalState(),e||this.callbacks?.setUser?.(null)),t}}async getAccessToken(){let[t,e]=await Promise.all([this.session.getToken(),this.session.getRefreshToken()]);return!this.session.tokenIsActive(t)&&this.session.hasRefreshCredentials(t,e)?(await this.refreshSession(),await this.session.getToken()):t}async getIdentityToken(){return await this.session.getIdentityToken()}async isStorageAccessible(){try{let t=`privy:__storage__test-${e()}`,s="blobby";await this._storage.put(t,s);let i=await this._storage.get(t);return await this._storage.del(t),i===s}catch(t){return console.error(t),!1}}constructor(e){this._sdkVersion="js-sdk-core:0.41.4",this._cache=new Map,this._storage=e.storage,this._analyticsId=null,this._getOrGenerateClientAnalyticsId(),this.baseUrl=e.baseUrl??"https://auth.privy.io",this.appId=e.appId,this.appClientId=e.appClientId,this._sdkVersion=e.sdkVersion??this._sdkVersion,this.callbacks=e.callbacks,this.nativeAppIdentifier=e.nativeAppIdentifier,this.session=new c({storage:this._storage,isUsingServerCookies:!1,appId:e.appId}),this._fetch=t(fetch,{retries:3,retryDelay:500}),this.session.on("error_storing_tokens",(t=>{this.createAnalyticsEvent("error_updating_tokens_in_storage",{reason:t})}))}}export{_ as PrivyInternal};
@@ -1 +1 @@
1
- import{VoidSigner as r}from"@ethersproject/abstract-signer";import{StaticJsonRpcProvider as t}from"@ethersproject/providers";import{PrivyConnectorError as e}from"../errors.mjs";import{isArbitrum as i,defaultGasForArbitrum as p}from"../gas/arbitrum.mjs";import{isBsc as s,defaultGasForBsc as o}from"../gas/bsc.mjs";import{isOpStack as a,defaultGasForOpStack as n}from"../gas/op-stack.mjs";import{isPolygon as m,defaultGasForPolygon as c}from"../gas/polygon.mjs";import{defaultGasLimit as l,defaultGasForEvmChain as h}from"./gas.mjs";import"../types.mjs";import"@ethersproject/bignumber";import"../../chains/arbitrum.mjs";import"../../chains/arbitrumGoerli.mjs";import"../../chains/arbitrumSepolia.mjs";import"./ethers.mjs";import"@ethersproject/contracts";import"@ethersproject/transactions";import"../../chains/base.mjs";import"../../chains/baseGoerli.mjs";import"../../chains/baseSepolia.mjs";import"../../chains/optimism.mjs";import"../../chains/optimismGoerli.mjs";import"../../chains/optimismSepolia.mjs";import"../../chains/zora.mjs";import"../../chains/zoraSepolia.mjs";import"../../chains/zoraTestnet.mjs";import"@ethersproject/units";import"fetch-retry";import"../../chains/polygon.mjs";import"../../chains/polygonAmoy.mjs";import"../../chains/polygonMumbai.mjs";const u=(r,i,p,s)=>{let o=Number(r),a=i.find((r=>r.id===o));if(!a)throw new e(`Unsupported chainId ${r}`,4901);return new t(a.rpcUrls.privyWalletOverride&&a.rpcUrls.privyWalletOverride.http[0]?a.rpcUrls.privyWalletOverride.http[0]:p.rpcUrls&&p.rpcUrls[o]?p.rpcUrls[o]:a.rpcUrls.privy?.http[0]?{url:a.rpcUrls.privy.http[0],headers:{"privy-app-id":s.appId}}:a.rpcUrls.public?.http[0]?a.rpcUrls.public?.http[0]:a.rpcUrls.default?.http[0])},d=(r,t,i)=>{let p,s=r.id,o=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])p=r.rpcUrls.privyWalletOverride.http[0];else if(t.rpcUrls&&t.rpcUrls[o])p=t.rpcUrls[o];else if(r.rpcUrls.privy?.http[0]){let t=new URL(r.rpcUrls.privy.http[0]);t.searchParams.append("privyAppId",i),p=t.toString()}else p=r.rpcUrls.public?.http[0]?r.rpcUrls.public.http[0]:r.rpcUrls.default?.http[0];if(!p)throw new e(`No RPC url found for ${s}`);return p};function y(r){return/^-?0x[a-f0-9]+$/i.test(r)}function f(r){for(let t of["gasLimit","gasPrice","value","maxPriorityFeePerGas","maxFeePerGas"]){let e=r[t];if(void 0!==e&&!function(r){let t="number"==typeof r,e="bigint"==typeof r,i="string"==typeof r&&y(r);return t||e||i}(e))throw Error(`Transaction request property '${t}' 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")}async function g(t,e,u){if(e.chainId=Number(e.chainId),f(e),e.from||(e.from=t),!e.nonce){let i=new r(t,u);e.nonce=await i.getTransactionCount("pending")}return e.gasLimit||(e.gas?(e.gasLimit=e.gas,delete e.gas):e.gasLimit=await l(e,u)),"string"==typeof e.type&&y(e.type)&&(e.type=Number(e.type)),[23294,23295].includes(e.chainId)&&(e.type=0),0===(e=m(e.chainId)?await c(e):i(e.chainId)?await p(e,u):a(e.chainId)?await n(e,u):s(e.chainId)?await o(e,u):await h(e,u)).type&&delete e.accessList,2!==e.type&&(delete e.maxPriorityFeePerGas,delete e.maxFeePerGas),e}function j({currentRecoveryMethod:r,upgradeToRecoveryMethod:t}){switch(r){case"privy":case"user-passcode":return!0;case"icloud":case"google-drive":if(r===t)throw Error("Cannot upgrade to the existing cloud platform");return!0;default:throw Error("Unknown recovery method")}}export{d as getJsonRpcEndpointFromChain,u as getJsonRpcProvider,g as populateTransactionRequest,j as throwIfInvalidRecoveryUpgradePath,f as validateTransactionRequest};
1
+ import{VoidSigner as r}from"@ethersproject/abstract-signer";import{StaticJsonRpcProvider as t}from"@ethersproject/providers";import{PrivyConnectorError as e}from"../errors.mjs";import{isArbitrum as i,defaultGasForArbitrum as p}from"../gas/arbitrum.mjs";import{isBsc as s,defaultGasForBsc as o}from"../gas/bsc.mjs";import{isOpStack as a,defaultGasForOpStack as n}from"../gas/op-stack.mjs";import{isPolygon as m,defaultGasForPolygon as c}from"../gas/polygon.mjs";import{defaultGasLimit as l,defaultGasForEvmChain as h}from"./gas.mjs";import"../types.mjs";import"@ethersproject/bignumber";import"../../chains/arbitrum.mjs";import"../../chains/arbitrumGoerli.mjs";import"../../chains/arbitrumSepolia.mjs";import"./ethers.mjs";import"@ethersproject/contracts";import"@ethersproject/transactions";import"../../chains/base.mjs";import"../../chains/baseGoerli.mjs";import"../../chains/baseSepolia.mjs";import"../../chains/optimism.mjs";import"../../chains/optimismGoerli.mjs";import"../../chains/optimismSepolia.mjs";import"../../chains/zora.mjs";import"../../chains/zoraSepolia.mjs";import"../../chains/zoraTestnet.mjs";import"@ethersproject/units";import"fetch-retry";import"../../chains/polygon.mjs";import"../../chains/polygonAmoy.mjs";import"../../chains/polygonMumbai.mjs";const u=(r,i,p,s)=>{let o=Number(r),a=i.find((r=>r.id===o));if(!a)throw new e(`Unsupported chainId ${r}`,4901);return new t(a.rpcUrls.privyWalletOverride&&a.rpcUrls.privyWalletOverride.http[0]?a.rpcUrls.privyWalletOverride.http[0]:p.rpcUrls&&p.rpcUrls[o]?p.rpcUrls[o]:a.rpcUrls.privy?.http[0]?{url:a.rpcUrls.privy.http[0],headers:{"privy-app-id":s.appId}}:a.rpcUrls.public?.http[0]?a.rpcUrls.public?.http[0]:a.rpcUrls.default?.http[0])},d=(r,t,i)=>{let p,s=r.id,o=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])p=r.rpcUrls.privyWalletOverride.http[0];else if(t.rpcUrls&&t.rpcUrls[o])p=t.rpcUrls[o];else if(r.rpcUrls.privy?.http[0]){let t=new URL(r.rpcUrls.privy.http[0]);t.searchParams.append("privyAppId",i),p=t.toString()}else p=r.rpcUrls.public?.http[0]?r.rpcUrls.public.http[0]:r.rpcUrls.default?.http[0];if(!p)throw new e(`No RPC url found for ${s}`);return p};function y(r){return/^-?0x[a-f0-9]+$/i.test(r)}function f(r){for(let t of["gasLimit","gasPrice","value","maxPriorityFeePerGas","maxFeePerGas"]){let e=r[t];if(void 0!==e&&!function(r){let t="number"==typeof r,e="bigint"==typeof r,i="string"==typeof r&&y(r);return t||e||i}(e))throw Error(`Transaction request property '${t}' 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")}async function g(t,e,u){if(e.chainId=Number(e.chainId),f(e),e.from||(e.from=t),!e.nonce){let i=new r(t,u);e.nonce=await i.getTransactionCount("pending")}return e.gasLimit||(e.gas?(e.gasLimit=e.gas,delete e.gas):e.gasLimit=await l(e,u)),"string"==typeof e.type&&y(e.type)&&(e.type=Number(e.type)),[23294,23295].includes(e.chainId)&&(e.type=0),0===(e=m(e.chainId)?await c(e):i(e.chainId)?await p(e,u):a(e.chainId)?await n(e,u):s(e.chainId)?await o(e,u):await h(e,u)).type&&delete e.accessList,2!==e.type&&(delete e.maxPriorityFeePerGas,delete e.maxFeePerGas),e}function j({currentRecoveryMethod:r,upgradeToRecoveryMethod:t}){switch(r){case"privy":case"user-passcode":case"recovery-encryption-key":return!0;case"icloud":case"google-drive":if(r===t)throw Error("Cannot upgrade to the existing cloud platform");return!0;default:throw Error("Unknown recovery method")}}export{d as getJsonRpcEndpointFromChain,u as getJsonRpcProvider,g as populateTransactionRequest,j as throwIfInvalidRecoveryUpgradePath,f as validateTransactionRequest};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@privy-io/js-sdk-core",
3
- "version": "0.41.2",
3
+ "version": "0.41.4",
4
4
  "description": "Vanilla JS client for the Privy Auth API",
5
5
  "keywords": [
6
6
  "authentication",
@@ -69,7 +69,7 @@
69
69
  "@ethersproject/transactions": "^5.7.0",
70
70
  "@ethersproject/units": "^5.7.0",
71
71
  "@privy-io/api-base": "^1.4.3",
72
- "@privy-io/public-api": "2.18.3",
72
+ "@privy-io/public-api": "2.18.4",
73
73
  "eventemitter3": "^5.0.1",
74
74
  "fetch-retry": "^5.0.6",
75
75
  "jose": "^4.15.5",