@privy-io/expo 0.22.0 → 0.22.1-beta-20240731190849

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.
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var rt=Object.defineProperty,ot=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var we=Object.getOwnPropertySymbols;var nt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;var he=(e,t,o)=>t in e?rt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,R= exports.a =(e,t)=>{for(var o in t||(t={}))nt.call(t,o)&&he(e,o,t[o]);if(we)for(var o of we(t))it.call(t,o)&&he(e,o,t[o]);return e},H= exports.b =(e,t)=>ot(e,at(t));var p=(e,t,o)=>new Promise((r,l)=>{var a=i=>{try{c(o.next(i))}catch(s){l(s)}},d=i=>{try{c(o.throw(i))}catch(s){l(s)}},c=i=>i.done?r(i.value):Promise.resolve(i.value).then(a,d);c((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var Ye = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var D = _interopRequireWildcard(_expolinking); var ee = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking); var L = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var A = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var X = _interopRequireWildcard(_expowebbrowser); var Ie = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _expocrypto = require('expo-crypto');var Ee={name:"@privy-io/expo",version:"0.22.1-beta-20240731190849",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{"@privy-io/expo-native-extensions":"0.0.1-beta-20240731190849",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.25.1-beta-20240731190849","react-fast-compare":"^3.2.2"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@tsconfig/node16-strictest-esm":"^1.0.3",tsup:"^6.2.3",typescript:"~5.5.3"},author:"privy.io",publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var We=({client:e,isClientReady:t,setWebViewState:o,webViewState:r,logLevel:l})=>{let a=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{a.current&&r==="loaded"&&e.setMessagePoster(a.current)},[e,a.current,r==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",i=>p(void 0,null,function*(){a.current&&i==="active"&&((yield e.embeddedWallet.ping(150))||(a.current.reload(),o("reloading")))})).remove,[]);let d=_react.useCallback.call(void 0, c=>p(void 0,null,function*(){let{data:i}=c.nativeEvent,s=e.embeddedWallet.getMessageHandler();s==null||s(JSON.parse(i))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:a,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:d}):null};function Q(s){return p(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:d,recoverySecretOverride:c,iCloudRecordNameOverride:i}){var u,b;switch(r){case"user-passcode":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c||!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let n=r==="icloud"?"icloud-native":r;try{let{provider:v,user:f}=yield e.embeddedWallet.create(a,n,d,c,i),w=_jssdkcore.getUserEmbeddedWallet.call(void 0, f);return(b=(u=o.current)==null?void 0:u.onSuccess)==null||b.call(u,v),t({status:"connected",provider:v,account:w}),l({status:"initial"}),v}catch(v){let f=v instanceof Error?v.message:"Error creating embedded wallet";throw t({status:"error",error:f,account:null}),l({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:f})}})}function _e(a){return p(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var d,c;t({status:"creating"});try{let i=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(c=(d=o.current)==null?void 0:d.onSuccess)==null||c.call(d,i),t({status:"connected",publicKey:i._publicKey}),r({status:"initial"}),i}catch(i){let s=i instanceof Error?i.message:"Error creating embedded wallet";throw t({status:"error",error:s}),r({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:s})}})}function Z(s){return p(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:d,recoveryToken:c,recoverySecretOverride:i}){var n,u,b,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(l){case"user-passcode":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let f=yield e.embeddedWallet.getProvider(t,d,c,i);return o({status:"connected",provider:f,account:t}),a({status:"initial"}),(u=(n=r.current)==null?void 0:n.onSuccess)==null||u.call(n,f),f}catch(f){o({status:"needs-recovery",account:t}),a({status:"initial"});let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(v=(b=r.current)==null?void 0:b.onError)==null||v.call(b,w),w}})}function Ce(a){return p(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var d,c,i,s;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let n=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:n._publicKey}),l({status:"initial"}),(c=(d=r.current)==null?void 0:d.onSuccess)==null||c.call(d,n),n}catch(n){o({status:"needs-recovery"}),l({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(s=(i=r.current)==null?void 0:i.onError)==null||s.call(i,u),u}})}var Ae=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:c})=>{let i=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),s=_react.useMemo.call(void 0, ()=>{var v;return(v=_jssdkcore.getUserEmbeddedWallet.call(void 0, t))!=null?v:void 0},[t]),n=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){return yield _e({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l,ethereumAccount:s})}),[e,d,s]),u=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Ce({client:e,solanaAccount:i,setSolanaWallet:r,recoverSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l})}),[e,i]),b=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!i)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(v=>v.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let v=yield e.embeddedWallet.getSolanaProvider(i);return r({status:"connected",publicKey:v._publicKey}),v}catch(v){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, v)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):v instanceof Error?(r({status:"error",error:v.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:v.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&b().catch(()=>{})},[a,t,i]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&b()},[o.status]),{create:n,recover:u,getProvider:b}};function xe(){return p(this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function le(r){return p(this,arguments,function*({user:e,appId:t,client:o}){if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let l=yield xe(),a=yield o.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(a==null?void 0:a.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});let{recoverySecret:c,iCloudRecordName:i}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:c,iCloudRecordName:i}})}function Pe(o){return p(this,arguments,function*({walletAddress:e,client:t}){if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let r=yield xe(),a=(yield t.recovery.getRecoveryKeyMaterial(e)).icloud_record_name;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let d=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),c=d==null?void 0:d.container_identifier;if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});let{recoverySecret:i}=yield r.readRecoverySecretFromICloud({containerId:c,recordName:a});return{recoverySecret:i}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Ue=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function k(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var _r=e=>new Promise(t=>setTimeout(t,e));function Or(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",r=>{e.current=r}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function te(l){return p(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:r}){try{let a;switch(e){case"google-drive":{let{url:s}=yield o.recovery.auth.generateURL(ee.createURL(t||"/"));a=s;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let d=yield Ie.openAuthSessionAsync(a);if(_reactnative.Platform.OS==="android")return;if(d.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=ee.parse(d.url),i;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:n}=c;if(!n||!s)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ue({oAuthCode:n,oAuthState:s,client:o});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return i}catch(a){throw r==null||r(k(a)),a}})}function ue(r){return p(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:l}=yield o.recovery.auth.authorize(e,t);if(!l)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return l})}function re(a){return p(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var d,c,i,s;try{let{provider:n,user:u}=yield e.embeddedWallet.setRecovery(t),b=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return l({status:"connected",provider:n,account:b}),(c=(d=o.current)==null?void 0:d.onSuccess)==null||c.call(d,n),r({status:"initial"}),n}catch(n){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:n instanceof Error?n.message:"Error setting password on embedded wallet"});throw(s=(i=o.current)==null?void 0:i.onError)==null||s.call(i,u),r({status:"initial"}),u}})}function Le(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Me=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:d,createWalletCallbacks:c,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:s})=>{let n=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, y=>p(void 0,null,function*(){var O;if(n)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:m}=Le(y),h,_,E;if(m==="google-drive"&&(h=yield te({provider:m,client:e,onError:(O=c.current)==null?void 0:O.onError}),a({status:"creating-wallet"}),!h))return null;if(m==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:x,iCloudRecordName:P}=yield le({user:t,appId:o,client:e});_=x,E=P}return yield Q({client:e,setWallet:l,createWalletCallbacks:c,recoveryMethod:m,setRecoveryFlowState:a,password:S,recoverySecretOverride:_,iCloudRecordNameOverride:E})}),[e,n,t]),b=_react.useCallback.call(void 0, y=>p(void 0,null,function*(){var h;if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:y.recoveryMethod});let S,m;switch(y.recoveryMethod){case"user-passcode":m=H(R({},y),{wallet:n,password:y.password});break;case"google-drive":if(S=yield te({provider:y.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;m={recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:S};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:E}=yield le({user:t,appId:o,client:e});m={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:E,wallet:n};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return re({client:e,recoveryInput:m,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,n,r.status,t]),v=_react.useCallback.call(void 0, y=>p(void 0,null,function*(){return b({recoveryMethod:"user-passcode",password:y})}),[e,n,r.status]),f=_react.useCallback.call(void 0, y=>p(void 0,null,function*(){var E;if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:m}=Le(y),h,_;if(m==="google-drive"&&(h=yield te({provider:m,client:e,onError:(E=i.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(m==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:O}=yield Pe({client:e,walletAddress:n.address});_=O}return Z({client:e,account:n,setWallet:l,recoverWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:_})}),[e,n]),w=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!n)throw l({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(y=>y.status==="connected"?{status:"reconnecting",account:n}:{status:"connecting",account:n});try{let y=yield e.embeddedWallet.getProvider(n);return l({status:"connected",provider:y,account:n}),y}catch(y){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, y)?(l({status:"needs-recovery",account:n}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):y instanceof Error?(l({status:"error",error:y.message,account:n}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:y.message})):(l({status:"error",error:"Error loading embedded wallet",account:n}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});d==="loaded"&&w().catch(()=>{})},[d,t,n]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&w()},[r.status]),{create:u,recover:f,setPassword:v,setRecovery:b,getProvider:w}};var De=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>p(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:c,isLoading:i}=r;if(!(!o||i))try{let s=yield c();if(!s&&t){yield e.auth.logout(),a({status:"done"});return}if(!s){a({status:"done"});return}if(t){a({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(s))){yield e.auth.logout(),a({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}a({status:"done"})}catch(s){if(console.log("Error syncing with custom auth provider",s),a({status:"error",error:s}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,r==null?void 0:r.enabled,r==null?void 0:r.getCustomAccessToken,r==null?void 0:r.isLoading]),{customAuthState:l,customAuthStateIsSettled:l.status!=="loading"&&l.status!=="initial"}};var je=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:d})=>{let c=F.useURL(),i=_react.useCallback.call(void 0, s=>{var u,b;let n=k(s);a({status:"error",error:n}),(b=(u=l.current).onError)==null||b.call(u,n)},[a]);return _react.useEffect.call(void 0, ()=>{function s(){return p(this,null,function*(){var v,f;if(!c||r.status!=="loading"||d.status!=="initial")return;let{queryParams:n}=F.parse(c),{privy_oauth_state:u,privy_oauth_code:b}=n;if(!b||!u){a({status:"done"});return}try{let w,y;if(t)w=yield e.auth.oauth.linkWithCode(b,u);else{let S=yield e.auth.oauth.loginWithCode(b,u);w=S.user,y=!!S.is_new_user}return(f=(v=l.current).onSuccess)==null||f.call(v,w,y),a({status:"done"}),yield F.openURL(c.split("?")[0])}catch(w){i(w)}})}_reactnative.Platform.OS==="android"&&o&&s()},[c,o])};var Ne=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:d,setRecoveryFlowState:c,setWallet:i,appStateVisible:s,webViewLoaded:n})=>{let u=L.useURL(),b=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, f=>{var y,S,m,h;let w=k(f);a.status==="creating-wallet"?(S=(y=o.current).onError)==null||S.call(y,k(w)):(h=(m=r.current).onError)==null||h.call(m,k(w)),c({status:"initial"})},[a]);return _react.useEffect.call(void 0, ()=>{function f(){return p(this,null,function*(){if(!u&&a.status!=="initial"&&s&&v(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||d.status!=="initial"||!s||!n)return;let{queryParams:w}=L.parse(u),{privy_oauth_state:y,privy_oauth_code:S}=w;if(!(!S||!y)){yield L.openURL(u.split("?")[0]);try{let m=yield ue({oAuthCode:S,oAuthState:y,client:e});if(a.status==="creating-wallet")yield Q({client:e,setWallet:i,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:c,recoveryToken:m});else if(a.status==="upgrading-recovery"){if(!b)throw new Error("Embedded wallet not found");yield re({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:b,recoveryAccessToken:m},setWalletRecoveryCallbacks:l,setRecoveryFlowState:c,setWallet:i})}else yield Z({client:e,account:b,setWallet:i,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:c,recoveryToken:m})}catch(m){v(m)}}})}_reactnative.Platform.OS==="android"&&f()},[u,a.status,s,n])};var Ve=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>p(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var me=_react.createContext.call(void 0, {}),ae;function Do(){return ae?ae.getAccessToken():Promise.resolve(null)}var jo=e=>{var fe;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let I=_reactnative.AppState.addEventListener("change",tt=>{o(tt==="active")});return()=>{I.remove()}},[]);let[r,l]=_react.useState.call(void 0, !1),[a,d]=_react.useState.call(void 0, "loading"),[c,i]=_react.useState.call(void 0, !1),[s,n]=_react.useState.call(void 0, null),[u,b]=_react.useState.call(void 0, {status:"disconnected",account:null}),[v,f]=_react.useState.call(void 0, {status:"disconnected"}),[w,y]=_react.useState.call(void 0, {status:"initial"}),[S,m]=_react.useState.call(void 0, {status:"initial"}),[h,_]=_react.useState.call(void 0, {status:"initial"}),[E,O]=_react.useState.call(void 0, {status:"initial"}),[x,P]=_react.useState.call(void 0, {status:"initial"}),[j,N]=_react.useState.call(void 0, {status:"initial"}),[V,J]=_react.useState.call(void 0, {status:"initial"}),be=_react.useRef.call(void 0, {}),ne=_react.useRef.call(void 0, {}),ie=_react.useRef.call(void 0, {}),de=_react.useRef.call(void 0, {}),ve=_react.useRef.call(void 0, {}),Se=_react.useRef.call(void 0, {}),$=_react.useCallback.call(void 0, I=>{if(I)return Ue(n)(I);n(null),y({status:"initial"}),m({status:"initial"}),b({status:"disconnected",account:null})},[]),g=_react.useMemo.call(void 0, ()=>{let I=e.storage||Be;return ae=new (0, _jssdkcore2.default)({storage:Ke(I),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:qe(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ee.version}`,callbacks:{setUser:$,setIsReady:i},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),ae},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,$]),Xe=_react.useCallback.call(void 0, ()=>($(null),g.auth.logout()),[$,g]),Je=_react.useCallback.call(void 0, ()=>g.getAccessToken(),[g]),$e=_react.useCallback.call(void 0, ()=>g.getIdentityToken(),[g]);Ve({client:g,isUserInitialized:r,setIsUserInitialized:l});let Qe=Me({client:g,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,setRecoveryFlowState:_,wallet:u,setWallet:b}),Ze=Ae({client:g,user:s,webViewState:a,createSolanaWalletCallbacks:ve,recoverSolanaWalletCallbacks:Se,setSolanaRecoveryFlowState:O,solanaWallet:v,setSolanaWallet:f});je({client:g,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:m,oAuthCallbacks:be,recoveryFlowState:h}),Ne({client:g,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,recoveryFlowState:h,oAuthState:S,setRecoveryFlowState:_,setWallet:b,appStateVisible:t});let{customAuthStateIsSettled:et}=De({client:g,user:s,isReady:r,customAuth:(fe=e.config)==null?void 0:fe.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(me.Provider,{value:{client:g,user:s,isReady:a!=="loading"&&r&&ze(S)&&et,logout:Xe,getAccessToken:Je,getIdentityToken:$e,wallet:R(R({},u),Qe),solanaWallet:R(R({},v),Ze),oAuthState:S,oAuthCallbacks:be,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:E,setSolanaRecoveryFlowState:O,createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,createSolanaWalletCallbacks:ve,recoverSolanaWalletCallbacks:Se,setOAuthState:m,siweState:x,setSiweState:P,otpState:w,setOtpState:y,passkeyState:j,setPasskeyState:N,farcasterState:V,setFarcasterState:J}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(We,{logLevel:e.logLevel,client:g,isClientReady:c,setWebViewState:d,webViewState:a})))};var ze=e=>e.status!=="loading",ye=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a}=_react.useContext.call(void 0, me),d=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{l.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let c=_react.useCallback.call(void 0, s=>{var u;let n=k(s);return r({status:"error",error:n}),(u=e==null?void 0:e.onError)==null||u.call(e,n),n},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(v){return p(this,arguments,function*({provider:n,redirectUri:u,isLegacyAppleIosBehaviorEnabled:b=!1}){var f,w,y;r({status:"loading"});try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:S}=yield a.auth.oauth.generateURL(n,D.createURL(u||"/")),m,h;if(_reactnative.Platform.OS==="ios"&&n==="apple"&&!b){let N=(f=new URL(S).searchParams.get("state"))!=null?f:"",V=yield Ye.signInAsync({state:N});if(!V.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let J=yield a.auth.oauth.loginWithCode(V.authorizationCode,N,n,"raw");m=J.user,h=J.is_new_user}else m=yield a.auth.oauth.linkWithCode(V.authorizationCode,N,n,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,h),r({status:"done"}),m!=null?m:void 0}let _=_reactnative.Platform.OS==="android"?S.replace("x.com","twitter.com"):S,E=yield X.openAuthSessionAsync(_);if(_reactnative.Platform.OS==="android")return;if(E.type!=="success")throw[X.WebBrowserResultType.CANCEL,X.WebBrowserResultType.DISMISS].includes(E.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:d?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:d?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=D.parse(E.url),{privy_oauth_state:x,privy_oauth_code:P}=O;if(!P||!x)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let j=yield a.auth.oauth.loginWithCode(P,x,n);m=j.user,h=j.is_new_user}else m=yield a.auth.oauth.linkWithCode(P,x,n);return(y=e==null?void 0:e.onSuccess)==null||y.call(e,m,h),yield D.openURL(E.url.split("?")[0]),r({status:"done"}),m!=null?m:void 0}catch(S){c(S)}})},[t,a,r,c]),state:o}};function Yo(e){let{state:t,start:o}=ye(H(R({},e),{action:"login"}));return{state:t,login:o}}function Xo(e){let{state:t,start:o}=ye(H(R({},e),{action:"link"}));return{state:t,link:o}}function Jo(e){return ye(e)}var qe=()=>_expoapplication.applicationId;function Ke(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,o){return e.put(t.replaceAll(":","-"),o)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>p(this,null,function*(){return[]})}}var Be={get(e){return A.getItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return A.setItemAsync(e,t,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return A.deleteItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>p(void 0,null,function*(){return[]})};function Zo(e){return e.status==="connected"}function ea(e){return e.status==="reconnecting"}function ta(e){return e.status==="connecting"}function ra(e){return e.status==="disconnected"}function oa(e){return e.status==="not-created"}function aa(e){return e.status==="creating"}function na(e){return e.status==="error"}function ia(e){return e.status==="needs-recovery"}exports.a = R; exports.b = H; exports.c = p; exports.d = k; exports.e = _r; exports.f = Or; exports.g = Yo; exports.h = Xo; exports.i = Jo; exports.j = Be; exports.k = me; exports.l = Do; exports.m = jo; exports.n = Zo; exports.o = ea; exports.p = ta; exports.q = ra; exports.r = oa; exports.s = aa; exports.t = na; exports.u = ia;
@@ -0,0 +1 @@
1
+ var rt=Object.defineProperty,ot=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var we=Object.getOwnPropertySymbols;var nt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;var he=(e,t,o)=>t in e?rt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,R=(e,t)=>{for(var o in t||(t={}))nt.call(t,o)&&he(e,o,t[o]);if(we)for(var o of we(t))it.call(t,o)&&he(e,o,t[o]);return e},H=(e,t)=>ot(e,at(t));var p=(e,t,o)=>new Promise((r,l)=>{var a=i=>{try{c(o.next(i))}catch(s){l(s)}},d=i=>{try{c(o.throw(i))}catch(s){l(s)}},c=i=>i.done?r(i.value):Promise.resolve(i.value).then(a,d);c((o=o.apply(e,t)).next())});import*as Ye from"expo-apple-authentication";import{applicationId as Bt}from"expo-application";import*as D from"expo-linking";import*as A from"expo-secure-store";import*as X from"expo-web-browser";import{useCallback as Ge,useContext as Gt,useEffect as Yt}from"react";import{Platform as pe}from"react-native";import{PrivyClientError as T}from"@privy-io/js-sdk-core";import{digest as Nt}from"expo-crypto";import Y,{useState as W,useMemo as Vt,createContext as Ht,useCallback as oe,useRef as M,useEffect as zt}from"react";import{AppState as He,View as qt}from"react-native";import Kt from"@privy-io/js-sdk-core";var Ee={name:"@privy-io/expo",version:"0.22.1-beta-20240731190849",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{"@privy-io/expo-native-extensions":"0.0.1-beta-20240731190849",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.25.1-beta-20240731190849","react-fast-compare":"^3.2.2"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@tsconfig/node16-strictest-esm":"^1.0.3",tsup:"^6.2.3",typescript:"~5.5.3"},author:"privy.io",publishConfig:{access:"public"}};import st from"react";import{useCallback as lt,useEffect as ge,useRef as ct}from"react";import{AppState as ut}from"react-native";import mt from"react-native-webview";var We=({client:e,isClientReady:t,setWebViewState:o,webViewState:r,logLevel:l})=>{let a=ct(null);ge(()=>{a.current&&r==="loaded"&&e.setMessagePoster(a.current)},[e,a.current,r==="loaded"]),ge(()=>ut.addEventListener("change",i=>p(void 0,null,function*(){a.current&&i==="active"&&((yield e.embeddedWallet.ping(150))||(a.current.reload(),o("reloading")))})).remove,[]);let d=lt(c=>p(void 0,null,function*(){let{data:i}=c.nativeEvent,s=e.embeddedWallet.getMessageHandler();s==null||s(JSON.parse(i))}),[e]);return t?st.createElement(mt,{style:{flex:1},ref:a,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:d}):null};import{useCallback as se,useEffect as Re,useMemo as ke}from"react";import{errorIndicatesRecoveryIsNeeded as yt,getUserEmbeddedSolanaWallet as bt,getUserEmbeddedWallet as vt,PrivyClientError as q}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as pt}from"@privy-io/js-sdk-core";import{PrivyClientError as z}from"@privy-io/js-sdk-core";function Q(s){return p(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:d,recoverySecretOverride:c,iCloudRecordNameOverride:i}){var u,b;switch(r){case"user-passcode":if(!a)throw new z({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c||!i)throw new z({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let n=r==="icloud"?"icloud-native":r;try{let{provider:v,user:f}=yield e.embeddedWallet.create(a,n,d,c,i),w=pt(f);return(b=(u=o.current)==null?void 0:u.onSuccess)==null||b.call(u,v),t({status:"connected",provider:v,account:w}),l({status:"initial"}),v}catch(v){let f=v instanceof Error?v.message:"Error creating embedded wallet";throw t({status:"error",error:f,account:null}),l({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:f})}})}function _e(a){return p(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var d,c;t({status:"creating"});try{let i=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(c=(d=o.current)==null?void 0:d.onSuccess)==null||c.call(d,i),t({status:"connected",publicKey:i._publicKey}),r({status:"initial"}),i}catch(i){let s=i instanceof Error?i.message:"Error creating embedded wallet";throw t({status:"error",error:s}),r({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:s})}})}import{PrivyClientError as U}from"@privy-io/js-sdk-core";function Z(s){return p(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:d,recoveryToken:c,recoverySecretOverride:i}){var n,u,b,v;if(!t)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(l){case"user-passcode":if(!d)throw new U({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new U({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new U({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let f=yield e.embeddedWallet.getProvider(t,d,c,i);return o({status:"connected",provider:f,account:t}),a({status:"initial"}),(u=(n=r.current)==null?void 0:n.onSuccess)==null||u.call(n,f),f}catch(f){o({status:"needs-recovery",account:t}),a({status:"initial"});let w=new U({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(v=(b=r.current)==null?void 0:b.onError)==null||v.call(b,w),w}})}function Ce(a){return p(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var d,c,i,s;if(!t)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let n=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:n._publicKey}),l({status:"initial"}),(c=(d=r.current)==null?void 0:d.onSuccess)==null||c.call(d,n),n}catch(n){o({status:"needs-recovery"}),l({status:"initial"});let u=new U({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(s=(i=r.current)==null?void 0:i.onError)==null||s.call(i,u),u}})}var Ae=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:c})=>{let i=ke(()=>bt(t),[t]),s=ke(()=>{var v;return(v=vt(t))!=null?v:void 0},[t]),n=se(()=>p(void 0,null,function*(){return yield _e({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l,ethereumAccount:s})}),[e,d,s]),u=se(()=>p(void 0,null,function*(){if(!i)throw new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Ce({client:e,solanaAccount:i,setSolanaWallet:r,recoverSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l})}),[e,i]),b=se(()=>p(void 0,null,function*(){if(!i)throw r({status:"not-created"}),new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(v=>v.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let v=yield e.embeddedWallet.getSolanaProvider(i);return r({status:"connected",publicKey:v._publicKey}),v}catch(v){throw yt(v)?(r({status:"needs-recovery"}),new q({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):v instanceof Error?(r({status:"error",error:v.message}),new q({code:"unknown_embedded_wallet_error",error:v.message})):(r({status:"error",error:"Error loading embedded wallet"}),new q({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return Re(()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&b().catch(()=>{})},[a,t,i]),Re(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&b()},[o.status]),{create:n,recover:u,getProvider:b}};import{useCallback as G,useEffect as Fe,useMemo as Ct}from"react";import{throwIfInvalidRecoveryUpgradePath as Rt}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as kt,getUserEmbeddedWallet as At,PrivyClientError as C}from"@privy-io/js-sdk-core";import{Platform as Oe}from"react-native";import{PrivyClientError as K}from"@privy-io/js-sdk-core";function xe(){return p(this,null,function*(){try{return yield import("@privy-io/expo-native-extensions")}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function le(r){return p(this,arguments,function*({user:e,appId:t,client:o}){if(Oe.OS==="android")throw new K({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let l=yield xe(),a=yield o.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(a==null?void 0:a.container_identifier))throw new K({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});let{recoverySecret:c,iCloudRecordName:i}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:c,iCloudRecordName:i}})}function Pe(o){return p(this,arguments,function*({walletAddress:e,client:t}){if(Oe.OS==="android")throw new K({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let r=yield xe(),a=(yield t.recovery.getRecoveryKeyMaterial(e)).icloud_record_name;if(!a)throw new K({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let d=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),c=d==null?void 0:d.container_identifier;if(!c)throw new K({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});let{recoverySecret:i}=yield r.readRecoverySecretFromICloud({containerId:c,recordName:a});return{recoverySecret:i}})}import*as ee from"expo-linking";import*as Ie from"expo-web-browser";import{Platform as gt}from"react-native";import{PrivyClientError as B}from"@privy-io/js-sdk-core";import St from"react-fast-compare";var Ue=e=>t=>e(o=>St(o,t)?o:t);import{PrivyApiError as ft,PrivyClientError as wt}from"@privy-io/js-sdk-core";function k(e){return e instanceof Error||e instanceof ft||e instanceof wt?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var _r=e=>new Promise(t=>setTimeout(t,e));import{useEffect as ht,useRef as Et}from"react";import{AppState as ce}from"react-native";function Or(){let e=Et(ce.currentState);ht(()=>ce.addEventListener("change",r=>{e.current=r}).remove,[]);function t(){return ce.currentState}return{appState:e,getCurrentAppState:t}}function te(l){return p(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:r}){try{let a;switch(e){case"google-drive":{let{url:s}=yield o.recovery.auth.generateURL(ee.createURL(t||"/"));a=s;break}default:throw new B({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let d=yield Ie.openAuthSessionAsync(a);if(gt.OS==="android")return;if(d.type!=="success")throw new B({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=ee.parse(d.url),i;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:n}=c;if(!n||!s)throw new B({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ue({oAuthCode:n,oAuthState:s,client:o});break}default:throw new B({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return i}catch(a){throw r==null||r(k(a)),a}})}function ue(r){return p(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:l}=yield o.recovery.auth.authorize(e,t);if(!l)throw new B({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return l})}import{getUserEmbeddedWallet as Wt,PrivyClientError as _t}from"@privy-io/js-sdk-core";function re(a){return p(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var d,c,i,s;try{let{provider:n,user:u}=yield e.embeddedWallet.setRecovery(t),b=Wt(u);return l({status:"connected",provider:n,account:b}),(c=(d=o.current)==null?void 0:d.onSuccess)==null||c.call(d,n),r({status:"initial"}),n}catch(n){let u=new _t({code:"embedded_wallet_set_recovery_error",error:n instanceof Error?n.message:"Error setting password on embedded wallet"});throw(s=(i=o.current)==null?void 0:i.onError)==null||s.call(i,u),r({status:"initial"}),u}})}function Le(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Me=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:d,createWalletCallbacks:c,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:s})=>{let n=Ct(()=>At(t),[t]),u=G(y=>p(void 0,null,function*(){var O;if(n)throw new C({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:m}=Le(y),h,_,E;if(m==="google-drive"&&(h=yield te({provider:m,client:e,onError:(O=c.current)==null?void 0:O.onError}),a({status:"creating-wallet"}),!h))return null;if(m==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:x,iCloudRecordName:P}=yield le({user:t,appId:o,client:e});_=x,E=P}return yield Q({client:e,setWallet:l,createWalletCallbacks:c,recoveryMethod:m,setRecoveryFlowState:a,password:S,recoverySecretOverride:_,iCloudRecordNameOverride:E})}),[e,n,t]),b=G(y=>p(void 0,null,function*(){var h;if(r.status!=="connected")throw new C({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!n)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});Rt({currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:y.recoveryMethod});let S,m;switch(y.recoveryMethod){case"user-passcode":m=H(R({},y),{wallet:n,password:y.password});break;case"google-drive":if(S=yield te({provider:y.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;m={recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:S};break;case"icloud":if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:E}=yield le({user:t,appId:o,client:e});m={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:E,wallet:n};break;default:throw new C({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return re({client:e,recoveryInput:m,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,n,r.status,t]),v=G(y=>p(void 0,null,function*(){return b({recoveryMethod:"user-passcode",password:y})}),[e,n,r.status]),f=G(y=>p(void 0,null,function*(){var E;if(!n)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:m}=Le(y),h,_;if(m==="google-drive"&&(h=yield te({provider:m,client:e,onError:(E=i.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(m==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:O}=yield Pe({client:e,walletAddress:n.address});_=O}return Z({client:e,account:n,setWallet:l,recoverWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:_})}),[e,n]),w=G(()=>p(void 0,null,function*(){if(!n)throw l({status:"not-created",account:null}),new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(y=>y.status==="connected"?{status:"reconnecting",account:n}:{status:"connecting",account:n});try{let y=yield e.embeddedWallet.getProvider(n);return l({status:"connected",provider:y,account:n}),y}catch(y){throw kt(y)?(l({status:"needs-recovery",account:n}),new C({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):y instanceof Error?(l({status:"error",error:y.message,account:n}),new C({code:"unknown_embedded_wallet_error",error:y.message})):(l({status:"error",error:"Error loading embedded wallet",account:n}),new C({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return Fe(()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});d==="loaded"&&w().catch(()=>{})},[d,t,n]),Fe(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&w()},[r.status]),{create:u,recover:f,setPassword:v,setRecovery:b,getProvider:w}};import{useEffect as Ot,useState as xt}from"react";import{PrivyClientError as Te}from"@privy-io/js-sdk-core";var De=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=xt({status:"initial"});return Ot(()=>{(()=>p(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:c,isLoading:i}=r;if(!(!o||i))try{let s=yield c();if(!s&&t){yield e.auth.logout(),a({status:"done"});return}if(!s){a({status:"done"});return}if(t){a({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(s))){yield e.auth.logout(),a({status:"error",error:new Te({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}a({status:"done"})}catch(s){if(console.log("Error syncing with custom auth provider",s),a({status:"error",error:s}),t)throw yield e.auth.logout(),new Te({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,r==null?void 0:r.enabled,r==null?void 0:r.getCustomAccessToken,r==null?void 0:r.isLoading]),{customAuthState:l,customAuthStateIsSettled:l.status!=="loading"&&l.status!=="initial"}};import*as F from"expo-linking";import{useCallback as Pt,useEffect as Ut}from"react";import{Platform as It}from"react-native";var je=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:d})=>{let c=F.useURL(),i=Pt(s=>{var u,b;let n=k(s);a({status:"error",error:n}),(b=(u=l.current).onError)==null||b.call(u,n)},[a]);return Ut(()=>{function s(){return p(this,null,function*(){var v,f;if(!c||r.status!=="loading"||d.status!=="initial")return;let{queryParams:n}=F.parse(c),{privy_oauth_state:u,privy_oauth_code:b}=n;if(!b||!u){a({status:"done"});return}try{let w,y;if(t)w=yield e.auth.oauth.linkWithCode(b,u);else{let S=yield e.auth.oauth.loginWithCode(b,u);w=S.user,y=!!S.is_new_user}return(f=(v=l.current).onSuccess)==null||f.call(v,w,y),a({status:"done"}),yield F.openURL(c.split("?")[0])}catch(w){i(w)}})}It.OS==="android"&&o&&s()},[c,o])};import*as L from"expo-linking";import{useCallback as Ft,useEffect as Lt,useMemo as Mt}from"react";import{Platform as Tt}from"react-native";import{getUserEmbeddedWallet as Dt}from"@privy-io/js-sdk-core";var Ne=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:d,setRecoveryFlowState:c,setWallet:i,appStateVisible:s,webViewLoaded:n})=>{let u=L.useURL(),b=Mt(()=>Dt(t),[t]),v=Ft(f=>{var y,S,m,h;let w=k(f);a.status==="creating-wallet"?(S=(y=o.current).onError)==null||S.call(y,k(w)):(h=(m=r.current).onError)==null||h.call(m,k(w)),c({status:"initial"})},[a]);return Lt(()=>{function f(){return p(this,null,function*(){if(!u&&a.status!=="initial"&&s&&v(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||d.status!=="initial"||!s||!n)return;let{queryParams:w}=L.parse(u),{privy_oauth_state:y,privy_oauth_code:S}=w;if(!(!S||!y)){yield L.openURL(u.split("?")[0]);try{let m=yield ue({oAuthCode:S,oAuthState:y,client:e});if(a.status==="creating-wallet")yield Q({client:e,setWallet:i,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:c,recoveryToken:m});else if(a.status==="upgrading-recovery"){if(!b)throw new Error("Embedded wallet not found");yield re({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:b,recoveryAccessToken:m},setWalletRecoveryCallbacks:l,setRecoveryFlowState:c,setWallet:i})}else yield Z({client:e,account:b,setWallet:i,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:c,recoveryToken:m})}catch(m){v(m)}}})}Tt.OS==="android"&&f()},[u,a.status,s,n])};import{useEffect as jt}from"react";var Ve=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{jt(()=>{t||(()=>p(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var me=Ht({}),ae;function Do(){return ae?ae.getAccessToken():Promise.resolve(null)}var jo=e=>{var fe;let[t,o]=W(He.currentState==="active");zt(()=>{let I=He.addEventListener("change",tt=>{o(tt==="active")});return()=>{I.remove()}},[]);let[r,l]=W(!1),[a,d]=W("loading"),[c,i]=W(!1),[s,n]=W(null),[u,b]=W({status:"disconnected",account:null}),[v,f]=W({status:"disconnected"}),[w,y]=W({status:"initial"}),[S,m]=W({status:"initial"}),[h,_]=W({status:"initial"}),[E,O]=W({status:"initial"}),[x,P]=W({status:"initial"}),[j,N]=W({status:"initial"}),[V,J]=W({status:"initial"}),be=M({}),ne=M({}),ie=M({}),de=M({}),ve=M({}),Se=M({}),$=oe(I=>{if(I)return Ue(n)(I);n(null),y({status:"initial"}),m({status:"initial"}),b({status:"disconnected",account:null})},[]),g=Vt(()=>{let I=e.storage||Be;return ae=new Kt({storage:Ke(I),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:qe(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ee.version}`,callbacks:{setUser:$,setIsReady:i},logLevel:e.logLevel,crypto:{digest:Nt}}),ae},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,$]),Xe=oe(()=>($(null),g.auth.logout()),[$,g]),Je=oe(()=>g.getAccessToken(),[g]),$e=oe(()=>g.getIdentityToken(),[g]);Ve({client:g,isUserInitialized:r,setIsUserInitialized:l});let Qe=Me({client:g,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,setRecoveryFlowState:_,wallet:u,setWallet:b}),Ze=Ae({client:g,user:s,webViewState:a,createSolanaWalletCallbacks:ve,recoverSolanaWalletCallbacks:Se,setSolanaRecoveryFlowState:O,solanaWallet:v,setSolanaWallet:f});je({client:g,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:m,oAuthCallbacks:be,recoveryFlowState:h}),Ne({client:g,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,recoveryFlowState:h,oAuthState:S,setRecoveryFlowState:_,setWallet:b,appStateVisible:t});let{customAuthStateIsSettled:et}=De({client:g,user:s,isReady:r,customAuth:(fe=e.config)==null?void 0:fe.customAuth});return Y.createElement(Y.Fragment,null,Y.createElement(me.Provider,{value:{client:g,user:s,isReady:a!=="loading"&&r&&ze(S)&&et,logout:Xe,getAccessToken:Je,getIdentityToken:$e,wallet:R(R({},u),Qe),solanaWallet:R(R({},v),Ze),oAuthState:S,oAuthCallbacks:be,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:E,setSolanaRecoveryFlowState:O,createWalletCallbacks:ne,recoverWalletCallbacks:ie,setWalletRecoveryCallbacks:de,createSolanaWalletCallbacks:ve,recoverSolanaWalletCallbacks:Se,setOAuthState:m,siweState:x,setSiweState:P,otpState:w,setOtpState:y,passkeyState:j,setPasskeyState:N,farcasterState:V,setFarcasterState:J}},e.children),Y.createElement(qt,{style:{width:0,height:0,overflow:"hidden"}},Y.createElement(We,{logLevel:e.logLevel,client:g,isClientReady:c,setWebViewState:d,webViewState:a})))};var ze=e=>e.status!=="loading",ye=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a}=Gt(me),d=e.action?e.action==="login":!t;Yt(()=>{l.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let c=Ge(s=>{var u;let n=k(s);return r({status:"error",error:n}),(u=e==null?void 0:e.onError)==null||u.call(e,n),n},[e==null?void 0:e.onError]);return{start:Ge(function(v){return p(this,arguments,function*({provider:n,redirectUri:u,isLegacyAppleIosBehaviorEnabled:b=!1}){var f,w,y;r({status:"loading"});try{if(t&&e.action==="login")throw new T({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new T({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:S}=yield a.auth.oauth.generateURL(n,D.createURL(u||"/")),m,h;if(pe.OS==="ios"&&n==="apple"&&!b){let N=(f=new URL(S).searchParams.get("state"))!=null?f:"",V=yield Ye.signInAsync({state:N});if(!V.authorizationCode)throw new T({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let J=yield a.auth.oauth.loginWithCode(V.authorizationCode,N,n,"raw");m=J.user,h=J.is_new_user}else m=yield a.auth.oauth.linkWithCode(V.authorizationCode,N,n,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,h),r({status:"done"}),m!=null?m:void 0}let _=pe.OS==="android"?S.replace("x.com","twitter.com"):S,E=yield X.openAuthSessionAsync(_);if(pe.OS==="android")return;if(E.type!=="success")throw[X.WebBrowserResultType.CANCEL,X.WebBrowserResultType.DISMISS].includes(E.type)?new T({error:"OAuth was cancelled",code:d?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new T({error:"OAuth session failed",code:d?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=D.parse(E.url),{privy_oauth_state:x,privy_oauth_code:P}=O;if(!P||!x)throw new T({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let j=yield a.auth.oauth.loginWithCode(P,x,n);m=j.user,h=j.is_new_user}else m=yield a.auth.oauth.linkWithCode(P,x,n);return(y=e==null?void 0:e.onSuccess)==null||y.call(e,m,h),yield D.openURL(E.url.split("?")[0]),r({status:"done"}),m!=null?m:void 0}catch(S){c(S)}})},[t,a,r,c]),state:o}};function Yo(e){let{state:t,start:o}=ye(H(R({},e),{action:"login"}));return{state:t,login:o}}function Xo(e){let{state:t,start:o}=ye(H(R({},e),{action:"link"}));return{state:t,link:o}}function Jo(e){return ye(e)}var qe=()=>Bt;function Ke(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,o){return e.put(t.replaceAll(":","-"),o)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>p(this,null,function*(){return[]})}}var Be={get(e){return A.getItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return A.setItemAsync(e,t,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return A.deleteItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>p(void 0,null,function*(){return[]})};function Zo(e){return e.status==="connected"}function ea(e){return e.status==="reconnecting"}function ta(e){return e.status==="connecting"}function ra(e){return e.status==="disconnected"}function oa(e){return e.status==="not-created"}function aa(e){return e.status==="creating"}function na(e){return e.status==="error"}function ia(e){return e.status==="needs-recovery"}export{R as a,H as b,p as c,k as d,_r as e,Or as f,Yo as g,Xo as h,Jo as i,Be as j,me as k,Do as l,jo as m,Zo as n,ea as o,ta as p,ra as q,oa as r,aa as s,na as t,ia as u};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{a as O,c as S,d as f,e as W,f as R,g as Y,h as Z,i as $,j as p,k as h,l as Oe,m as Re,n as Pe,o as Fe,p as Me,q as He,r as Ae,s as Te,t as Ue,u as Ie}from"./chunk-U6537SSN.js";export*from"@privy-io/js-sdk-core";import{useCallback as M,useContext as ee}from"react";import{PrivyClientError as re}from"@privy-io/js-sdk-core";var ze=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=ee(h),m=M(g=>{var o;let u=f(g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=M(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),i=M(o=>S(void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new re({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:l}};import{useCallback as H,useContext as te}from"react";import{PrivyClientError as ne}from"@privy-io/js-sdk-core";var Xe=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=te(h),m=H(g=>{var o;let u=f(g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=H(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(o=>S(void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new ne({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};import{useCallback as A,useContext as oe,useState as ie}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";var tr=e=>{let[s,d]=ie(""),{user:a,client:l,otpState:m,setOtpState:t}=oe(h),i=A(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=A(c=>S(void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=A(r=>S(void 0,[r],function*({code:o,email:c}){var n;try{if(!a)throw new q({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new q({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as T,useContext as ae,useState as ce}from"react";import{PrivyClientError as B}from"@privy-io/js-sdk-core";var sr=e=>{let[s,d]=ce(""),{user:a,client:l,otpState:m,setOtpState:t}=ae(h),i=T(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=T(c=>S(void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=T(r=>S(void 0,[r],function*({code:o,email:c}){var n;try{if(a)throw new B({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new B({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import{useCallback as U,useContext as le,useState as se}from"react";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var fr=e=>{let[s,d]=se(""),{user:a,client:l,otpState:m,setOtpState:t}=le(h),i=U(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=U(c=>S(void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=U(r=>S(void 0,[r],function*({code:o,phone:c}){var n;try{if(!a)throw new J({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new J({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as I,useContext as ue,useState as de}from"react";import{PrivyClientError as K}from"@privy-io/js-sdk-core";var Cr=e=>{let[s,d]=de(""),{user:a,client:l,otpState:m,setOtpState:t}=ue(h),i=I(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=I(c=>S(void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=I(r=>S(void 0,[r],function*({code:o,phone:c}){var n;try{if(a)throw new K({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new K({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import*as P from"expo-linking";import{useCallback as G,useContext as me,useEffect as ge,useRef as he}from"react";import{PrivyClientError as v}from"@privy-io/js-sdk-core";var Pr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:a,user:l,farcasterState:m,setFarcasterState:t}=me(h),i=he(!1),g=G(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=G(()=>{i.current=!0},[]),o=G((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,!l)throw new v({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new v({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new v({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new v({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.link(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield W(n.pollIntervalMs)}throw new v({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,e==null?void 0:e.onSuccess,g,t,l]);return ge(()=>()=>{u()},[]),{linkWithFarcaster:o,state:m,cancel:u}};import{useCallback as Q,useContext as Se}from"react";var Ur=e=>{let{client:s}=Se(h),d=Q(l=>{var t;let m=f(l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:Q(m=>S(void 0,[m],function*({fid:l}){var t;try{let i=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw d(i)}}),[s,e==null?void 0:e.onSuccess,d])}};import*as F from"expo-linking";import{useCallback as j,useContext as fe,useEffect as we,useRef as ke}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var Vr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:a,user:l,farcasterState:m,setFarcasterState:t}=fe(h),i=ke(!1),g=j(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=j(()=>{i.current=!0},[]),o=j((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,l)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new x({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.authenticate(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield W(n.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,g,e==null?void 0:e.onSuccess,t,l,s]);return we(()=>()=>{u()},[]),{loginWithFarcaster:o,state:m,cancel:u}};import{useEffect as Ee}from"react";import{useContext as ye,useEffect as z}from"react";var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:l}=ye(h),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:o}=e;return z(()=>{d.current={onSuccess:m,onError:t}},[m,t]),z(()=>{a.current={onSuccess:g,onError:i}},[g,i]),z(()=>{l.current={onSuccess:u,onError:o}},[g,i]),s};var Zr=({onStateChange:e})=>{let s=V();return Ee(()=>{e(s)},[s])};import{useContext as _e}from"react";var rt=()=>{let{getIdentityToken:e}=_e(h);return{getIdentityToken:e}};import{useContext as We,useEffect as X}from"react";var Ce=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:a}=We(h),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return X(()=>{d.current={onSuccess:l,onError:m}},[l,m]),X(()=>{a.current={onSuccess:i,onError:t}},[i,t]),s};import{useContext as Le}from"react";var be=()=>{let{client:e}=Le(h);return e};import{useContext as ve}from"react";var xe=()=>{let{user:e,isReady:s,logout:d,getAccessToken:a}=ve(h);return{user:e,isReady:s,logout:d,getAccessToken:a}};export{h as PrivyContext,Re as PrivyProvider,p as SecureStorageAdapter,Oe as getAccessToken,Ue as hasError,Pe as isConnected,Me as isConnecting,Te as isCreating,He as isDisconnected,Ae as isNotCreated,Fe as isReconnecting,Ie as needsRecovery,Ce as useEmbeddedSolanaWallet,V as useEmbeddedWallet,Zr as useEmbeddedWalletStateChange,rt as useIdentityToken,tr as useLinkEmail,fr as useLinkSMS,Pr as useLinkWithFarcaster,Z as useLinkWithOAuth,ze as useLinkWithSiwe,sr as useLoginWithEmail,Vr as useLoginWithFarcaster,Y as useLoginWithOAuth,Cr as useLoginWithSMS,Xe as useLoginWithSiwe,$ as useOAuthFlow,xe as usePrivy,be as usePrivyClient,Ur as useUnlinkFarcaster};
1
+ import{a as O,c as S,d as f,e as W,f as R,g as Y,h as Z,i as $,j as p,k as h,l as Oe,m as Re,n as Pe,o as Fe,p as Me,q as He,r as Ae,s as Te,t as Ue,u as Ie}from"./chunk-STTA5D7H.js";export*from"@privy-io/js-sdk-core";import{useCallback as M,useContext as ee}from"react";import{PrivyClientError as re}from"@privy-io/js-sdk-core";var ze=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=ee(h),m=M(g=>{var o;let u=f(g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=M(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),i=M(o=>S(void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new re({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:l}};import{useCallback as H,useContext as te}from"react";import{PrivyClientError as ne}from"@privy-io/js-sdk-core";var Xe=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=te(h),m=H(g=>{var o;let u=f(g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=H(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(o=>S(void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new ne({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};import{useCallback as A,useContext as oe,useState as ie}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";var tr=e=>{let[s,d]=ie(""),{user:a,client:l,otpState:m,setOtpState:t}=oe(h),i=A(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=A(c=>S(void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=A(r=>S(void 0,[r],function*({code:o,email:c}){var n;try{if(!a)throw new q({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new q({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as T,useContext as ae,useState as ce}from"react";import{PrivyClientError as B}from"@privy-io/js-sdk-core";var sr=e=>{let[s,d]=ce(""),{user:a,client:l,otpState:m,setOtpState:t}=ae(h),i=T(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=T(c=>S(void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=T(r=>S(void 0,[r],function*({code:o,email:c}){var n;try{if(a)throw new B({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new B({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import{useCallback as U,useContext as le,useState as se}from"react";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var fr=e=>{let[s,d]=se(""),{user:a,client:l,otpState:m,setOtpState:t}=le(h),i=U(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=U(c=>S(void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=U(r=>S(void 0,[r],function*({code:o,phone:c}){var n;try{if(!a)throw new J({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new J({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as I,useContext as ue,useState as de}from"react";import{PrivyClientError as K}from"@privy-io/js-sdk-core";var Cr=e=>{let[s,d]=de(""),{user:a,client:l,otpState:m,setOtpState:t}=ue(h),i=I(o=>{var r;let c=f(o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=I(c=>S(void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=I(r=>S(void 0,[r],function*({code:o,phone:c}){var n;try{if(a)throw new K({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new K({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import*as P from"expo-linking";import{useCallback as G,useContext as me,useEffect as ge,useRef as he}from"react";import{PrivyClientError as v}from"@privy-io/js-sdk-core";var Pr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:a,user:l,farcasterState:m,setFarcasterState:t}=me(h),i=he(!1),g=G(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=G(()=>{i.current=!0},[]),o=G((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,!l)throw new v({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new v({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new v({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new v({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.link(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield W(n.pollIntervalMs)}throw new v({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,e==null?void 0:e.onSuccess,g,t,l]);return ge(()=>()=>{u()},[]),{linkWithFarcaster:o,state:m,cancel:u}};import{useCallback as Q,useContext as Se}from"react";var Ur=e=>{let{client:s}=Se(h),d=Q(l=>{var t;let m=f(l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:Q(m=>S(void 0,[m],function*({fid:l}){var t;try{let i=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw d(i)}}),[s,e==null?void 0:e.onSuccess,d])}};import*as F from"expo-linking";import{useCallback as j,useContext as fe,useEffect as we,useRef as ke}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var Vr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:a,user:l,farcasterState:m,setFarcasterState:t}=fe(h),i=ke(!1),g=j(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=j(()=>{i.current=!0},[]),o=j((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,l)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new x({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.authenticate(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield W(n.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,g,e==null?void 0:e.onSuccess,t,l,s]);return we(()=>()=>{u()},[]),{loginWithFarcaster:o,state:m,cancel:u}};import{useEffect as Ee}from"react";import{useContext as ye,useEffect as z}from"react";var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:l}=ye(h),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:o}=e;return z(()=>{d.current={onSuccess:m,onError:t}},[m,t]),z(()=>{a.current={onSuccess:g,onError:i}},[g,i]),z(()=>{l.current={onSuccess:u,onError:o}},[g,i]),s};var Zr=({onStateChange:e})=>{let s=V();return Ee(()=>{e(s)},[s])};import{useContext as _e}from"react";var rt=()=>{let{getIdentityToken:e}=_e(h);return{getIdentityToken:e}};import{useContext as We,useEffect as X}from"react";var Ce=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:a}=We(h),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return X(()=>{d.current={onSuccess:l,onError:m}},[l,m]),X(()=>{a.current={onSuccess:i,onError:t}},[i,t]),s};import{useContext as Le}from"react";var be=()=>{let{client:e}=Le(h);return e};import{useContext as ve}from"react";var xe=()=>{let{user:e,isReady:s,logout:d,getAccessToken:a}=ve(h);return{user:e,isReady:s,logout:d,getAccessToken:a}};export{h as PrivyContext,Re as PrivyProvider,p as SecureStorageAdapter,Oe as getAccessToken,Ue as hasError,Pe as isConnected,Me as isConnecting,Te as isCreating,He as isDisconnected,Ae as isNotCreated,Fe as isReconnecting,Ie as needsRecovery,Ce as useEmbeddedSolanaWallet,V as useEmbeddedWallet,Zr as useEmbeddedWalletStateChange,rt as useIdentityToken,tr as useLinkEmail,fr as useLinkSMS,Pr as useLinkWithFarcaster,Z as useLinkWithOAuth,ze as useLinkWithSiwe,sr as useLoginWithEmail,Vr as useLoginWithFarcaster,Y as useLoginWithOAuth,Cr as useLoginWithSMS,Xe as useLoginWithSiwe,$ as useOAuthFlow,xe as usePrivy,be as usePrivyClient,Ur as useUnlinkFarcaster};
@@ -1 +1 @@
1
- import{a as m,b as k,c,d as g,k as f,n as M,o as I,p as T,q as U,r as V,s as D,t as Y,u as j}from"./chunk-U6537SSN.js";import{useCallback as E,useContext as W}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var w=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new J({code:"failed_to_create_passkey",error:"Could not create passkey"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});import{PrivyClientError as v}from"@privy-io/js-sdk-core";var C=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new v({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=W(f),d=E(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:E(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new q({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};import{useCallback as K,useContext as H}from"react";import{PrivyClientError as L}from"@privy-io/js-sdk-core";var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=H(f),d=K(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:K(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new L({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(k(m({},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(P=e==null?void 0:e.onSuccess)==null||P.call(e,y.user,y.is_new_user),y.user}catch(s){throw d(s)}}),[r,d,e==null?void 0:e.onSuccess]),state:a}};export{Y as hasError,M as isConnected,T as isConnecting,D as isCreating,U as isDisconnected,V as isNotCreated,I as isReconnecting,j as needsRecovery,oe as useLinkWithPasskey,de as useLoginWithPasskey};
1
+ import{a as m,b as k,c,d as g,k as f,n as M,o as I,p as T,q as U,r as V,s as D,t as Y,u as j}from"./chunk-STTA5D7H.js";import{useCallback as E,useContext as W}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var w=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new J({code:"failed_to_create_passkey",error:"Could not create passkey"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});import{PrivyClientError as v}from"@privy-io/js-sdk-core";var C=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new v({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=W(f),d=E(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:E(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new q({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};import{useCallback as K,useContext as H}from"react";import{PrivyClientError as L}from"@privy-io/js-sdk-core";var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=H(f),d=K(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:K(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new L({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(k(m({},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(P=e==null?void 0:e.onSuccess)==null||P.call(e,y.user,y.is_new_user),y.user}catch(s){throw d(s)}}),[r,d,e==null?void 0:e.onSuccess]),state:a}};export{Y as hasError,M as isConnected,T as isConnecting,D as isCreating,U as isDisconnected,V as isNotCreated,I as isReconnecting,j as needsRecovery,oe as useLinkWithPasskey,de as useLoginWithPasskey};
package/dist/index.d.ts CHANGED
@@ -131,10 +131,10 @@ declare const useUnlinkFarcaster: (opts?: LinkWithFarcasterOptions) => {
131
131
  } | {
132
132
  type: "wallet";
133
133
  address: string;
134
+ chain_type: "ethereum";
134
135
  verified_at: number;
135
136
  first_verified_at: number | null;
136
137
  latest_verified_at: number | null;
137
- chain_type: "ethereum";
138
138
  wallet_client: "unknown";
139
139
  chain_id?: string | undefined;
140
140
  wallet_client_type?: string | undefined;
@@ -179,11 +179,11 @@ declare const useUnlinkFarcaster: (opts?: LinkWithFarcasterOptions) => {
179
179
  } | {
180
180
  type: "wallet";
181
181
  address: string;
182
+ chain_type: "ethereum";
182
183
  verified_at: number;
183
184
  first_verified_at: number | null;
184
185
  latest_verified_at: number | null;
185
186
  chain_id: "eip155:1";
186
- chain_type: "ethereum";
187
187
  wallet_client: "privy";
188
188
  wallet_client_type: "privy";
189
189
  connector_type: "embedded";
@@ -194,10 +194,10 @@ declare const useUnlinkFarcaster: (opts?: LinkWithFarcasterOptions) => {
194
194
  type: "wallet";
195
195
  address: string;
196
196
  public_key: string;
197
+ chain_type: "solana";
197
198
  verified_at: number;
198
199
  first_verified_at: number | null;
199
200
  latest_verified_at: number | null;
200
- chain_type: "solana";
201
201
  wallet_client_type: "privy";
202
202
  connector_type: "embedded";
203
203
  imported: boolean;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _chunkU6537SSNjs = require('./chunk-U6537SSN.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var ze=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),m=_react.useCallback.call(void 0, g=>{var o;let u=_chunkU6537SSNjs.d.call(void 0, g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, o=>_chunkU6537SSNjs.c.call(void 0, void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:l}};var Xe=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),m=_react.useCallback.call(void 0, g=>{var o;let u=_chunkU6537SSNjs.d.call(void 0, g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, o=>_chunkU6537SSNjs.c.call(void 0, void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};var tr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkU6537SSNjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkU6537SSNjs.c.call(void 0, void 0,[r],function*({code:o,email:c}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var sr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkU6537SSNjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkU6537SSNjs.c.call(void 0, void 0,[r],function*({code:o,email:c}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var fr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkU6537SSNjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkU6537SSNjs.c.call(void 0, void 0,[r],function*({code:o,phone:c}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var Cr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkU6537SSNjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkU6537SSNjs.c.call(void 0, void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkU6537SSNjs.c.call(void 0, void 0,[r],function*({code:o,phone:c}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking);var Pr=e=>{let{appState:s,getCurrentAppState:d}=_chunkU6537SSNjs.f.call(void 0, ),{client:a,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkU6537SSNjs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{i.current=!0},[]),o=_react.useCallback.call(void 0, (k,...w)=>_chunkU6537SSNjs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkU6537SSNjs.e.call(void 0, n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.link(_chunkU6537SSNjs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield _chunkU6537SSNjs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,e==null?void 0:e.onSuccess,g,t,l]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{linkWithFarcaster:o,state:m,cancel:u}};var Ur=e=>{let{client:s}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),d=_react.useCallback.call(void 0, l=>{var t;let m=_chunkU6537SSNjs.d.call(void 0, l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, m=>_chunkU6537SSNjs.c.call(void 0, void 0,[m],function*({fid:l}){var t;try{let i=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw d(i)}}),[s,e==null?void 0:e.onSuccess,d])}};var Vr=e=>{let{appState:s,getCurrentAppState:d}=_chunkU6537SSNjs.f.call(void 0, ),{client:a,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),i=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkU6537SSNjs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{i.current=!0},[]),o=_react.useCallback.call(void 0, (k,...w)=>_chunkU6537SSNjs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkU6537SSNjs.e.call(void 0, n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.authenticate(_chunkU6537SSNjs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield _chunkU6537SSNjs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,g,e==null?void 0:e.onSuccess,t,l,s]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{loginWithFarcaster:o,state:m,cancel:u}};var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:l}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:o}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:m,onError:t}},[m,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:g,onError:i}},[g,i]),_react.useEffect.call(void 0, ()=>{l.current={onSuccess:u,onError:o}},[g,i]),s};var Zr=({onStateChange:e})=>{let s=V();return _react.useEffect.call(void 0, ()=>{e(s)},[s])};var rt=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkU6537SSNjs.k);return{getIdentityToken:e}};var Ce=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:l,onError:m}},[l,m]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:i,onError:t}},[i,t]),s};var be=()=>{let{client:e}=_react.useContext.call(void 0, _chunkU6537SSNjs.k);return e};var xe=()=>{let{user:e,isReady:s,logout:d,getAccessToken:a}=_react.useContext.call(void 0, _chunkU6537SSNjs.k);return{user:e,isReady:s,logout:d,getAccessToken:a}};exports.PrivyContext = _chunkU6537SSNjs.k; exports.PrivyProvider = _chunkU6537SSNjs.m; exports.SecureStorageAdapter = _chunkU6537SSNjs.j; exports.getAccessToken = _chunkU6537SSNjs.l; exports.hasError = _chunkU6537SSNjs.t; exports.isConnected = _chunkU6537SSNjs.n; exports.isConnecting = _chunkU6537SSNjs.p; exports.isCreating = _chunkU6537SSNjs.s; exports.isDisconnected = _chunkU6537SSNjs.q; exports.isNotCreated = _chunkU6537SSNjs.r; exports.isReconnecting = _chunkU6537SSNjs.o; exports.needsRecovery = _chunkU6537SSNjs.u; exports.useEmbeddedSolanaWallet = Ce; exports.useEmbeddedWallet = V; exports.useEmbeddedWalletStateChange = Zr; exports.useIdentityToken = rt; exports.useLinkEmail = tr; exports.useLinkSMS = fr; exports.useLinkWithFarcaster = Pr; exports.useLinkWithOAuth = _chunkU6537SSNjs.h; exports.useLinkWithSiwe = ze; exports.useLoginWithEmail = sr; exports.useLoginWithFarcaster = Vr; exports.useLoginWithOAuth = _chunkU6537SSNjs.g; exports.useLoginWithSMS = Cr; exports.useLoginWithSiwe = Xe; exports.useOAuthFlow = _chunkU6537SSNjs.i; exports.usePrivy = xe; exports.usePrivyClient = be; exports.useUnlinkFarcaster = Ur;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _chunkSTTA5D7Hjs = require('./chunk-STTA5D7H.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var ze=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),m=_react.useCallback.call(void 0, g=>{var o;let u=_chunkSTTA5D7Hjs.d.call(void 0, g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, o=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:l}};var Xe=e=>{let{user:s,client:d,setSiweState:a,siweState:l}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),m=_react.useCallback.call(void 0, g=>{var o;let u=_chunkSTTA5D7Hjs.d.call(void 0, g);return a({status:"error",error:u}),(o=e==null?void 0:e.onError)==null||o.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:o}}){var r;try{a({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,o);return a({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, o=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[o],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return a({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};var tr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkSTTA5D7Hjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[r],function*({code:o,email:c}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var sr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkSTTA5D7Hjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({email:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[r],function*({code:o,email:c}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var fr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkSTTA5D7Hjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[r],function*({code:o,phone:c}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var Cr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:a,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useCallback.call(void 0, o=>{var r;let c=_chunkSTTA5D7Hjs.d.call(void 0, o);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[c],function*({phone:o}){var r;d(o);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(o);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:o}),n}catch(n){return i(n),{success:!1}}}),[l,i,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[r],function*({code:o,phone:c}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,o);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,l,s,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking);var Pr=e=>{let{appState:s,getCurrentAppState:d}=_chunkSTTA5D7Hjs.f.call(void 0, ),{client:a,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkSTTA5D7Hjs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{i.current=!0},[]),o=_react.useCallback.call(void 0, (k,...w)=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkSTTA5D7Hjs.e.call(void 0, n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.link(_chunkSTTA5D7Hjs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield _chunkSTTA5D7Hjs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,e==null?void 0:e.onSuccess,g,t,l]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{linkWithFarcaster:o,state:m,cancel:u}};var Ur=e=>{let{client:s}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),d=_react.useCallback.call(void 0, l=>{var t;let m=_chunkSTTA5D7Hjs.d.call(void 0, l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, m=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[m],function*({fid:l}){var t;try{let i=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw d(i)}}),[s,e==null?void 0:e.onSuccess,d])}};var Vr=e=>{let{appState:s,getCurrentAppState:d}=_chunkSTTA5D7Hjs.f.call(void 0, ),{client:a,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),i=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkSTTA5D7Hjs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{i.current=!0},[]),o=_react.useCallback.call(void 0, (k,...w)=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(i.current=!1,l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkSTTA5D7Hjs.e.call(void 0, n.pollIntervalMs);continue}let b=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield a.auth.farcaster.authenticate(_chunkSTTA5D7Hjs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield _chunkSTTA5D7Hjs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[a,g,e==null?void 0:e.onSuccess,t,l,s]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{loginWithFarcaster:o,state:m,cancel:u}};var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:l}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:o}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:m,onError:t}},[m,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:g,onError:i}},[g,i]),_react.useEffect.call(void 0, ()=>{l.current={onSuccess:u,onError:o}},[g,i]),s};var Zr=({onStateChange:e})=>{let s=V();return _react.useEffect.call(void 0, ()=>{e(s)},[s])};var rt=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k);return{getIdentityToken:e}};var Ce=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:l,onError:m}},[l,m]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:i,onError:t}},[i,t]),s};var be=()=>{let{client:e}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k);return e};var xe=()=>{let{user:e,isReady:s,logout:d,getAccessToken:a}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k);return{user:e,isReady:s,logout:d,getAccessToken:a}};exports.PrivyContext = _chunkSTTA5D7Hjs.k; exports.PrivyProvider = _chunkSTTA5D7Hjs.m; exports.SecureStorageAdapter = _chunkSTTA5D7Hjs.j; exports.getAccessToken = _chunkSTTA5D7Hjs.l; exports.hasError = _chunkSTTA5D7Hjs.t; exports.isConnected = _chunkSTTA5D7Hjs.n; exports.isConnecting = _chunkSTTA5D7Hjs.p; exports.isCreating = _chunkSTTA5D7Hjs.s; exports.isDisconnected = _chunkSTTA5D7Hjs.q; exports.isNotCreated = _chunkSTTA5D7Hjs.r; exports.isReconnecting = _chunkSTTA5D7Hjs.o; exports.needsRecovery = _chunkSTTA5D7Hjs.u; exports.useEmbeddedSolanaWallet = Ce; exports.useEmbeddedWallet = V; exports.useEmbeddedWalletStateChange = Zr; exports.useIdentityToken = rt; exports.useLinkEmail = tr; exports.useLinkSMS = fr; exports.useLinkWithFarcaster = Pr; exports.useLinkWithOAuth = _chunkSTTA5D7Hjs.h; exports.useLinkWithSiwe = ze; exports.useLoginWithEmail = sr; exports.useLoginWithFarcaster = Vr; exports.useLoginWithOAuth = _chunkSTTA5D7Hjs.g; exports.useLoginWithSMS = Cr; exports.useLoginWithSiwe = Xe; exports.useOAuthFlow = _chunkSTTA5D7Hjs.i; exports.usePrivy = xe; exports.usePrivyClient = be; exports.useUnlinkFarcaster = Ur;
package/dist/passkey.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkU6537SSNjs = require('./chunk-U6537SSN.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunkU6537SSNjs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkU6537SSNjs.b.call(void 0, _chunkU6537SSNjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var C=e=>_chunkU6537SSNjs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkU6537SSNjs.b.call(void 0, _chunkU6537SSNjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkU6537SSNjs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:_react.useCallback.call(void 0, u=>_chunkU6537SSNjs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=_react.useContext.call(void 0, _chunkU6537SSNjs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkU6537SSNjs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:_react.useCallback.call(void 0, u=>_chunkU6537SSNjs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(_chunkU6537SSNjs.b.call(void 0, _chunkU6537SSNjs.a.call(void 0, {},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(P=e==null?void 0:e.onSuccess)==null||P.call(e,y.user,y.is_new_user),y.user}catch(s){throw d(s)}}),[r,d,e==null?void 0:e.onSuccess]),state:a}};exports.hasError = _chunkU6537SSNjs.t; exports.isConnected = _chunkU6537SSNjs.n; exports.isConnecting = _chunkU6537SSNjs.p; exports.isCreating = _chunkU6537SSNjs.s; exports.isDisconnected = _chunkU6537SSNjs.q; exports.isNotCreated = _chunkU6537SSNjs.r; exports.isReconnecting = _chunkU6537SSNjs.o; exports.needsRecovery = _chunkU6537SSNjs.u; exports.useLinkWithPasskey = oe; exports.useLoginWithPasskey = de;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkSTTA5D7Hjs = require('./chunk-STTA5D7H.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkSTTA5D7Hjs.b.call(void 0, _chunkSTTA5D7Hjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var C=e=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkSTTA5D7Hjs.b.call(void 0, _chunkSTTA5D7Hjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkSTTA5D7Hjs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:_react.useCallback.call(void 0, u=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=_react.useContext.call(void 0, _chunkSTTA5D7Hjs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkSTTA5D7Hjs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:_react.useCallback.call(void 0, u=>_chunkSTTA5D7Hjs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(_chunkSTTA5D7Hjs.b.call(void 0, _chunkSTTA5D7Hjs.a.call(void 0, {},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(P=e==null?void 0:e.onSuccess)==null||P.call(e,y.user,y.is_new_user),y.user}catch(s){throw d(s)}}),[r,d,e==null?void 0:e.onSuccess]),state:a}};exports.hasError = _chunkSTTA5D7Hjs.t; exports.isConnected = _chunkSTTA5D7Hjs.n; exports.isConnecting = _chunkSTTA5D7Hjs.p; exports.isCreating = _chunkSTTA5D7Hjs.s; exports.isDisconnected = _chunkSTTA5D7Hjs.q; exports.isNotCreated = _chunkSTTA5D7Hjs.r; exports.isReconnecting = _chunkSTTA5D7Hjs.o; exports.needsRecovery = _chunkSTTA5D7Hjs.u; exports.useLinkWithPasskey = oe; exports.useLoginWithPasskey = de;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@privy-io/expo",
3
- "version": "0.22.0",
3
+ "version": "0.22.1-beta-20240731190849",
4
4
  "description": "Expo client for the Privy Auth API",
5
5
  "keywords": [
6
6
  "authentication",
@@ -46,6 +46,7 @@
46
46
  "format": "eslint \"src/**/*.{ts,tsx,js,jsx}\" --fix"
47
47
  },
48
48
  "peerDependencies": {
49
+ "@privy-io/expo-native-extensions": "0.0.1-beta-20240731190849",
49
50
  "react": "*",
50
51
  "react-native": "*",
51
52
  "react-native-passkeys": "^0.2.1",
@@ -59,7 +60,7 @@
59
60
  "expo-web-browser": "*"
60
61
  },
61
62
  "dependencies": {
62
- "@privy-io/js-sdk-core": "0.25.0",
63
+ "@privy-io/js-sdk-core": "0.25.1-beta-20240731190849",
63
64
  "react-fast-compare": "^3.2.2"
64
65
  },
65
66
  "devDependencies": {
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var Qe=Object.defineProperty,Ze=Object.defineProperties;var et=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var tt=Object.prototype.hasOwnProperty,rt=Object.prototype.propertyIsEnumerable;var we=(e,t,o)=>t in e?Qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,_= exports.a =(e,t)=>{for(var o in t||(t={}))tt.call(t,o)&&we(e,o,t[o]);if(fe)for(var o of fe(t))rt.call(t,o)&&we(e,o,t[o]);return e},H= exports.b =(e,t)=>Ze(e,et(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var qe = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var M = _interopRequireWildcard(_expolinking); var Z = _interopRequireWildcard(_expolinking); var U = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var k = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var G = _interopRequireWildcard(_expowebbrowser); var Oe = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _expocrypto = require('expo-crypto');var he={name:"@privy-io/expo",version:"0.22.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.25.0","react-fast-compare":"^3.2.2"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@tsconfig/node16-strictest-esm":"^1.0.3",tsup:"^6.2.3",typescript:"~5.5.3"},author:"privy.io",publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var ge=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=_react.useCallback.call(void 0, l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};function $(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function We(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:r})}})}function Q(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let S=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:S,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,S),S}catch(S){o({status:"needs-recovery",account:t}),n({status:"initial"});let h=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:S instanceof Error?S.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,h),h}})}function _e(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var Re=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),r=_react.useMemo.call(void 0, ()=>{var S;return(S=_jssdkcore.getUserEmbeddedWallet.call(void 0, t))!=null?S:void 0},[t]),s=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){return yield We({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return _e({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(S=>S.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let S=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:S._publicKey}),S}catch(S){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, S)?(a({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):S instanceof Error?(a({status:"error",error:S.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:S.message})):(a({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Ae=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function C(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Sr=e=>new Promise(t=>setTimeout(t,e));function Er(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function ee(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Z.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Oe.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Z.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield le({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(C(n)),n}})}function le(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}function te(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function Pe(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Ue=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),s=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var w;if(r)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:b}=Pe(m),p;if(["google-drive","icloud"].includes(b)){if(b==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(p=yield ee({provider:b,client:e,onError:(w=i.current)==null?void 0:w.onError}),c({status:"creating-wallet"}),!p)return null}return yield $({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:b,setRecoveryFlowState:c,password:f,recoveryToken:p})}),[e,r]),u=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var p,w,A;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let f,b;switch(m.recoveryMethod){case"user-passcode":b=H(_({},m),{wallet:r,password:m.password});break;case"google-drive":case"icloud":if(m.recoveryMethod==="icloud"&&_reactnative.Platform.OS==="android"){let R=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(w=(p=d.current)==null?void 0:p.onError)==null||w.call(p,R),R}if(f=yield ee({provider:m.recoveryMethod,client:e,onError:(A=d.current)==null?void 0:A.onError}),c({status:"upgrading-recovery"}),!f)return null;b={recoveryMethod:m.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return te({client:e,recoveryInput:b,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:m})}),[e,r,o.status]),S=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var w;if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:b}=Pe(m),p;if(["google-drive","icloud"].includes(b)){if(b==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(p=yield ee({provider:b,client:e,onError:(w=l.current)==null?void 0:w.onError}),c({status:"recovering"}),!p)return null}return Q({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:b,setRecoveryFlowState:c,password:f,recoveryToken:p})}),[e,r]),h=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(m=>m.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let m=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:m,account:r}),m}catch(m){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, m)?(a({status:"needs-recovery",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(a({status:"error",error:m.message,account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:m.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&h().catch(()=>{})},[n,t,r]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&h()},[o.status]),{create:s,recover:S,setPassword:v,setRecovery:u,getProvider:h}};var Le=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};var Ie=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=U.useURL(),d=_react.useCallback.call(void 0, r=>{var u,v;let s=C(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return _react.useEffect.call(void 0, ()=>{function r(){return y(this,null,function*(){var S,h;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=U.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let m,f;if(t)m=yield e.auth.oauth.linkWithCode(v,u);else{let b=yield e.auth.oauth.loginWithCode(v,u);m=b.user,f=!!b.is_new_user}return(h=(S=c.current).onSuccess)==null||h.call(S,m,f),n({status:"done"}),yield U.openURL(l.split("?")[0])}catch(m){d(m)}})}_reactnative.Platform.OS==="android"&&o&&r()},[l,o])};var Me=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=F.useURL(),v=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),S=_react.useCallback.call(void 0, h=>{var f,b,p,w;let m=C(h);n.status==="creating-wallet"?(b=(f=o.current).onError)==null||b.call(f,C(m)):(w=(p=a.current).onError)==null||w.call(p,C(m)),l({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function h(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&S(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:m}=F.parse(u),{privy_oauth_state:f,privy_oauth_code:b}=m;if(!(!b||!f)){yield F.openURL(u.split("?")[0]);try{let p=yield le({oAuthCode:b,oAuthState:f,client:e});if(n.status==="creating-wallet")yield $({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:p});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield te({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:p},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield Q({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:p})}catch(p){S(p)}}})}_reactnative.Platform.OS==="android"&&h()},[u,n.status,r,s])};var Te=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ue=_react.createContext.call(void 0, {}),oe;function xo(){return oe?oe.getAccessToken():Promise.resolve(null)}var Po=e=>{var ve;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let x=_reactnative.AppState.addEventListener("change",$e=>{o($e==="active")});return()=>{x.remove()}},[]);let[a,c]=_react.useState.call(void 0, !1),[n,i]=_react.useState.call(void 0, "loading"),[l,d]=_react.useState.call(void 0, !1),[r,s]=_react.useState.call(void 0, null),[u,v]=_react.useState.call(void 0, {status:"disconnected",account:null}),[S,h]=_react.useState.call(void 0, {status:"disconnected"}),[m,f]=_react.useState.call(void 0, {status:"initial"}),[b,p]=_react.useState.call(void 0, {status:"initial"}),[w,A]=_react.useState.call(void 0, {status:"initial"}),[R,Y]=_react.useState.call(void 0, {status:"initial"}),[T,j]=_react.useState.call(void 0, {status:"initial"}),[D,N]=_react.useState.call(void 0, {status:"initial"}),[V,X]=_react.useState.call(void 0, {status:"initial"}),ye=_react.useRef.call(void 0, {}),ae=_react.useRef.call(void 0, {}),ne=_react.useRef.call(void 0, {}),de=_react.useRef.call(void 0, {}),be=_react.useRef.call(void 0, {}),Se=_react.useRef.call(void 0, {}),J=_react.useCallback.call(void 0, x=>{if(x)return Ae(s)(x);s(null),f({status:"initial"}),p({status:"initial"}),v({status:"disconnected",account:null})},[]),E=_react.useMemo.call(void 0, ()=>{let x=e.storage||He;return oe=new (0, _jssdkcore2.default)({storage:Ve(x),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ne(),baseUrl:e.baseUrl,sdkVersion:`expo:${he.version}`,callbacks:{setUser:J,setIsReady:d},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),oe},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,J]),Be=_react.useCallback.call(void 0, ()=>(J(null),E.auth.logout()),[J,E]),Ke=_react.useCallback.call(void 0, ()=>E.getAccessToken(),[E]),Ge=_react.useCallback.call(void 0, ()=>E.getIdentityToken(),[E]);Te({client:E,isUserInitialized:a,setIsUserInitialized:c});let Ye=Ue({client:E,user:r,webViewState:n,createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,setRecoveryFlowState:A,wallet:u,setWallet:v}),Xe=Re({client:E,user:r,webViewState:n,createSolanaWalletCallbacks:be,recoverSolanaWalletCallbacks:Se,setSolanaRecoveryFlowState:Y,solanaWallet:S,setSolanaWallet:h});Ie({client:E,isUserInitialized:a,user:r,oAuthState:b,setOAuthState:p,oAuthCallbacks:ye,recoveryFlowState:w}),Me({client:E,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,recoveryFlowState:w,oAuthState:b,setRecoveryFlowState:A,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Je}=Le({client:E,user:r,isReady:a,customAuth:(ve=e.config)==null?void 0:ve.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(ue.Provider,{value:{client:E,user:r,isReady:n!=="loading"&&a&&De(b)&&Je,logout:Be,getAccessToken:Ke,getIdentityToken:Ge,wallet:_(_({},u),Ye),solanaWallet:_(_({},S),Xe),oAuthState:b,oAuthCallbacks:ye,recoveryFlowState:w,setRecoveryFlowState:A,solanaRecoveryFlowState:R,setSolanaRecoveryFlowState:Y,createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,createSolanaWalletCallbacks:be,recoverSolanaWalletCallbacks:Se,setOAuthState:p,siweState:T,setSiweState:j,otpState:m,setOtpState:f,passkeyState:D,setPasskeyState:N,farcasterState:V,setFarcasterState:X}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(ge,{logLevel:e.logLevel,client:E,isClientReady:l,setWebViewState:i,webViewState:n})))};var De=e=>e.status!=="loading",pe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=_react.useContext.call(void 0, ue),i=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=_react.useCallback.call(void 0, r=>{var u;let s=C(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(S){return y(this,arguments,function*({provider:s,redirectUri:u,isLegacyAppleIosBehaviorEnabled:v=!1}){var h,m,f;a({status:"loading"});try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:b}=yield n.auth.oauth.generateURL(s,M.createURL(u||"/")),p,w;if(_reactnative.Platform.OS==="ios"&&s==="apple"&&!v){let N=(h=new URL(b).searchParams.get("state"))!=null?h:"",V=yield qe.signInAsync({state:N});if(!V.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let X=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");p=X.user,w=X.is_new_user}else p=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(m=e==null?void 0:e.onSuccess)==null||m.call(e,p,w),a({status:"done"}),p!=null?p:void 0}let A=_reactnative.Platform.OS==="android"?b.replace("x.com","twitter.com"):b,R=yield G.openAuthSessionAsync(A);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:Y}=M.parse(R.url),{privy_oauth_state:T,privy_oauth_code:j}=Y;if(!j||!T)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,T,s);p=D.user,w=D.is_new_user}else p=yield n.auth.oauth.linkWithCode(j,T,s);return(f=e==null?void 0:e.onSuccess)==null||f.call(e,p,w),yield M.openURL(R.url.split("?")[0]),a({status:"done"}),p!=null?p:void 0}catch(b){l(b)}})},[t,n,a,l]),state:o}};function No(e){let{state:t,start:o}=pe(H(_({},e),{action:"login"}));return{state:t,login:o}}function Vo(e){let{state:t,start:o}=pe(H(_({},e),{action:"link"}));return{state:t,link:o}}function Ho(e){return pe(e)}var Ne=()=>_expoapplication.applicationId;function Ve(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,o){return e.put(t.replaceAll(":","-"),o)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>y(this,null,function*(){return[]})}}var He={get(e){return k.getItemAsync(e,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return k.setItemAsync(e,t,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return k.deleteItemAsync(e,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function Bo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Go(e){return e.status==="connecting"}function Yo(e){return e.status==="disconnected"}function Xo(e){return e.status==="not-created"}function Jo(e){return e.status==="creating"}function $o(e){return e.status==="error"}function Qo(e){return e.status==="needs-recovery"}exports.a = _; exports.b = H; exports.c = y; exports.d = C; exports.e = Sr; exports.f = Er; exports.g = No; exports.h = Vo; exports.i = Ho; exports.j = He; exports.k = ue; exports.l = xo; exports.m = Po; exports.n = Bo; exports.o = Ko; exports.p = Go; exports.q = Yo; exports.r = Xo; exports.s = Jo; exports.t = $o; exports.u = Qo;
@@ -1 +0,0 @@
1
- var Qe=Object.defineProperty,Ze=Object.defineProperties;var et=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var tt=Object.prototype.hasOwnProperty,rt=Object.prototype.propertyIsEnumerable;var we=(e,t,o)=>t in e?Qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,_=(e,t)=>{for(var o in t||(t={}))tt.call(t,o)&&we(e,o,t[o]);if(fe)for(var o of fe(t))rt.call(t,o)&&we(e,o,t[o]);return e},H=(e,t)=>Ze(e,et(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});import*as qe from"expo-apple-authentication";import{applicationId as Ht}from"expo-application";import*as M from"expo-linking";import*as k from"expo-secure-store";import*as G from"expo-web-browser";import{useCallback as ze,useContext as zt,useEffect as qt}from"react";import{Platform as me}from"react-native";import{PrivyClientError as I}from"@privy-io/js-sdk-core";import{digest as Mt}from"expo-crypto";import K,{useState as g,useMemo as Tt,createContext as jt,useCallback as re,useRef as L,useEffect as Dt}from"react";import{AppState as je,View as Nt}from"react-native";import Vt from"@privy-io/js-sdk-core";var he={name:"@privy-io/expo",version:"0.22.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.25.0","react-fast-compare":"^3.2.2"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@tsconfig/node16-strictest-esm":"^1.0.3",tsup:"^6.2.3",typescript:"~5.5.3"},author:"privy.io",publishConfig:{access:"public"}};import at from"react";import{useCallback as nt,useEffect as Ee,useRef as dt}from"react";import{AppState as st}from"react-native";import it from"react-native-webview";var ge=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=dt(null);Ee(()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),Ee(()=>st.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=nt(l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?at.createElement(it,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};import{useCallback as se,useEffect as Ce,useMemo as ke}from"react";import{errorIndicatesRecoveryIsNeeded as ct,getUserEmbeddedSolanaWallet as ut,getUserEmbeddedWallet as mt,PrivyClientError as q}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as lt}from"@privy-io/js-sdk-core";import{PrivyClientError as z}from"@privy-io/js-sdk-core";function $(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new z({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=lt(u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:u})}})}function We(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:r})}})}import{PrivyClientError as O}from"@privy-io/js-sdk-core";function Q(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new O({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new O({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new O({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new O({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let S=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:S,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,S),S}catch(S){o({status:"needs-recovery",account:t}),n({status:"initial"});let h=new O({code:"embedded_wallet_recovery_error",error:S instanceof Error?S.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,h),h}})}function _e(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new O({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new O({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var Re=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=ke(()=>ut(t),[t]),r=ke(()=>{var S;return(S=mt(t))!=null?S:void 0},[t]),s=se(()=>y(void 0,null,function*(){return yield We({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=se(()=>y(void 0,null,function*(){if(!d)throw new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return _e({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=se(()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(S=>S.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let S=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:S._publicKey}),S}catch(S){throw ct(S)?(a({status:"needs-recovery"}),new q({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):S instanceof Error?(a({status:"error",error:S.message}),new q({code:"unknown_embedded_wallet_error",error:S.message})):(a({status:"error",error:"Error loading embedded wallet"}),new q({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return Ce(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),Ce(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};import{useCallback as B,useEffect as xe,useMemo as Et}from"react";import{Platform as ce}from"react-native";import{throwIfInvalidRecoveryUpgradePath as gt}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as Wt,getUserEmbeddedWallet as _t,PrivyClientError as W}from"@privy-io/js-sdk-core";import*as Z from"expo-linking";import*as Oe from"expo-web-browser";import{Platform as ft}from"react-native";import{PrivyClientError as P}from"@privy-io/js-sdk-core";import pt from"react-fast-compare";var Ae=e=>t=>e(o=>pt(o,t)?o:t);import{PrivyApiError as yt,PrivyClientError as bt}from"@privy-io/js-sdk-core";function C(e){return e instanceof Error||e instanceof yt||e instanceof bt?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Sr=e=>new Promise(t=>setTimeout(t,e));import{useEffect as St,useRef as vt}from"react";import{AppState as ie}from"react-native";function Er(){let e=vt(ie.currentState);St(()=>ie.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return ie.currentState}return{appState:e,getCurrentAppState:t}}function ee(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Z.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new P({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Oe.openAuthSessionAsync(n);if(ft.OS==="android")return;if(i.type!=="success")throw new P({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Z.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new P({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield le({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new P({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new P({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(C(n)),n}})}function le(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new P({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}import{getUserEmbeddedWallet as wt,PrivyClientError as ht}from"@privy-io/js-sdk-core";function te(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=wt(u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new ht({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function Pe(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Ue=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=Et(()=>_t(t),[t]),s=B(m=>y(void 0,null,function*(){var w;if(r)throw new W({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:b}=Pe(m),p;if(["google-drive","icloud"].includes(b)){if(b==="icloud"&&ce.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(p=yield ee({provider:b,client:e,onError:(w=i.current)==null?void 0:w.onError}),c({status:"creating-wallet"}),!p)return null}return yield $({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:b,setRecoveryFlowState:c,password:f,recoveryToken:p})}),[e,r]),u=B(m=>y(void 0,null,function*(){var p,w,A;if(o.status!=="connected")throw new W({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});gt({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let f,b;switch(m.recoveryMethod){case"user-passcode":b=H(_({},m),{wallet:r,password:m.password});break;case"google-drive":case"icloud":if(m.recoveryMethod==="icloud"&&ce.OS==="android"){let R=new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(w=(p=d.current)==null?void 0:p.onError)==null||w.call(p,R),R}if(f=yield ee({provider:m.recoveryMethod,client:e,onError:(A=d.current)==null?void 0:A.onError}),c({status:"upgrading-recovery"}),!f)return null;b={recoveryMethod:m.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new W({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return te({client:e,recoveryInput:b,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=B(m=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:m})}),[e,r,o.status]),S=B(m=>y(void 0,null,function*(){var w;if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:b}=Pe(m),p;if(["google-drive","icloud"].includes(b)){if(b==="icloud"&&ce.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(p=yield ee({provider:b,client:e,onError:(w=l.current)==null?void 0:w.onError}),c({status:"recovering"}),!p)return null}return Q({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:b,setRecoveryFlowState:c,password:f,recoveryToken:p})}),[e,r]),h=B(()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(m=>m.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let m=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:m,account:r}),m}catch(m){throw Wt(m)?(a({status:"needs-recovery",account:r}),new W({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(a({status:"error",error:m.message,account:r}),new W({code:"unknown_embedded_wallet_error",error:m.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new W({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return xe(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&h().catch(()=>{})},[n,t,r]),xe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&h()},[o.status]),{create:s,recover:S,setPassword:v,setRecovery:u,getProvider:h}};import{useEffect as Ct,useState as kt}from"react";import{PrivyClientError as Fe}from"@privy-io/js-sdk-core";var Le=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=kt({status:"initial"});return Ct(()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new Fe({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new Fe({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};import*as U from"expo-linking";import{useCallback as Rt,useEffect as At}from"react";import{Platform as Ot}from"react-native";var Ie=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=U.useURL(),d=Rt(r=>{var u,v;let s=C(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return At(()=>{function r(){return y(this,null,function*(){var S,h;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=U.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let m,f;if(t)m=yield e.auth.oauth.linkWithCode(v,u);else{let b=yield e.auth.oauth.loginWithCode(v,u);m=b.user,f=!!b.is_new_user}return(h=(S=c.current).onSuccess)==null||h.call(S,m,f),n({status:"done"}),yield U.openURL(l.split("?")[0])}catch(m){d(m)}})}Ot.OS==="android"&&o&&r()},[l,o])};import*as F from"expo-linking";import{useCallback as xt,useEffect as Pt,useMemo as Ut}from"react";import{Platform as Ft}from"react-native";import{getUserEmbeddedWallet as Lt}from"@privy-io/js-sdk-core";var Me=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=F.useURL(),v=Ut(()=>Lt(t),[t]),S=xt(h=>{var f,b,p,w;let m=C(h);n.status==="creating-wallet"?(b=(f=o.current).onError)==null||b.call(f,C(m)):(w=(p=a.current).onError)==null||w.call(p,C(m)),l({status:"initial"})},[n]);return Pt(()=>{function h(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&S(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:m}=F.parse(u),{privy_oauth_state:f,privy_oauth_code:b}=m;if(!(!b||!f)){yield F.openURL(u.split("?")[0]);try{let p=yield le({oAuthCode:b,oAuthState:f,client:e});if(n.status==="creating-wallet")yield $({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:p});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield te({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:p},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield Q({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:p})}catch(p){S(p)}}})}Ft.OS==="android"&&h()},[u,n.status,r,s])};import{useEffect as It}from"react";var Te=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{It(()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ue=jt({}),oe;function xo(){return oe?oe.getAccessToken():Promise.resolve(null)}var Po=e=>{var ve;let[t,o]=g(je.currentState==="active");Dt(()=>{let x=je.addEventListener("change",$e=>{o($e==="active")});return()=>{x.remove()}},[]);let[a,c]=g(!1),[n,i]=g("loading"),[l,d]=g(!1),[r,s]=g(null),[u,v]=g({status:"disconnected",account:null}),[S,h]=g({status:"disconnected"}),[m,f]=g({status:"initial"}),[b,p]=g({status:"initial"}),[w,A]=g({status:"initial"}),[R,Y]=g({status:"initial"}),[T,j]=g({status:"initial"}),[D,N]=g({status:"initial"}),[V,X]=g({status:"initial"}),ye=L({}),ae=L({}),ne=L({}),de=L({}),be=L({}),Se=L({}),J=re(x=>{if(x)return Ae(s)(x);s(null),f({status:"initial"}),p({status:"initial"}),v({status:"disconnected",account:null})},[]),E=Tt(()=>{let x=e.storage||He;return oe=new Vt({storage:Ve(x),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ne(),baseUrl:e.baseUrl,sdkVersion:`expo:${he.version}`,callbacks:{setUser:J,setIsReady:d},logLevel:e.logLevel,crypto:{digest:Mt}}),oe},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,J]),Be=re(()=>(J(null),E.auth.logout()),[J,E]),Ke=re(()=>E.getAccessToken(),[E]),Ge=re(()=>E.getIdentityToken(),[E]);Te({client:E,isUserInitialized:a,setIsUserInitialized:c});let Ye=Ue({client:E,user:r,webViewState:n,createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,setRecoveryFlowState:A,wallet:u,setWallet:v}),Xe=Re({client:E,user:r,webViewState:n,createSolanaWalletCallbacks:be,recoverSolanaWalletCallbacks:Se,setSolanaRecoveryFlowState:Y,solanaWallet:S,setSolanaWallet:h});Ie({client:E,isUserInitialized:a,user:r,oAuthState:b,setOAuthState:p,oAuthCallbacks:ye,recoveryFlowState:w}),Me({client:E,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,recoveryFlowState:w,oAuthState:b,setRecoveryFlowState:A,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Je}=Le({client:E,user:r,isReady:a,customAuth:(ve=e.config)==null?void 0:ve.customAuth});return K.createElement(K.Fragment,null,K.createElement(ue.Provider,{value:{client:E,user:r,isReady:n!=="loading"&&a&&De(b)&&Je,logout:Be,getAccessToken:Ke,getIdentityToken:Ge,wallet:_(_({},u),Ye),solanaWallet:_(_({},S),Xe),oAuthState:b,oAuthCallbacks:ye,recoveryFlowState:w,setRecoveryFlowState:A,solanaRecoveryFlowState:R,setSolanaRecoveryFlowState:Y,createWalletCallbacks:ae,recoverWalletCallbacks:ne,setWalletRecoveryCallbacks:de,createSolanaWalletCallbacks:be,recoverSolanaWalletCallbacks:Se,setOAuthState:p,siweState:T,setSiweState:j,otpState:m,setOtpState:f,passkeyState:D,setPasskeyState:N,farcasterState:V,setFarcasterState:X}},e.children),K.createElement(Nt,{style:{width:0,height:0,overflow:"hidden"}},K.createElement(ge,{logLevel:e.logLevel,client:E,isClientReady:l,setWebViewState:i,webViewState:n})))};var De=e=>e.status!=="loading",pe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=zt(ue),i=e.action?e.action==="login":!t;qt(()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=ze(r=>{var u;let s=C(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:ze(function(S){return y(this,arguments,function*({provider:s,redirectUri:u,isLegacyAppleIosBehaviorEnabled:v=!1}){var h,m,f;a({status:"loading"});try{if(t&&e.action==="login")throw new I({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new I({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:b}=yield n.auth.oauth.generateURL(s,M.createURL(u||"/")),p,w;if(me.OS==="ios"&&s==="apple"&&!v){let N=(h=new URL(b).searchParams.get("state"))!=null?h:"",V=yield qe.signInAsync({state:N});if(!V.authorizationCode)throw new I({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let X=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");p=X.user,w=X.is_new_user}else p=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(m=e==null?void 0:e.onSuccess)==null||m.call(e,p,w),a({status:"done"}),p!=null?p:void 0}let A=me.OS==="android"?b.replace("x.com","twitter.com"):b,R=yield G.openAuthSessionAsync(A);if(me.OS==="android")return;if(R.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(R.type)?new I({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new I({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:Y}=M.parse(R.url),{privy_oauth_state:T,privy_oauth_code:j}=Y;if(!j||!T)throw new I({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,T,s);p=D.user,w=D.is_new_user}else p=yield n.auth.oauth.linkWithCode(j,T,s);return(f=e==null?void 0:e.onSuccess)==null||f.call(e,p,w),yield M.openURL(R.url.split("?")[0]),a({status:"done"}),p!=null?p:void 0}catch(b){l(b)}})},[t,n,a,l]),state:o}};function No(e){let{state:t,start:o}=pe(H(_({},e),{action:"login"}));return{state:t,login:o}}function Vo(e){let{state:t,start:o}=pe(H(_({},e),{action:"link"}));return{state:t,link:o}}function Ho(e){return pe(e)}var Ne=()=>Ht;function Ve(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,o){return e.put(t.replaceAll(":","-"),o)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>y(this,null,function*(){return[]})}}var He={get(e){return k.getItemAsync(e,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return k.setItemAsync(e,t,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return k.deleteItemAsync(e,{keychainAccessible:k.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function Bo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Go(e){return e.status==="connecting"}function Yo(e){return e.status==="disconnected"}function Xo(e){return e.status==="not-created"}function Jo(e){return e.status==="creating"}function $o(e){return e.status==="error"}function Qo(e){return e.status==="needs-recovery"}export{_ as a,H as b,y as c,C as d,Sr as e,Er as f,No as g,Vo as h,Ho as i,He as j,ue as k,xo as l,Po as m,Bo as n,Ko as o,Go as p,Yo as q,Xo as r,Jo as s,$o as t,Qo as u};