@privy-io/expo 0.24.1 → 0.24.2-beta-20240920184838

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 st=Object.defineProperty,lt=Object.defineProperties;var ct=Object.getOwnPropertyDescriptors;var te=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var Ee=(e,t,o)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,k= exports.a =(e,t)=>{for(var o in t||(t={}))We.call(t,o)&&Ee(e,o,t[o]);if(te)for(var o of te(t))_e.call(t,o)&&Ee(e,o,t[o]);return e},F= exports.b =(e,t)=>lt(e,ct(t));var er=(e,t)=>{var o={};for(var r in e)We.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&te)for(var r of te(e))t.indexOf(r)<0&&_e.call(e,r)&&(o[r]=e[r]);return o};var y=(e,t,o)=>new Promise((r,l)=>{var a=n=>{try{d(o.next(n))}catch(s){l(s)}},c=n=>{try{d(o.throw(n))}catch(s){l(s)}},d=n=>n.done?r(n.value):Promise.resolve(n.value).then(a,c);d((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var $e = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var N = _interopRequireWildcard(_expolinking); var ae = _interopRequireWildcard(_expolinking); var M = _interopRequireWildcard(_expolinking); var T = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var A = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var Z = _interopRequireWildcard(_expowebbrowser); var Me = _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 Ce={name:"@privy-io/expo",version:"0.24.2-beta-20240920184838",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/esm/index.js",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.3",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","react-native-safe-area-context":"*","react-native-svg":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.28.2-beta-20240920184838","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 Re=({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",n=>y(void 0,null,function*(){a.current&&n==="active"&&((yield e.embeddedWallet.ping(500))||(a.current.reload(),o("reloading")))})).remove,[]);let c=_react.useCallback.call(void 0, d=>y(void 0,null,function*(){let{data:n}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(n))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:a,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:c}):null};function re(s){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:c,recoverySecretOverride:d,iCloudRecordNameOverride:n}){var u,p;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(!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(!d||!n)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 i=r==="icloud"?"icloud-native":r;try{let{provider:f,user:v}=yield e.embeddedWallet.create(a,i,c,d,n),g=_jssdkcore.getUserEmbeddedWallet.call(void 0, v);return(p=(u=o.current)==null?void 0:u.onSuccess)==null||p.call(u,f),t({status:"connected",provider:f,account:g}),l({status:"initial"}),f}catch(f){let v=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:v,account:null}),l({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:v})}})}function Ae(a){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var c,d;t({status:"creating"});try{let n=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,n),t({status:"connected",publicKey:n._publicKey}),r({status:"initial"}),n}catch(n){let s=n instanceof Error?n.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 oe(s){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:c,recoveryToken:d,recoverySecretOverride:n}){var i,u,p,f;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(!c)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(!n)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 v=yield e.embeddedWallet.getProvider(t,c,d,n);return o({status:"connected",provider:v,account:t}),a({status:"initial"}),(u=(i=r.current)==null?void 0:i.onSuccess)==null||u.call(i,v),v}catch(v){o({status:"needs-recovery",account:t}),a({status:"initial"});let g=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(f=(p=r.current)==null?void 0:p.onError)==null||f.call(p,g),g}})}function Oe(a){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var c,d,n,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 i=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:i._publicKey}),l({status:"initial"}),(d=(c=r.current)==null?void 0:c.onSuccess)==null||d.call(c,i),i}catch(i){o({status:"needs-recovery"}),l({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:i instanceof Error?i.message:"Error recovering embedded wallet"});throw(s=(n=r.current)==null?void 0:n.onError)==null||s.call(n,u),u}})}var Pe=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:d})=>{let n=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),s=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){var v;let{user:p}=yield e.user.get(),f=(v=_jssdkcore.getUserEmbeddedWallet.call(void 0, p))!=null?v:void 0;return yield Ae({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l,ethereumAccount:f})}),[e,c]),i=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Oe({client:e,solanaAccount:n,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l})}),[e,n]),u=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!n)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(p=>p.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let p=yield e.embeddedWallet.getSolanaProvider(n);return r({status:"connected",publicKey:p._publicKey}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(r({status:"error",error:p.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&u().catch(()=>{})},[a,t,n]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&u()},[o.status]),{create:s,recover:i,getProvider:u}};function Ie(){return y(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 pe(r){return y(this,arguments,function*({user:e,appId:t,client:o}){var d;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 Ie(),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."});try{let{recoverySecret:n,iCloudRecordName:s}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:n,iCloudRecordName:s}}catch(n){if(n instanceof Error){let s=(d=n.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Le(o){return y(this,arguments,function*({walletAddress:e,client:t}){var n;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 Ie(),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 c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=c==null?void 0:c.container_identifier;if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s}=yield r.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:s}}catch(s){if(s instanceof Error){let i=(n=s.message.split("Caused by: ")[1])!=null?n:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:i})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Fe=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function R(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 xr=e=>new Promise(t=>setTimeout(t,e));function Fr(){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 ne(l){return y(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(ae.createURL(t||"/"));a=s;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Me.openAuthSessionAsync(a);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:d}=ae.parse(c.url),n;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:i}=d;if(!i||!s)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});n=yield ye({oAuthCode:i,oAuthState:s,client:o});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return n}catch(a){throw r==null||r(R(a)),a}})}function ye(r){return y(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 ie(a){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var c,d,n,s;try{let{provider:i,user:u}=yield e.embeddedWallet.setRecovery(t),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return l({status:"connected",provider:i,account:p}),(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,i),r({status:"initial"}),i}catch(i){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:i instanceof Error?i.message:"Error setting password on embedded wallet"});throw(s=(n=o.current)==null?void 0:n.onError)==null||s.call(n,u),r({status:"initial"}),u}})}function je(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 De=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:c,createWalletCallbacks:d,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:s})=>{let i=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var P;if(i)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:b}=je(m),h,w,E;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(P=d.current)==null?void 0:P.onError}),a({status:"creating-wallet"}),!h))return null;if(b==="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:O,iCloudRecordName:V}=yield pe({user:t,appId:o,client:e});w=O,E=V}return yield re({client:e,setWallet:l,createWalletCallbacks:d,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoverySecretOverride:w,iCloudRecordNameOverride:E})}),[e,i,t]),p=_react.useCallback.call(void 0, m=>y(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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:i.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let S,b;switch(m.recoveryMethod){case"privy":b=F(k({},m),{wallet:i});break;case"user-passcode":b=F(k({},m),{wallet:i,password:m.password});break;case"google-drive":if(S=yield ne({provider:m.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;b={recoveryMethod:"google-drive",wallet:i,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:w,iCloudRecordName:E}=yield pe({user:t,appId:o,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:w,iCloudRecordNameOverride:E,wallet:i};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ie({client:e,recoveryInput:b,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,i,r.status,t]),f=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){return p({recoveryMethod:"user-passcode",password:m})}),[e,i,r.status]),v=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var E;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:b}=je(m),h,w;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(E=n.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(b==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:P}=yield Le({client:e,walletAddress:i.address});w=P}return oe({client:e,account:i,setWallet:l,recoverWalletCallbacks:n,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:w})}),[e,i]),g=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!i)throw l({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(m=>m.status==="connected"?{status:"reconnecting",account:i}:{status:"connecting",account:i});try{let m=yield e.embeddedWallet.getProvider(i);return l({status:"connected",provider:m,account:i}),m}catch(m){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, m)?(l({status:"needs-recovery",account:i}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(l({status:"error",error:m.message,account:i}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:m.message})):(l({status:"error",error:"Error loading embedded wallet",account:i}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});c==="loaded"&&g().catch(()=>{})},[c,t,i]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&g()},[r.status]),{create:u,recover:v,setPassword:f,setRecovery:p,getProvider:g}};var Ve=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:d,isLoading:n}=r;if(!(!o||n))try{let s=yield d();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 He=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:c,oAuthStateRef:d})=>{let n=M.useURL(),s=_react.useCallback.call(void 0, i=>{var p,f;let u=R(i);a({status:"error",error:u}),(f=(p=l.current).onError)==null||f.call(p,u)},[a]);return _react.useEffect.call(void 0, ()=>{function i(){return y(this,null,function*(){var v,g;if(!n||r.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=M.parse(n),{privy_oauth_state:p,privy_oauth_code:f}=u;if(!f||!p){a({status:"done"});return}try{let m,S;if(t)m=yield e.auth.oauth.linkWithCode(f,p);else{let b=yield e.auth.oauth.loginWithCode(f,p,void 0,void 0,d.current.disableSignup?"no-signup":"login-or-sign-up");m=b.user,S=!!b.is_new_user}return(g=(v=l.current).onSuccess)==null||g.call(v,m,S),d.current={},a({status:"done"}),yield M.openURL(n.split("?")[0])}catch(m){d.current={},s(m)}})}_reactnative.Platform.OS==="android"&&o&&i()},[n,o])};var ze=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:c,setRecoveryFlowState:d,setWallet:n,appStateVisible:s,webViewLoaded:i})=>{let u=T.useURL(),p=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, v=>{var m,S,b,h;let g=R(v);a.status==="creating-wallet"?(S=(m=o.current).onError)==null||S.call(m,R(g)):(h=(b=r.current).onError)==null||h.call(b,R(g)),d({status:"initial"})},[a]);return _react.useEffect.call(void 0, ()=>{function v(){return y(this,null,function*(){if(!u&&a.status!=="initial"&&s&&f(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||c.status!=="initial"||!s||!i)return;let{queryParams:g}=T.parse(u),{privy_oauth_state:m,privy_oauth_code:S}=g;if(!(!S||!m)){yield T.openURL(u.split("?")[0]);try{let b=yield ye({oAuthCode:S,oAuthState:m,client:e});if(a.status==="creating-wallet")yield re({client:e,setWallet:n,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b});else if(a.status==="upgrading-recovery"){if(!p)throw new Error("Embedded wallet not found");yield ie({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:p,recoveryAccessToken:b},setWalletRecoveryCallbacks:l,setRecoveryFlowState:d,setWallet:n})}else yield oe({client:e,account:p,setWallet:n,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b})}catch(b){f(b)}}})}_reactnative.Platform.OS==="android"&&v()},[u,a.status,s,i])};var qe=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var be=_react.createContext.call(void 0, {}),de;function qo(){return de?de.getAccessToken():Promise.resolve(null)}var Bo=e=>{var ge;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let U=_reactnative.AppState.addEventListener("change",dt=>{o(dt==="active")});return()=>{U.remove()}},[]);let[r,l]=_react.useState.call(void 0, !1),[a,c]=_react.useState.call(void 0, "loading"),[d,n]=_react.useState.call(void 0, !1),[s,i]=_react.useState.call(void 0, null),[u,p]=_react.useState.call(void 0, {status:"disconnected",account:null}),[f,v]=_react.useState.call(void 0, {status:"disconnected"}),[g,m]=_react.useState.call(void 0, {status:"initial"}),[S,b]=_react.useState.call(void 0, {status:"initial"}),h=_react.useRef.call(void 0, {}),[w,E]=_react.useState.call(void 0, {status:"initial"}),[P,O]=_react.useState.call(void 0, {status:"initial"}),[V,H]=_react.useState.call(void 0, {status:"initial"}),[z,q]=_react.useState.call(void 0, {status:"initial"}),[B,K]=_react.useState.call(void 0, {status:"initial"}),G=_react.useRef.call(void 0, {}),se=_react.useRef.call(void 0, {}),le=_react.useRef.call(void 0, {}),ce=_react.useRef.call(void 0, {}),Se=_react.useRef.call(void 0, {}),we=_react.useRef.call(void 0, {}),[Qe,he]=_react.useState.call(void 0, null),Ze=_react.useCallback.call(void 0, ()=>{he(null)},[]),et=_react.useCallback.call(void 0, U=>{he(U)},[]),ee=_react.useCallback.call(void 0, U=>{if(U)return Fe(i)(U);i(null),m({status:"initial"}),b({status:"initial"}),p({status:"disconnected",account:null})},[]),_=_react.useMemo.call(void 0, ()=>{let U=e.storage||Xe;return de=new (0, _jssdkcore2.default)({storage:Ye(U),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ge(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ce.version}`,callbacks:{setUser:ee,setIsReady:n},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),de},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),tt=_react.useCallback.call(void 0, ()=>(ee(null),_.auth.logout()),[ee,_]),rt=_react.useCallback.call(void 0, ()=>_.getAccessToken(),[_]),ot=_react.useCallback.call(void 0, ()=>_.getIdentityToken(),[_]);qe({client:_,isUserInitialized:r,setIsUserInitialized:l});let at=De({client:_,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,setRecoveryFlowState:E,wallet:u,setWallet:p}),nt=Pe({client:_,user:s,webViewState:a,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setSolanaRecoveryFlowState:O,solanaWallet:f,setSolanaWallet:v});He({client:_,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:b,oAuthCallbacks:G,recoveryFlowState:w,oAuthStateRef:h}),ze({client:_,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,recoveryFlowState:w,oAuthState:S,setRecoveryFlowState:E,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:it}=Ve({client:_,user:s,isReady:r,customAuth:(ge=e.config)==null?void 0:ge.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(be.Provider,{value:{client:_,user:s,isReady:a!=="loading"&&r&&Ke(S)&&it,logout:tt,getAccessToken:rt,getIdentityToken:ot,wallet:k(k({},u),at),solanaWallet:k(k({},f),nt),oAuthState:S,oAuthCallbacks:G,recoveryFlowState:w,setRecoveryFlowState:E,solanaRecoveryFlowState:P,setSolanaRecoveryFlowState:O,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setOAuthState:b,siweState:V,setSiweState:H,otpState:g,setOtpState:m,passkeyState:z,setPasskeyState:q,farcasterState:B,setFarcasterState:K,oAuthStateRef:h,loginWithUI:et,closeLoginModal:Ze,privyModalOpen:Qe}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Re,{logLevel:e.logLevel,client:_,isClientReady:d,setWebViewState:c,webViewState:a})))};var Ke=e=>e.status!=="loading",fe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a,oAuthStateRef:c}=_react.useContext.call(void 0, be),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 n=_react.useCallback.call(void 0, i=>{var p;let u=R(i);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(g){return y(this,arguments,function*({provider:u,redirectUri:p,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var m,S,b;r({status:"loading"}),c.current={disableSignup:v};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:h}=yield a.auth.oauth.generateURL(u,N.createURL(p||"/")),w,E;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!f){let B=(m=new URL(h).searchParams.get("state"))!=null?m:"",K=yield $e.signInAsync({state:B});if(!K.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 G=yield a.auth.oauth.loginWithCode(K.authorizationCode,B,u,"raw",v?"no-signup":"login-or-sign-up");w=G.user,E=G.is_new_user}else w=yield a.auth.oauth.linkWithCode(K.authorizationCode,B,u,"raw");return(S=e==null?void 0:e.onSuccess)==null||S.call(e,w,E),r({status:"done"}),w!=null?w:void 0}let P=_reactnative.Platform.OS==="android"?h.replace("x.com","twitter.com"):h,O=yield Z.openAuthSessionAsync(P);if(_reactnative.Platform.OS==="android")return;if(O.type!=="success")throw[Z.WebBrowserResultType.CANCEL,Z.WebBrowserResultType.DISMISS].includes(O.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:V}=N.parse(O.url),{privy_oauth_state:H,privy_oauth_code:z}=V;if(!z||!H)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 q=yield a.auth.oauth.loginWithCode(z,H,u,void 0,v?"no-signup":"login-or-sign-up");w=q.user,E=q.is_new_user}else w=yield a.auth.oauth.linkWithCode(z,H,u);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,w,E),yield N.openURL(O.url.split("?")[0]),r({status:"done"}),w!=null?w:void 0}catch(h){n(h)}})},[t,a,r,n]),state:o}};function ea(e){let{state:t,start:o}=fe(F(k({},e),{action:"login"}));return{state:t,login:o}}function ta(e){let{state:t,start:o}=fe(F(k({},e),{action:"link"}));return{state:t,link:o}}function ra(e){return fe(e)}var Ge=()=>_expoapplication.applicationId;function Ye(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 Xe={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:()=>y(void 0,null,function*(){return[]})};function na(e){return e.status==="connected"}function ia(e){return e.status==="reconnecting"}function da(e){return e.status==="connecting"}function sa(e){return e.status==="disconnected"}function la(e){return e.status==="not-created"}function ca(e){return e.status==="creating"}function ua(e){return e.status==="error"}function pa(e){return e.status==="needs-recovery"}exports.a = k; exports.b = F; exports.c = er; exports.d = y; exports.e = R; exports.f = xr; exports.g = Fr; exports.h = ea; exports.i = ta; exports.j = ra; exports.k = Xe; exports.l = be; exports.m = qo; exports.n = Bo; exports.o = na; exports.p = ia; exports.q = da; exports.r = sa; exports.s = la; exports.t = ca; exports.u = ua; exports.v = pa;
@@ -0,0 +1 @@
1
+ var st=Object.defineProperty,lt=Object.defineProperties;var ct=Object.getOwnPropertyDescriptors;var te=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var Ee=(e,t,o)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,k=(e,t)=>{for(var o in t||(t={}))We.call(t,o)&&Ee(e,o,t[o]);if(te)for(var o of te(t))_e.call(t,o)&&Ee(e,o,t[o]);return e},F=(e,t)=>lt(e,ct(t));var er=(e,t)=>{var o={};for(var r in e)We.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&te)for(var r of te(e))t.indexOf(r)<0&&_e.call(e,r)&&(o[r]=e[r]);return o};var y=(e,t,o)=>new Promise((r,l)=>{var a=n=>{try{d(o.next(n))}catch(s){l(s)}},c=n=>{try{d(o.throw(n))}catch(s){l(s)}},d=n=>n.done?r(n.value):Promise.resolve(n.value).then(a,c);d((o=o.apply(e,t)).next())});import*as $e from"expo-apple-authentication";import{applicationId as $t}from"expo-application";import*as N from"expo-linking";import*as A from"expo-secure-store";import*as Z from"expo-web-browser";import{useCallback as Je,useContext as Qt,useEffect as Zt}from"react";import{Platform as ve}from"react-native";import{PrivyClientError as D}from"@privy-io/js-sdk-core";import{digest as Bt}from"expo-crypto";import Q,{useState as W,useMemo as Kt,createContext as Gt,useCallback as j,useRef as L,useEffect as Yt}from"react";import{AppState as Be,View as Xt}from"react-native";import Jt from"@privy-io/js-sdk-core";var Ce={name:"@privy-io/expo",version:"0.24.2-beta-20240920184838",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/esm/index.js",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.3",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","react-native-safe-area-context":"*","react-native-svg":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.28.2-beta-20240920184838","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 pt from"react";import{useCallback as mt,useEffect as ke,useRef as yt}from"react";import{AppState as bt}from"react-native";import vt from"react-native-webview";var Re=({client:e,isClientReady:t,setWebViewState:o,webViewState:r,logLevel:l})=>{let a=yt(null);ke(()=>{a.current&&r==="loaded"&&e.setMessagePoster(a.current)},[e,a.current,r==="loaded"]),ke(()=>bt.addEventListener("change",n=>y(void 0,null,function*(){a.current&&n==="active"&&((yield e.embeddedWallet.ping(500))||(a.current.reload(),o("reloading")))})).remove,[]);let c=mt(d=>y(void 0,null,function*(){let{data:n}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(n))}),[e]);return t?pt.createElement(vt,{style:{flex:1},ref:a,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:c}):null};import{useCallback as ue,useEffect as xe,useMemo as St}from"react";import{errorIndicatesRecoveryIsNeeded as wt,getUserEmbeddedSolanaWallet as ht,getUserEmbeddedWallet as gt,PrivyClientError as X}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as ft}from"@privy-io/js-sdk-core";import{PrivyClientError as Y}from"@privy-io/js-sdk-core";function re(s){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:c,recoverySecretOverride:d,iCloudRecordNameOverride:n}){var u,p;switch(r){case"user-passcode":if(!a)throw new Y({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new Y({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!d||!n)throw new Y({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let i=r==="icloud"?"icloud-native":r;try{let{provider:f,user:v}=yield e.embeddedWallet.create(a,i,c,d,n),g=ft(v);return(p=(u=o.current)==null?void 0:u.onSuccess)==null||p.call(u,f),t({status:"connected",provider:f,account:g}),l({status:"initial"}),f}catch(f){let v=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:v,account:null}),l({status:"initial"}),new Y({code:"embedded_wallet_creation_error",error:v})}})}function Ae(a){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var c,d;t({status:"creating"});try{let n=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,n),t({status:"connected",publicKey:n._publicKey}),r({status:"initial"}),n}catch(n){let s=n instanceof Error?n.message:"Error creating embedded wallet";throw t({status:"error",error:s}),r({status:"initial"}),new Y({code:"embedded_wallet_creation_error",error:s})}})}import{PrivyClientError as I}from"@privy-io/js-sdk-core";function oe(s){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:c,recoveryToken:d,recoverySecretOverride:n}){var i,u,p,f;if(!t)throw new I({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(l){case"user-passcode":if(!c)throw new I({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new I({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!n)throw new I({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let v=yield e.embeddedWallet.getProvider(t,c,d,n);return o({status:"connected",provider:v,account:t}),a({status:"initial"}),(u=(i=r.current)==null?void 0:i.onSuccess)==null||u.call(i,v),v}catch(v){o({status:"needs-recovery",account:t}),a({status:"initial"});let g=new I({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(f=(p=r.current)==null?void 0:p.onError)==null||f.call(p,g),g}})}function Oe(a){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var c,d,n,s;if(!t)throw new I({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let i=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:i._publicKey}),l({status:"initial"}),(d=(c=r.current)==null?void 0:c.onSuccess)==null||d.call(c,i),i}catch(i){o({status:"needs-recovery"}),l({status:"initial"});let u=new I({code:"embedded_wallet_recovery_error",error:i instanceof Error?i.message:"Error recovering embedded wallet"});throw(s=(n=r.current)==null?void 0:n.onError)==null||s.call(n,u),u}})}var Pe=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:d})=>{let n=St(()=>ht(t),[t]),s=ue(()=>y(void 0,null,function*(){var v;let{user:p}=yield e.user.get(),f=(v=gt(p))!=null?v:void 0;return yield Ae({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l,ethereumAccount:f})}),[e,c]),i=ue(()=>y(void 0,null,function*(){if(!n)throw new X({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Oe({client:e,solanaAccount:n,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l})}),[e,n]),u=ue(()=>y(void 0,null,function*(){if(!n)throw r({status:"not-created"}),new X({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(p=>p.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let p=yield e.embeddedWallet.getSolanaProvider(n);return r({status:"connected",publicKey:p._publicKey}),p}catch(p){throw wt(p)?(r({status:"needs-recovery"}),new X({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(r({status:"error",error:p.message}),new X({code:"unknown_embedded_wallet_error",error:p.message})):(r({status:"error",error:"Error loading embedded wallet"}),new X({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return xe(()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&u().catch(()=>{})},[a,t,n]),xe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&u()},[o.status]),{create:s,recover:i,getProvider:u}};import{useCallback as $,useEffect as Te,useMemo as xt}from"react";import{throwIfInvalidRecoveryUpgradePath as Pt}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as Ut,getUserEmbeddedWallet as It,PrivyClientError as C}from"@privy-io/js-sdk-core";import{Platform as Ue}from"react-native";import{PrivyClientError as x}from"@privy-io/js-sdk-core";function Ie(){return y(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 pe(r){return y(this,arguments,function*({user:e,appId:t,client:o}){var d;if(Ue.OS==="android")throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let l=yield Ie(),a=yield o.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(a==null?void 0:a.container_identifier))throw new x({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:n,iCloudRecordName:s}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:n,iCloudRecordName:s}}catch(n){if(n instanceof Error){let s=(d=n.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new x({code:"embedded_wallet_recovery_error",error:s})}throw new x({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Le(o){return y(this,arguments,function*({walletAddress:e,client:t}){var n;if(Ue.OS==="android")throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let r=yield Ie(),a=(yield t.recovery.getRecoveryKeyMaterial(e)).icloud_record_name;if(!a)throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=c==null?void 0:c.container_identifier;if(!d)throw new x({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s}=yield r.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:s}}catch(s){if(s instanceof Error){let i=(n=s.message.split("Caused by: ")[1])!=null?n:"Error writing to iCloud";throw new x({code:"embedded_wallet_recovery_error",error:i})}throw new x({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}import*as ae from"expo-linking";import*as Me from"expo-web-browser";import{Platform as Rt}from"react-native";import{PrivyClientError as J}from"@privy-io/js-sdk-core";import Et from"react-fast-compare";var Fe=e=>t=>e(o=>Et(o,t)?o:t);import{PrivyApiError as Wt,PrivyClientError as _t}from"@privy-io/js-sdk-core";function R(e){return e instanceof Error||e instanceof Wt||e instanceof _t?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var xr=e=>new Promise(t=>setTimeout(t,e));import{useEffect as Ct,useRef as kt}from"react";import{AppState as me}from"react-native";function Fr(){let e=kt(me.currentState);Ct(()=>me.addEventListener("change",r=>{e.current=r}).remove,[]);function t(){return me.currentState}return{appState:e,getCurrentAppState:t}}function ne(l){return y(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(ae.createURL(t||"/"));a=s;break}default:throw new J({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Me.openAuthSessionAsync(a);if(Rt.OS==="android")return;if(c.type!=="success")throw new J({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:d}=ae.parse(c.url),n;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:i}=d;if(!i||!s)throw new J({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});n=yield ye({oAuthCode:i,oAuthState:s,client:o});break}default:throw new J({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return n}catch(a){throw r==null||r(R(a)),a}})}function ye(r){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:l}=yield o.recovery.auth.authorize(e,t);if(!l)throw new J({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return l})}import{getUserEmbeddedWallet as At,PrivyClientError as Ot}from"@privy-io/js-sdk-core";function ie(a){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var c,d,n,s;try{let{provider:i,user:u}=yield e.embeddedWallet.setRecovery(t),p=At(u);return l({status:"connected",provider:i,account:p}),(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,i),r({status:"initial"}),i}catch(i){let u=new Ot({code:"embedded_wallet_set_recovery_error",error:i instanceof Error?i.message:"Error setting password on embedded wallet"});throw(s=(n=o.current)==null?void 0:n.onError)==null||s.call(n,u),r({status:"initial"}),u}})}function je(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 De=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:c,createWalletCallbacks:d,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:s})=>{let i=xt(()=>It(t),[t]),u=$(m=>y(void 0,null,function*(){var P;if(i)throw new C({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:b}=je(m),h,w,E;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(P=d.current)==null?void 0:P.onError}),a({status:"creating-wallet"}),!h))return null;if(b==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:O,iCloudRecordName:V}=yield pe({user:t,appId:o,client:e});w=O,E=V}return yield re({client:e,setWallet:l,createWalletCallbacks:d,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoverySecretOverride:w,iCloudRecordNameOverride:E})}),[e,i,t]),p=$(m=>y(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(!i)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});Pt({currentRecoveryMethod:i.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let S,b;switch(m.recoveryMethod){case"privy":b=F(k({},m),{wallet:i});break;case"user-passcode":b=F(k({},m),{wallet:i,password:m.password});break;case"google-drive":if(S=yield ne({provider:m.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;b={recoveryMethod:"google-drive",wallet:i,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:w,iCloudRecordName:E}=yield pe({user:t,appId:o,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:w,iCloudRecordNameOverride:E,wallet:i};break;default:throw new C({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ie({client:e,recoveryInput:b,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,i,r.status,t]),f=$(m=>y(void 0,null,function*(){return p({recoveryMethod:"user-passcode",password:m})}),[e,i,r.status]),v=$(m=>y(void 0,null,function*(){var E;if(!i)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:b}=je(m),h,w;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(E=n.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(b==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:P}=yield Le({client:e,walletAddress:i.address});w=P}return oe({client:e,account:i,setWallet:l,recoverWalletCallbacks:n,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:w})}),[e,i]),g=$(()=>y(void 0,null,function*(){if(!i)throw l({status:"not-created",account:null}),new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(m=>m.status==="connected"?{status:"reconnecting",account:i}:{status:"connecting",account:i});try{let m=yield e.embeddedWallet.getProvider(i);return l({status:"connected",provider:m,account:i}),m}catch(m){throw Ut(m)?(l({status:"needs-recovery",account:i}),new C({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(l({status:"error",error:m.message,account:i}),new C({code:"unknown_embedded_wallet_error",error:m.message})):(l({status:"error",error:"Error loading embedded wallet",account:i}),new C({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return Te(()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});c==="loaded"&&g().catch(()=>{})},[c,t,i]),Te(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&g()},[r.status]),{create:u,recover:v,setPassword:f,setRecovery:p,getProvider:g}};import{useEffect as Lt,useState as Ft}from"react";import{PrivyClientError as Ne}from"@privy-io/js-sdk-core";var Ve=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=Ft({status:"initial"});return Lt(()=>{(()=>y(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:d,isLoading:n}=r;if(!(!o||n))try{let s=yield d();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 Ne({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 Ne({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 M from"expo-linking";import{useCallback as Mt,useEffect as Tt}from"react";import{Platform as jt}from"react-native";var He=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:c,oAuthStateRef:d})=>{let n=M.useURL(),s=Mt(i=>{var p,f;let u=R(i);a({status:"error",error:u}),(f=(p=l.current).onError)==null||f.call(p,u)},[a]);return Tt(()=>{function i(){return y(this,null,function*(){var v,g;if(!n||r.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=M.parse(n),{privy_oauth_state:p,privy_oauth_code:f}=u;if(!f||!p){a({status:"done"});return}try{let m,S;if(t)m=yield e.auth.oauth.linkWithCode(f,p);else{let b=yield e.auth.oauth.loginWithCode(f,p,void 0,void 0,d.current.disableSignup?"no-signup":"login-or-sign-up");m=b.user,S=!!b.is_new_user}return(g=(v=l.current).onSuccess)==null||g.call(v,m,S),d.current={},a({status:"done"}),yield M.openURL(n.split("?")[0])}catch(m){d.current={},s(m)}})}jt.OS==="android"&&o&&i()},[n,o])};import*as T from"expo-linking";import{useCallback as Dt,useEffect as Nt,useMemo as Vt}from"react";import{Platform as Ht}from"react-native";import{getUserEmbeddedWallet as zt}from"@privy-io/js-sdk-core";var ze=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:c,setRecoveryFlowState:d,setWallet:n,appStateVisible:s,webViewLoaded:i})=>{let u=T.useURL(),p=Vt(()=>zt(t),[t]),f=Dt(v=>{var m,S,b,h;let g=R(v);a.status==="creating-wallet"?(S=(m=o.current).onError)==null||S.call(m,R(g)):(h=(b=r.current).onError)==null||h.call(b,R(g)),d({status:"initial"})},[a]);return Nt(()=>{function v(){return y(this,null,function*(){if(!u&&a.status!=="initial"&&s&&f(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||c.status!=="initial"||!s||!i)return;let{queryParams:g}=T.parse(u),{privy_oauth_state:m,privy_oauth_code:S}=g;if(!(!S||!m)){yield T.openURL(u.split("?")[0]);try{let b=yield ye({oAuthCode:S,oAuthState:m,client:e});if(a.status==="creating-wallet")yield re({client:e,setWallet:n,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b});else if(a.status==="upgrading-recovery"){if(!p)throw new Error("Embedded wallet not found");yield ie({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:p,recoveryAccessToken:b},setWalletRecoveryCallbacks:l,setRecoveryFlowState:d,setWallet:n})}else yield oe({client:e,account:p,setWallet:n,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b})}catch(b){f(b)}}})}Ht.OS==="android"&&v()},[u,a.status,s,i])};import{useEffect as qt}from"react";var qe=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{qt(()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var be=Gt({}),de;function qo(){return de?de.getAccessToken():Promise.resolve(null)}var Bo=e=>{var ge;let[t,o]=W(Be.currentState==="active");Yt(()=>{let U=Be.addEventListener("change",dt=>{o(dt==="active")});return()=>{U.remove()}},[]);let[r,l]=W(!1),[a,c]=W("loading"),[d,n]=W(!1),[s,i]=W(null),[u,p]=W({status:"disconnected",account:null}),[f,v]=W({status:"disconnected"}),[g,m]=W({status:"initial"}),[S,b]=W({status:"initial"}),h=L({}),[w,E]=W({status:"initial"}),[P,O]=W({status:"initial"}),[V,H]=W({status:"initial"}),[z,q]=W({status:"initial"}),[B,K]=W({status:"initial"}),G=L({}),se=L({}),le=L({}),ce=L({}),Se=L({}),we=L({}),[Qe,he]=W(null),Ze=j(()=>{he(null)},[]),et=j(U=>{he(U)},[]),ee=j(U=>{if(U)return Fe(i)(U);i(null),m({status:"initial"}),b({status:"initial"}),p({status:"disconnected",account:null})},[]),_=Kt(()=>{let U=e.storage||Xe;return de=new Jt({storage:Ye(U),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ge(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ce.version}`,callbacks:{setUser:ee,setIsReady:n},logLevel:e.logLevel,crypto:{digest:Bt}}),de},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),tt=j(()=>(ee(null),_.auth.logout()),[ee,_]),rt=j(()=>_.getAccessToken(),[_]),ot=j(()=>_.getIdentityToken(),[_]);qe({client:_,isUserInitialized:r,setIsUserInitialized:l});let at=De({client:_,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,setRecoveryFlowState:E,wallet:u,setWallet:p}),nt=Pe({client:_,user:s,webViewState:a,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setSolanaRecoveryFlowState:O,solanaWallet:f,setSolanaWallet:v});He({client:_,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:b,oAuthCallbacks:G,recoveryFlowState:w,oAuthStateRef:h}),ze({client:_,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,recoveryFlowState:w,oAuthState:S,setRecoveryFlowState:E,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:it}=Ve({client:_,user:s,isReady:r,customAuth:(ge=e.config)==null?void 0:ge.customAuth});return Q.createElement(Q.Fragment,null,Q.createElement(be.Provider,{value:{client:_,user:s,isReady:a!=="loading"&&r&&Ke(S)&&it,logout:tt,getAccessToken:rt,getIdentityToken:ot,wallet:k(k({},u),at),solanaWallet:k(k({},f),nt),oAuthState:S,oAuthCallbacks:G,recoveryFlowState:w,setRecoveryFlowState:E,solanaRecoveryFlowState:P,setSolanaRecoveryFlowState:O,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setOAuthState:b,siweState:V,setSiweState:H,otpState:g,setOtpState:m,passkeyState:z,setPasskeyState:q,farcasterState:B,setFarcasterState:K,oAuthStateRef:h,loginWithUI:et,closeLoginModal:Ze,privyModalOpen:Qe}},e.children),Q.createElement(Xt,{style:{width:0,height:0,overflow:"hidden"}},Q.createElement(Re,{logLevel:e.logLevel,client:_,isClientReady:d,setWebViewState:c,webViewState:a})))};var Ke=e=>e.status!=="loading",fe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a,oAuthStateRef:c}=Qt(be),d=e.action?e.action==="login":!t;Zt(()=>{l.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let n=Je(i=>{var p;let u=R(i);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError]);return{start:Je(function(g){return y(this,arguments,function*({provider:u,redirectUri:p,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var m,S,b;r({status:"loading"}),c.current={disableSignup:v};try{if(t&&e.action==="login")throw new D({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 D({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:h}=yield a.auth.oauth.generateURL(u,N.createURL(p||"/")),w,E;if(ve.OS==="ios"&&u==="apple"&&!f){let B=(m=new URL(h).searchParams.get("state"))!=null?m:"",K=yield $e.signInAsync({state:B});if(!K.authorizationCode)throw new D({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let G=yield a.auth.oauth.loginWithCode(K.authorizationCode,B,u,"raw",v?"no-signup":"login-or-sign-up");w=G.user,E=G.is_new_user}else w=yield a.auth.oauth.linkWithCode(K.authorizationCode,B,u,"raw");return(S=e==null?void 0:e.onSuccess)==null||S.call(e,w,E),r({status:"done"}),w!=null?w:void 0}let P=ve.OS==="android"?h.replace("x.com","twitter.com"):h,O=yield Z.openAuthSessionAsync(P);if(ve.OS==="android")return;if(O.type!=="success")throw[Z.WebBrowserResultType.CANCEL,Z.WebBrowserResultType.DISMISS].includes(O.type)?new D({error:"OAuth was cancelled",code:d?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new D({error:"OAuth session failed",code:d?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:V}=N.parse(O.url),{privy_oauth_state:H,privy_oauth_code:z}=V;if(!z||!H)throw new D({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let q=yield a.auth.oauth.loginWithCode(z,H,u,void 0,v?"no-signup":"login-or-sign-up");w=q.user,E=q.is_new_user}else w=yield a.auth.oauth.linkWithCode(z,H,u);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,w,E),yield N.openURL(O.url.split("?")[0]),r({status:"done"}),w!=null?w:void 0}catch(h){n(h)}})},[t,a,r,n]),state:o}};function ea(e){let{state:t,start:o}=fe(F(k({},e),{action:"login"}));return{state:t,login:o}}function ta(e){let{state:t,start:o}=fe(F(k({},e),{action:"link"}));return{state:t,link:o}}function ra(e){return fe(e)}var Ge=()=>$t;function Ye(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 Xe={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:()=>y(void 0,null,function*(){return[]})};function na(e){return e.status==="connected"}function ia(e){return e.status==="reconnecting"}function da(e){return e.status==="connecting"}function sa(e){return e.status==="disconnected"}function la(e){return e.status==="not-created"}function ca(e){return e.status==="creating"}function ua(e){return e.status==="error"}function pa(e){return e.status==="needs-recovery"}export{k as a,F as b,er as c,y as d,R as e,xr as f,Fr as g,ea as h,ta as i,ra as j,Xe as k,be as l,qo as m,Bo as n,na as o,ia as p,da as q,sa as r,la as s,ca as t,ua as u,pa as v};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{a as x,c as H,d as y,e as p,f as F,g as V,h as ar,i as sr,j as lr,k as cr,l as g,m as Yt,n as Zt,o as eo,p as ro,q as to,r as oo,s as no,t as io,u as ao,v as so}from"./chunk-7LS6TTOM.js";export*from"@privy-io/js-sdk-core";import{useCallback as $,useContext as ur}from"react";import{PrivyClientError as mr}from"@privy-io/js-sdk-core";var go=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=ur(g),c=$(m=>{var u;let h=p(m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=$(d=>y(void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]),i=$(u=>y(void 0,[u],function*({signature:m,messageOverride:h}){var d;try{if(!r)throw new mr({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let a=yield n.auth.siwe.linkWithSiwe(m,void 0,h);return o({status:"done"}),(d=e==null?void 0:e.onSuccess)==null||d.call(e,a),a}catch(a){throw c(a)}}),[r,n,c,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:s}};import{useCallback as J,useContext as dr}from"react";import{PrivyClientError as gr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=dr(g),c=J(m=>{var u;let h=p(m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=J(d=>y(void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:J(d=>y(void 0,[d],function*({signature:m,messageOverride:h,disableSignup:u}){var a;try{if(r)throw new gr({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"});o({status:"submitting-signature"});let l=yield n.auth.siwe.loginWithSiwe(m,void 0,h,u?"no-signup":"login-or-sign-up");return o({status:"done"}),(a=e==null?void 0:e.onSuccess)==null||a.call(e,l.user,l.is_new_user),l.user}catch(l){throw c(l)}}),[r,n,c,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:s}};import{useCallback as Se,useContext as fr}from"react";import{PrivyClientError as hr}from"@privy-io/js-sdk-core";var Lo=e=>{let{user:r,client:n}=fr(g),o=Se(c=>{var i;let t=p(c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:Se(t=>y(void 0,[t],function*({address:c}){var i;try{if(!r)throw new hr({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let m=yield n.auth.siwe.unlinkWallet(c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw o(m)}}),[r,n,o,e==null?void 0:e.onSuccess])}};import{useCallback as Q,useContext as yr,useState as Sr}from"react";import{PrivyClientError as pe}from"@privy-io/js-sdk-core";var Uo=e=>{let[r,n]=Sr(""),{user:o,client:s,otpState:c,setOtpState:t}=yr(g),i=Q(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Q(d=>y(void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Q(a=>y(void 0,[a],function*({code:u,email:d}){var l;try{if(!o)throw new pe({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let S=d||r;if(!S)throw new pe({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield s.auth.email.linkWithCode(S,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};import{useCallback as X,useContext as pr,useState as kr}from"react";import{PrivyClientError as ke}from"@privy-io/js-sdk-core";var we=e=>{let[r,n]=kr(""),{user:o,client:s,otpState:c,setOtpState:t}=pr(g),i=X(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=X(d=>y(void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=X(l=>y(void 0,[l],function*({code:u,email:d,disableSignup:a}){var S;try{if(o)throw new ke({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 w=d||r;if(!w)throw new ke({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let k=yield s.auth.email.loginWithCode(w,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};import{useCallback as Y,useContext as wr,useState as xr}from"react";import{PrivyClientError as xe}from"@privy-io/js-sdk-core";var qo=e=>{let[r,n]=xr(""),{user:o,client:s,otpState:c,setOtpState:t}=wr(g),i=Y(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Y(d=>y(void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Y(a=>y(void 0,[a],function*({code:u,phone:d}){var l;try{if(!o)throw new xe({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(!(d||r))throw new xe({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield s.auth.phone.linkWithCode(d||r,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};import{useCallback as Z,useContext as Cr,useState as br}from"react";import{PrivyClientError as Ce}from"@privy-io/js-sdk-core";var en=e=>{let[r,n]=br(""),{user:o,client:s,otpState:c,setOtpState:t}=Cr(g),i=Z(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Z(d=>y(void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Z(l=>y(void 0,[l],function*({code:u,phone:d,disableSignup:a}){var S;try{if(o)throw new Ce({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(!(d||r))throw new Ce({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let k=yield s.auth.phone.loginWithCode(d||r,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};import*as D from"expo-linking";import{useCallback as ee,useContext as vr,useRef as Er}from"react";import{PrivyClientError as A}from"@privy-io/js-sdk-core";var ln=e=>{let{appState:r,getCurrentAppState:n}=V(),{client:o,user:s,farcasterState:c,setFarcasterState:t}=vr(g),i=Er(!1),m=ee(d=>{var l;let a=p(d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=ee(()=>{i.current=!0},[]);return{linkWithFarcaster:ee((S,...w)=>y(void 0,[S,...w],function*({relyingParty:d,redirectUrl:a},l={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,!s)throw new A({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:W,channel_token:b}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:D.createURL(a!=null?a:"/")});if(!W)throw new A({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!b)throw new A({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(W),t({status:"polling-status"});let _=0;for(;_<l.pollAttempts;){if(i.current)throw new A({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield F(l.pollIntervalMs);continue}let O=yield o.auth.farcaster.getFarcasterStatus({channel_token:b});if(O.state==="completed"){t({status:"submitting-token"});let T=yield o.auth.farcaster.link(x({channel_token:b},O));return t({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,T),T}_++,yield F(l.pollIntervalMs)}throw new A({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw m(W)}}),[o,e==null?void 0:e.onSuccess,m,t,s]),state:c,cancel:h}};import{useCallback as be,useContext as Wr}from"react";var fn=e=>{let{client:r}=Wr(g),n=be(s=>{var t;let c=p(s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkFarcaster:be(c=>y(void 0,[c],function*({fid:s}){var t;try{let i=yield r.auth.farcaster.unlink({fid:s});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw n(i)}}),[r,e==null?void 0:e.onSuccess,n])}};import*as G from"expo-linking";import{useCallback as oe,useContext as Lr,useRef as Pr}from"react";import{PrivyClientError as U}from"@privy-io/js-sdk-core";var xn=e=>{let{appState:r,getCurrentAppState:n}=V(),{client:o,user:s,farcasterState:c,setFarcasterState:t}=Lr(g),i=Pr(!1),m=oe(d=>{var l;let a=p(d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=oe(()=>{i.current=!0},[]);return{loginWithFarcaster:oe((w,...k)=>y(void 0,[w,...k],function*({relyingParty:d,redirectUrl:a,disableSignup:l},S={pollAttempts:10,pollIntervalMs:1e3}){var W;try{if(i.current=!1,s)throw new U({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:b,channel_token:_}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:G.createURL(a!=null?a:"/")});if(!b)throw new U({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new U({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(b),t({status:"polling-status"});let O=0;for(;O<S.pollAttempts;){if(i.current)throw new U({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield F(S.pollIntervalMs);continue}let T=yield o.auth.farcaster.getFarcasterStatus({channel_token:_});if(T.state==="completed"){t({status:"submitting-token"});let q=yield o.auth.farcaster.authenticate(x({channel_token:_,mode:l?"no-signup":"login-or-sign-up"},T));return t({status:"done"}),(W=e==null?void 0:e.onSuccess)==null||W.call(e,q.user,q.is_new_user),q.user}O++,yield F(S.pollIntervalMs)}throw new U({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw m(b)}}),[o,m,e==null?void 0:e.onSuccess,t,s,r]),state:c,cancel:h}};import{useCallback as ve,useContext as _r}from"react";var Ln=e=>{let{client:r}=_r(g),n=ve(s=>{var t;let c=p(s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkOAuth:ve(t=>y(void 0,[t],function*({provider:s,subject:c}){var i;try{let m=yield r.auth.oauth.unlink(s,c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw n(m)}}),[r,e==null?void 0:e.onSuccess,n])}};import{useContext as Fr,useEffect as Or,useRef as Tr}from"react";var Tn=e=>{let{client:r}=Fr(g),n=Tr(e.onOAuthTokenGrant);n.current=e.onOAuthTokenGrant,Or(()=>{let{unsubscribe:o}=r.addOAuthTokensListener(s=>{n.current(s)});return o},[r])};import{useEffect as Ur}from"react";import{useContext as Ar,useEffect as ne}from"react";var ie=(e={})=>{let{wallet:r,createWalletCallbacks:n,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s}=Ar(g),{onCreateWalletSuccess:c,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:m,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:u}=e;return ne(()=>{n.current={onSuccess:c,onError:t}},[c,t]),ne(()=>{o.current={onSuccess:m,onError:i}},[m,i]),ne(()=>{s.current={onSuccess:h,onError:u}},[m,i]),r};var Vn=({onStateChange:e})=>{let r=ie();return Ur(()=>{e(r)},[r])};import{useContext as Mr}from"react";var Nn=()=>{let{getIdentityToken:e}=Mr(g);return{getIdentityToken:e}};import{useCallback as Ee,useContext as Ir}from"react";import{PrivyClientError as Br}from"@privy-io/js-sdk-core";var Jn=e=>{let{user:r,client:n}=Ir(g),o=Ee(c=>{var i;let t=p(c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:Ee(()=>y(void 0,null,function*(){var c;try{if(r)throw new Br({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield n.auth.guest.create();return(c=e==null?void 0:e.onSuccess)==null||c.call(e,t.user,t.is_new_user),t.user}catch(t){throw o(t)}}),[n,o,r,e==null?void 0:e.onSuccess])}};import{useContext as Hr,useEffect as We}from"react";var Vr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:o}=Hr(g),{onCreateWalletSuccess:s,onCreateWalletError:c,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return We(()=>{n.current={onSuccess:s,onError:c}},[s,c]),We(()=>{o.current={onSuccess:i,onError:t}},[i,t]),r};import{useContext as Dr}from"react";var Gr=()=>{let{client:e}=Dr(g);return e};import{useContext as zr}from"react";var Nr=()=>{let{user:e,isReady:r,logout:n,getAccessToken:o}=zr(g);return{user:e,isReady:r,logout:n,getAccessToken:o}};import K,{useContext as $t,useRef as Jt}from"react";import $e,{useContext as Mt,useEffect as Je,useMemo as It,useState as Qe}from"react";import E,{useCallback as gt,useEffect as ft,useState as Be}from"react";import{View as de,StyleSheet as ht,KeyboardAvoidingView as yt,Platform as St}from"react-native";import z from"react";import{View as Jr,Text as Qr,Pressable as Xr,StyleSheet as Yr}from"react-native";import ae,{useEffect as jr}from"react";import{Animated as se,Easing as Rr,useAnimatedValue as Kr}from"react-native";import qr,{Path as $r}from"react-native-svg";var Le=()=>{let e=Kr(0);jr(()=>{e.setValue(0);let n=se.loop(se.timing(e,{toValue:1,duration:1200,useNativeDriver:!0,easing:Rr.linear}));return n.start(),()=>n.stop()},[]);let r=e.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]});return ae.createElement(se.View,{style:{transform:[{rotate:r}]}},ae.createElement(qr,{width:20,height:20,viewBox:"0 0 20 20",fill:"none"},ae.createElement($r,{d:"M19 10a9 9 0 11-6.219-8.56",stroke:"#fff",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))};var f={interactive:"#5B4FFF",white:"#FFFFFF",black:"#000000",placeholder:"#9498B8",success:"#22C55E",successDark:"#15803D",inputBackground:"#F3F3F3",text:"#040217",icon:"#110F2A",border:"#E2E3F0",error:"#EF4444",errorDark:"#B91C1C",textMuted:"#64668B",textTitle:"#1A1C29"};var N=o=>{var s=o,{title:e,loading:r=!1}=s,n=H(s,["title","loading"]);return z.createElement(Xr,x({},n),z.createElement(Jr,{style:Pe.buttonBox},r?z.createElement(Le,null):z.createElement(Qr,{style:Pe.buttonLabel},e)))},Pe=Yr.create({buttonBox:{height:54,justifyContent:"center",alignItems:"center",borderRadius:14,backgroundColor:f.interactive,marginVertical:16},buttonLabel:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:16,lineHeight:24,color:f.white}});import v,{useState as tt,useRef as ot}from"react";import{View as Oe,TextInput as nt,Pressable as it,Text as Ae,StyleSheet as at}from"react-native";import _e from"react";import{View as Zr,Text as et,StyleSheet as rt}from"react-native";var Fe=({value:e,isFocused:r,isSuccess:n,isError:o})=>_e.createElement(Zr,{style:[M.box,r&&M.focusedBox,n&&M.successBox,o&&M.errorBox]},_e.createElement(et,{style:M.text},e)),M=rt.create({box:{borderWidth:1,borderColor:f.border,borderRadius:12,height:64,width:48,justifyContent:"center",alignItems:"center"},focusedBox:{borderWidth:2,borderColor:f.interactive},successBox:{borderColor:f.success},errorBox:{borderColor:f.error},text:{fontFamily:"InterMedium",fontWeight:"500",fontSize:16,lineHeight:20,color:f.text}});var Te=6,st=[0,1,2,"-",3,4,5];function le({value:e="",status:r=" ",onChangeText:n=()=>{},editable:o=!0,success:s=!1,error:c=!1,autoFocus:t=!1}){let i=ot(null),[m,h]=tt(!1),u=()=>{var l;(l=i==null?void 0:i.current)==null||l.focus()},d=l=>{let S=l.replace(/\D/g,"");n(S)},a=m?Math.min(e.length,Te-1):void 0;return v.createElement(Oe,{style:L.container},v.createElement(nt,{autoFocus:t,style:L.invisibleTextInput,value:e,onChangeText:d,maxLength:Te,ref:i,editable:o,onFocus:()=>h(!0),onBlur:()=>h(!1),keyboardType:"numeric"}),v.createElement(it,{onPress:u,disabled:!o},v.createElement(Oe,{style:L.codeContainer},st.map((l,S)=>l==="-"?v.createElement(lt,{key:S}):v.createElement(Fe,{key:S,isFocused:a===l,value:e[l]||"",isSuccess:s,isError:c})))),v.createElement(Ae,{style:[L.statusText,s&&L.statusSuccess,c&&L.statusError]},r))}var lt=()=>v.createElement(Ae,{style:L.separator},"-"),L=at.create({container:{justifyContent:"center",paddingHorizontal:0,gap:6},invisibleTextInput:{position:"absolute",opacity:0},codeContainer:{flexDirection:"row",alignItems:"center",gap:10,justifyContent:"space-between"},separator:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:18,lineHeight:24,color:f.black},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark},statusSuccess:{color:f.successDark}});import ce from"react";import{StyleSheet as ct,View as ut,Text as Ue}from"react-native";var j=({title:e,subtitle:r})=>ce.createElement(ut,{style:ue.titleContainer},ce.createElement(Ue,{style:ue.title},e),r&&ce.createElement(Ue,{style:ue.subtitle},r)),ue=ct.create({titleContainer:{alignItems:"center",gap:16},title:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:20,lineHeight:32,color:f.textTitle},subtitle:{fontFamily:"Inter",fontWeight:"400",fontSize:16,lineHeight:24,color:f.textMuted,textAlign:"center"}});import I from"react";import{StyleSheet as mt,Text as Me,TouchableOpacity as dt}from"react-native";var Ie=({hint:e,link:r,onPress:n,disabled:o})=>I.createElement(Me,{style:me.hintText},e,r&&I.createElement(I.Fragment,null," ",I.createElement(dt,{onPress:n,disabled:o},I.createElement(Me,{style:[me.linkText,o&&me.disabledLink]},r)))),me=mt.create({hintText:{fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22,color:f.textMuted},linkText:{fontFamily:"InterMedium",fontWeight:"500",color:f.interactive},disabledLink:{color:f.textMuted}});var pt=3e4,kt=()=>{let[e,r]=Be(!1),n=gt(()=>{r(!1),setTimeout(()=>{r(!0)},pt)},[]);return ft(()=>{n()},[]),[e,n]},He=({loginWithCode:e,requestNewCode:r,subtitle:n,isLoading:o,isError:s,isDone:c})=>{let[t,i]=Be(""),m=a=>{i(a),a.length===6&&e(a)},[h,u]=kt(),d=()=>{r(),u()};return E.createElement(yt,{behavior:St.OS==="ios"?"padding":void 0,style:ge.innerContainer},E.createElement(de,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},E.createElement(de,{style:ge.content},E.createElement(de,{style:ge.formContainer},E.createElement(j,{title:"Enter confirmation code",subtitle:n}),E.createElement(le,{value:t,editable:!o,onChangeText:m,success:c,error:s,status:c?"Success.":s?"Code is incorrect.":void 0}),E.createElement(Ie,{hint:"Didn\u2019t get an email?",link:"Resend code",onPress:d,disabled:!h}))),E.createElement(N,{title:"Continue"})))},ge=ht.create({modalContent:{backgroundColor:"#ffffff"},innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});import C,{useState as Ot}from"react";import{View as he,StyleSheet as Tt,KeyboardAvoidingView as At,Platform as Ut}from"react-native";import fe from"react";import{StyleSheet as Ct,Text as bt,View as vt}from"react-native";import Ve from"react";import wt,{Path as xt}from"react-native-svg";var De=()=>Ve.createElement(wt,{width:15,height:15,viewBox:"0 0 15 15",fill:"none"},Ve.createElement(xt,{fillRule:"evenodd",clipRule:"evenodd",d:"M2.371 10.535c0 1.664 1.535 2.41 3.036 2.415 3.51 0 7.395-2.157 7.375-5.767-.015-2.603-2.407-4.818-5.238-4.797-2.695 0-5.326 1.758-5.326 4.153 0 .643.37 1.266 1.334 1.336-.804.796-1.18 1.75-1.18 2.66zm5.182-2.352c.563 0 1.019-.548 1.019-1.224 0-.676-.456-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224zm2.922 0c.562 0 1.019-.548 1.019-1.224 0-.676-.457-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224z",fill:f.placeholder}));var ze=()=>fe.createElement(vt,{style:Ge.legalFooterContainer},fe.createElement(De,null),fe.createElement(bt,{style:Ge.legalText},"Protected by Privy")),Ge=Ct.create({legalFooterContainer:{flexDirection:"row",padding:12,alignItems:"center",justifyContent:"center",gap:2},legalText:{fontFamily:"Inter",fontWeight:"400",fontSize:12,lineHeight:17,color:f.textMuted}});import R,{useState as Et}from"react";import{View as Ne,TextInput as Wt,StyleSheet as Lt,Text as Pt}from"react-native";var je=s=>{var c=s,{error:e,status:r=" ",LeftIcon:n}=c,o=H(c,["error","status","LeftIcon"]);let[t,i]=Et(!1);return R.createElement(Ne,{style:P.container},R.createElement(Ne,{style:[P.inputBox,t&&P.inputBoxFocused,e&&P.inputBoxError]},n,R.createElement(Wt,x({cursorColor:f.interactive,placeholderTextColor:f.placeholder,onFocus:()=>i(!0),onBlur:()=>i(!1),autoCapitalize:"none",returnKeyType:"next",multiline:!1,numberOfLines:1,style:P.input},o))),R.createElement(Pt,{style:[P.statusText,e&&P.statusError]},r))},P=Lt.create({container:{gap:6},input:{flex:1,fontFamily:"Inter",fontWeight:"400",fontSize:18,height:30,color:f.text},inputBox:{flexDirection:"row",paddingHorizontal:16,height:64,backgroundColor:f.inputBackground,borderRadius:14,alignItems:"center",columnGap:10,borderWidth:2,borderColor:f.border},inputBoxFocused:{borderColor:f.interactive},inputBoxError:{borderColor:f.error},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark}});import Re from"react";import _t,{Path as Ft}from"react-native-svg";var Ke=()=>Re.createElement(_t,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},Re.createElement(Ft,{d:"M22 7l-8.97 5.7a1.94 1.94 0 01-2.06 0L2 7m2-3h16a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2z",stroke:f.icon,strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}));var qe=({sendCode:e,isLoading:r,isError:n,initialEmail:o})=>{let[s,c]=Ot(o!=null?o:"");return C.createElement(At,{behavior:Ut.OS==="ios"?"padding":void 0,style:ye.innerContainer},C.createElement(he,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},C.createElement(he,{style:ye.content},C.createElement(he,{style:ye.formContainer},C.createElement(j,{title:"Enter your email"}),C.createElement(je,{LeftIcon:C.createElement(Ke,null),value:s,onChangeText:c,error:n,status:n?"Email is incorrect.":void 0,placeholder:"your@email.com",autoComplete:"email",keyboardType:"email-address"})),C.createElement(ze,null)),C.createElement(N,{title:"Continue",loading:r,onPress:()=>e(s)})))},ye=Tt.create({innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var Bt=600,Xe=({goBackRef:e})=>{let{closeLoginModal:r,setOtpState:n}=Mt(g),[o,s]=Qe(""),{state:c,loginWithCode:t,sendCode:i}=we(),[m,h]=Qe("email"),{step:u,isLoading:d=!1,isError:a=!1,isDone:l=!1}=It(()=>{switch(c.status){case"initial":return{step:{type:"email"}};case"sending-code":return{step:{type:m},isLoading:!0};case"awaiting-code-input":return{step:{type:"code"}};case"submitting-code":return{step:{type:"code"},isLoading:!0};case"done":return{step:{type:"code"},isDone:!0};case"error":return{step:{type:m},isError:!0}}},[m,c.status]);switch(m!==u.type&&h(u.type),Je(()=>{if(!l)return;let S=setTimeout(()=>{r()},Bt);return()=>clearTimeout(S)},[l,r]),Je(()=>{if(u.type==="code")return e.current=()=>{n({status:"initial"})},()=>{e.current=null}},[u.type,n]),u.type){case"code":return $e.createElement(He,{loginWithCode:S=>t({code:S,email:o}),requestNewCode:()=>i({email:o}),subtitle:`Please check ${o} for a message with your login code.`,isLoading:d,isError:a,isDone:l});case"email":return $e.createElement(qe,{initialEmail:o,sendCode:S=>{s(S),i({email:S})},isLoading:d,isError:a})}};import B from"react";import{Pressable as Dt,StyleSheet as Gt,View as er}from"react-native";import Ye from"react";import Ht,{Path as Vt}from"react-native-svg";var Ze=()=>Ye.createElement(Ht,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},Ye.createElement(Vt,{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",fill:"#45483C"}));var rr=({goBack:e})=>B.createElement(er,{style:tr.navigationBar},B.createElement(zt,{onPress:e})),zt=e=>B.createElement(Dt,x({},e),B.createElement(er,{style:tr.backButton},B.createElement(Ze,null))),tr=Gt.create({navigationBar:{height:48},backButton:{width:48,height:48,justifyContent:"center",alignItems:"center"}});import or from"react";import{Modal as Nt,View as jt,StyleSheet as nr}from"react-native";import{useSafeAreaInsets as Rt}from"react-native-safe-area-context";var Kt=()=>{let e=Rt();return{paddingTop:e.top,paddingBottom:e.bottom,paddingLeft:e.left,paddingRight:e.right}},ir=({children:e,visible:r})=>{let n=Kt();return or.createElement(Nt,{animationType:"slide",transparent:!0,visible:r},or.createElement(jt,{style:[nr.absoluteFill,qt.modalContent,n]},e))},qt=nr.create({modalContent:{backgroundColor:f.white}});var Qt=({goBackRef:e})=>K.createElement(Xe,{goBackRef:e}),ns=()=>{let{privyModalOpen:e,closeLoginModal:r}=$t(g),n=e!==null,o=Jt(null);return K.createElement(ir,{visible:n},K.createElement(rr,{goBack:()=>{var s;return((s=o.current)!=null?s:r)()}}),K.createElement(Qt,{goBackRef:o}))};import{useContext as Xt}from"react";var ls=()=>{let{loginWithUI:e}=Xt(g);return{login:e}};export{g as PrivyContext,ns as PrivyElements,Zt as PrivyProvider,cr as SecureStorageAdapter,Yt as getAccessToken,ao as hasError,eo as isConnected,to as isConnecting,io as isCreating,oo as isDisconnected,no as isNotCreated,ro as isReconnecting,so as needsRecovery,Jn as useCreateGuestAccount,Vr as useEmbeddedSolanaWallet,ie as useEmbeddedWallet,Vn as useEmbeddedWalletStateChange,Nn as useIdentityToken,Uo as useLinkEmail,qo as useLinkSMS,ln as useLinkWithFarcaster,sr as useLinkWithOAuth,go as useLinkWithSiwe,we as useLoginWithEmail,xn as useLoginWithFarcaster,ar as useLoginWithOAuth,en as useLoginWithSMS,wo as useLoginWithSiwe,lr as useOAuthFlow,Tn as useOAuthTokens,Nr as usePrivy,Gr as usePrivyClient,ls as usePrivyLogin,fn as useUnlinkFarcaster,Ln as useUnlinkOAuth,Lo as useUnlinkWallet};
1
+ import{a as x,c as H,d as y,e as p,f as F,g as V,h as ar,i as sr,j as lr,k as cr,l as g,m as Yt,n as Zt,o as eo,p as ro,q as to,r as oo,s as no,t as io,u as ao,v as so}from"./chunk-2IOW73TR.js";export*from"@privy-io/js-sdk-core";import{useCallback as $,useContext as ur}from"react";import{PrivyClientError as mr}from"@privy-io/js-sdk-core";var go=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=ur(g),c=$(m=>{var u;let h=p(m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=$(d=>y(void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]),i=$(u=>y(void 0,[u],function*({signature:m,messageOverride:h}){var d;try{if(!r)throw new mr({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let a=yield n.auth.siwe.linkWithSiwe(m,void 0,h);return o({status:"done"}),(d=e==null?void 0:e.onSuccess)==null||d.call(e,a),a}catch(a){throw c(a)}}),[r,n,c,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:s}};import{useCallback as J,useContext as dr}from"react";import{PrivyClientError as gr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=dr(g),c=J(m=>{var u;let h=p(m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=J(d=>y(void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:J(d=>y(void 0,[d],function*({signature:m,messageOverride:h,disableSignup:u}){var a;try{if(r)throw new gr({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"});o({status:"submitting-signature"});let l=yield n.auth.siwe.loginWithSiwe(m,void 0,h,u?"no-signup":"login-or-sign-up");return o({status:"done"}),(a=e==null?void 0:e.onSuccess)==null||a.call(e,l.user,l.is_new_user),l.user}catch(l){throw c(l)}}),[r,n,c,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:s}};import{useCallback as Se,useContext as fr}from"react";import{PrivyClientError as hr}from"@privy-io/js-sdk-core";var Lo=e=>{let{user:r,client:n}=fr(g),o=Se(c=>{var i;let t=p(c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:Se(t=>y(void 0,[t],function*({address:c}){var i;try{if(!r)throw new hr({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let m=yield n.auth.siwe.unlinkWallet(c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw o(m)}}),[r,n,o,e==null?void 0:e.onSuccess])}};import{useCallback as Q,useContext as yr,useState as Sr}from"react";import{PrivyClientError as pe}from"@privy-io/js-sdk-core";var Uo=e=>{let[r,n]=Sr(""),{user:o,client:s,otpState:c,setOtpState:t}=yr(g),i=Q(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Q(d=>y(void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Q(a=>y(void 0,[a],function*({code:u,email:d}){var l;try{if(!o)throw new pe({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let S=d||r;if(!S)throw new pe({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield s.auth.email.linkWithCode(S,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};import{useCallback as X,useContext as pr,useState as kr}from"react";import{PrivyClientError as ke}from"@privy-io/js-sdk-core";var we=e=>{let[r,n]=kr(""),{user:o,client:s,otpState:c,setOtpState:t}=pr(g),i=X(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=X(d=>y(void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=X(l=>y(void 0,[l],function*({code:u,email:d,disableSignup:a}){var S;try{if(o)throw new ke({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 w=d||r;if(!w)throw new ke({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let k=yield s.auth.email.loginWithCode(w,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};import{useCallback as Y,useContext as wr,useState as xr}from"react";import{PrivyClientError as xe}from"@privy-io/js-sdk-core";var qo=e=>{let[r,n]=xr(""),{user:o,client:s,otpState:c,setOtpState:t}=wr(g),i=Y(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Y(d=>y(void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Y(a=>y(void 0,[a],function*({code:u,phone:d}){var l;try{if(!o)throw new xe({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(!(d||r))throw new xe({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield s.auth.phone.linkWithCode(d||r,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};import{useCallback as Z,useContext as Cr,useState as br}from"react";import{PrivyClientError as Ce}from"@privy-io/js-sdk-core";var en=e=>{let[r,n]=br(""),{user:o,client:s,otpState:c,setOtpState:t}=Cr(g),i=Z(u=>{var a;let d=p(u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=Z(d=>y(void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=Z(l=>y(void 0,[l],function*({code:u,phone:d,disableSignup:a}){var S;try{if(o)throw new Ce({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(!(d||r))throw new Ce({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let k=yield s.auth.phone.loginWithCode(d||r,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};import*as D from"expo-linking";import{useCallback as ee,useContext as vr,useRef as Er}from"react";import{PrivyClientError as A}from"@privy-io/js-sdk-core";var ln=e=>{let{appState:r,getCurrentAppState:n}=V(),{client:o,user:s,farcasterState:c,setFarcasterState:t}=vr(g),i=Er(!1),m=ee(d=>{var l;let a=p(d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=ee(()=>{i.current=!0},[]);return{linkWithFarcaster:ee((S,...w)=>y(void 0,[S,...w],function*({relyingParty:d,redirectUrl:a},l={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,!s)throw new A({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:W,channel_token:b}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:D.createURL(a!=null?a:"/")});if(!W)throw new A({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!b)throw new A({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(W),t({status:"polling-status"});let _=0;for(;_<l.pollAttempts;){if(i.current)throw new A({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield F(l.pollIntervalMs);continue}let O=yield o.auth.farcaster.getFarcasterStatus({channel_token:b});if(O.state==="completed"){t({status:"submitting-token"});let T=yield o.auth.farcaster.link(x({channel_token:b},O));return t({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,T),T}_++,yield F(l.pollIntervalMs)}throw new A({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw m(W)}}),[o,e==null?void 0:e.onSuccess,m,t,s]),state:c,cancel:h}};import{useCallback as be,useContext as Wr}from"react";var fn=e=>{let{client:r}=Wr(g),n=be(s=>{var t;let c=p(s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkFarcaster:be(c=>y(void 0,[c],function*({fid:s}){var t;try{let i=yield r.auth.farcaster.unlink({fid:s});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw n(i)}}),[r,e==null?void 0:e.onSuccess,n])}};import*as G from"expo-linking";import{useCallback as oe,useContext as Lr,useRef as Pr}from"react";import{PrivyClientError as U}from"@privy-io/js-sdk-core";var xn=e=>{let{appState:r,getCurrentAppState:n}=V(),{client:o,user:s,farcasterState:c,setFarcasterState:t}=Lr(g),i=Pr(!1),m=oe(d=>{var l;let a=p(d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=oe(()=>{i.current=!0},[]);return{loginWithFarcaster:oe((w,...k)=>y(void 0,[w,...k],function*({relyingParty:d,redirectUrl:a,disableSignup:l},S={pollAttempts:10,pollIntervalMs:1e3}){var W;try{if(i.current=!1,s)throw new U({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:b,channel_token:_}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:G.createURL(a!=null?a:"/")});if(!b)throw new U({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new U({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(b),t({status:"polling-status"});let O=0;for(;O<S.pollAttempts;){if(i.current)throw new U({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield F(S.pollIntervalMs);continue}let T=yield o.auth.farcaster.getFarcasterStatus({channel_token:_});if(T.state==="completed"){t({status:"submitting-token"});let q=yield o.auth.farcaster.authenticate(x({channel_token:_,mode:l?"no-signup":"login-or-sign-up"},T));return t({status:"done"}),(W=e==null?void 0:e.onSuccess)==null||W.call(e,q.user,q.is_new_user),q.user}O++,yield F(S.pollIntervalMs)}throw new U({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw m(b)}}),[o,m,e==null?void 0:e.onSuccess,t,s,r]),state:c,cancel:h}};import{useCallback as ve,useContext as _r}from"react";var Ln=e=>{let{client:r}=_r(g),n=ve(s=>{var t;let c=p(s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkOAuth:ve(t=>y(void 0,[t],function*({provider:s,subject:c}){var i;try{let m=yield r.auth.oauth.unlink(s,c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw n(m)}}),[r,e==null?void 0:e.onSuccess,n])}};import{useContext as Fr,useEffect as Or,useRef as Tr}from"react";var Tn=e=>{let{client:r}=Fr(g),n=Tr(e.onOAuthTokenGrant);n.current=e.onOAuthTokenGrant,Or(()=>{let{unsubscribe:o}=r.addOAuthTokensListener(s=>{n.current(s)});return o},[r])};import{useEffect as Ur}from"react";import{useContext as Ar,useEffect as ne}from"react";var ie=(e={})=>{let{wallet:r,createWalletCallbacks:n,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s}=Ar(g),{onCreateWalletSuccess:c,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:m,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:u}=e;return ne(()=>{n.current={onSuccess:c,onError:t}},[c,t]),ne(()=>{o.current={onSuccess:m,onError:i}},[m,i]),ne(()=>{s.current={onSuccess:h,onError:u}},[m,i]),r};var Vn=({onStateChange:e})=>{let r=ie();return Ur(()=>{e(r)},[r])};import{useContext as Mr}from"react";var Nn=()=>{let{getIdentityToken:e}=Mr(g);return{getIdentityToken:e}};import{useCallback as Ee,useContext as Ir}from"react";import{PrivyClientError as Br}from"@privy-io/js-sdk-core";var Jn=e=>{let{user:r,client:n}=Ir(g),o=Ee(c=>{var i;let t=p(c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:Ee(()=>y(void 0,null,function*(){var c;try{if(r)throw new Br({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield n.auth.guest.create();return(c=e==null?void 0:e.onSuccess)==null||c.call(e,t.user,t.is_new_user),t.user}catch(t){throw o(t)}}),[n,o,r,e==null?void 0:e.onSuccess])}};import{useContext as Hr,useEffect as We}from"react";var Vr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:o}=Hr(g),{onCreateWalletSuccess:s,onCreateWalletError:c,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return We(()=>{n.current={onSuccess:s,onError:c}},[s,c]),We(()=>{o.current={onSuccess:i,onError:t}},[i,t]),r};import{useContext as Dr}from"react";var Gr=()=>{let{client:e}=Dr(g);return e};import{useContext as zr}from"react";var Nr=()=>{let{user:e,isReady:r,logout:n,getAccessToken:o}=zr(g);return{user:e,isReady:r,logout:n,getAccessToken:o}};import K,{useContext as $t,useRef as Jt}from"react";import $e,{useContext as Mt,useEffect as Je,useMemo as It,useState as Qe}from"react";import E,{useCallback as gt,useEffect as ft,useState as Be}from"react";import{View as de,StyleSheet as ht,KeyboardAvoidingView as yt,Platform as St}from"react-native";import z from"react";import{View as Jr,Text as Qr,Pressable as Xr,StyleSheet as Yr}from"react-native";import ae,{useEffect as jr}from"react";import{Animated as se,Easing as Rr,useAnimatedValue as Kr}from"react-native";import qr,{Path as $r}from"react-native-svg";var Le=()=>{let e=Kr(0);jr(()=>{e.setValue(0);let n=se.loop(se.timing(e,{toValue:1,duration:1200,useNativeDriver:!0,easing:Rr.linear}));return n.start(),()=>n.stop()},[]);let r=e.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]});return ae.createElement(se.View,{style:{transform:[{rotate:r}]}},ae.createElement(qr,{width:20,height:20,viewBox:"0 0 20 20",fill:"none"},ae.createElement($r,{d:"M19 10a9 9 0 11-6.219-8.56",stroke:"#fff",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))};var f={interactive:"#5B4FFF",white:"#FFFFFF",black:"#000000",placeholder:"#9498B8",success:"#22C55E",successDark:"#15803D",inputBackground:"#F3F3F3",text:"#040217",icon:"#110F2A",border:"#E2E3F0",error:"#EF4444",errorDark:"#B91C1C",textMuted:"#64668B",textTitle:"#1A1C29"};var N=o=>{var s=o,{title:e,loading:r=!1}=s,n=H(s,["title","loading"]);return z.createElement(Xr,x({},n),z.createElement(Jr,{style:Pe.buttonBox},r?z.createElement(Le,null):z.createElement(Qr,{style:Pe.buttonLabel},e)))},Pe=Yr.create({buttonBox:{height:54,justifyContent:"center",alignItems:"center",borderRadius:14,backgroundColor:f.interactive,marginVertical:16},buttonLabel:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:16,lineHeight:24,color:f.white}});import v,{useState as tt,useRef as ot}from"react";import{View as Oe,TextInput as nt,Pressable as it,Text as Ae,StyleSheet as at}from"react-native";import _e from"react";import{View as Zr,Text as et,StyleSheet as rt}from"react-native";var Fe=({value:e,isFocused:r,isSuccess:n,isError:o})=>_e.createElement(Zr,{style:[M.box,r&&M.focusedBox,n&&M.successBox,o&&M.errorBox]},_e.createElement(et,{style:M.text},e)),M=rt.create({box:{borderWidth:1,borderColor:f.border,borderRadius:12,height:64,width:48,justifyContent:"center",alignItems:"center"},focusedBox:{borderWidth:2,borderColor:f.interactive},successBox:{borderColor:f.success},errorBox:{borderColor:f.error},text:{fontFamily:"InterMedium",fontWeight:"500",fontSize:16,lineHeight:20,color:f.text}});var Te=6,st=[0,1,2,"-",3,4,5];function le({value:e="",status:r=" ",onChangeText:n=()=>{},editable:o=!0,success:s=!1,error:c=!1,autoFocus:t=!1}){let i=ot(null),[m,h]=tt(!1),u=()=>{var l;(l=i==null?void 0:i.current)==null||l.focus()},d=l=>{let S=l.replace(/\D/g,"");n(S)},a=m?Math.min(e.length,Te-1):void 0;return v.createElement(Oe,{style:L.container},v.createElement(nt,{autoFocus:t,style:L.invisibleTextInput,value:e,onChangeText:d,maxLength:Te,ref:i,editable:o,onFocus:()=>h(!0),onBlur:()=>h(!1),keyboardType:"numeric"}),v.createElement(it,{onPress:u,disabled:!o},v.createElement(Oe,{style:L.codeContainer},st.map((l,S)=>l==="-"?v.createElement(lt,{key:S}):v.createElement(Fe,{key:S,isFocused:a===l,value:e[l]||"",isSuccess:s,isError:c})))),v.createElement(Ae,{style:[L.statusText,s&&L.statusSuccess,c&&L.statusError]},r))}var lt=()=>v.createElement(Ae,{style:L.separator},"-"),L=at.create({container:{justifyContent:"center",paddingHorizontal:0,gap:6},invisibleTextInput:{position:"absolute",opacity:0},codeContainer:{flexDirection:"row",alignItems:"center",gap:10,justifyContent:"space-between"},separator:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:18,lineHeight:24,color:f.black},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark},statusSuccess:{color:f.successDark}});import ce from"react";import{StyleSheet as ct,View as ut,Text as Ue}from"react-native";var j=({title:e,subtitle:r})=>ce.createElement(ut,{style:ue.titleContainer},ce.createElement(Ue,{style:ue.title},e),r&&ce.createElement(Ue,{style:ue.subtitle},r)),ue=ct.create({titleContainer:{alignItems:"center",gap:16},title:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:20,lineHeight:32,color:f.textTitle},subtitle:{fontFamily:"Inter",fontWeight:"400",fontSize:16,lineHeight:24,color:f.textMuted,textAlign:"center"}});import I from"react";import{StyleSheet as mt,Text as Me,TouchableOpacity as dt}from"react-native";var Ie=({hint:e,link:r,onPress:n,disabled:o})=>I.createElement(Me,{style:me.hintText},e,r&&I.createElement(I.Fragment,null," ",I.createElement(dt,{onPress:n,disabled:o},I.createElement(Me,{style:[me.linkText,o&&me.disabledLink]},r)))),me=mt.create({hintText:{fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22,color:f.textMuted},linkText:{fontFamily:"InterMedium",fontWeight:"500",color:f.interactive},disabledLink:{color:f.textMuted}});var pt=3e4,kt=()=>{let[e,r]=Be(!1),n=gt(()=>{r(!1),setTimeout(()=>{r(!0)},pt)},[]);return ft(()=>{n()},[]),[e,n]},He=({loginWithCode:e,requestNewCode:r,subtitle:n,isLoading:o,isError:s,isDone:c})=>{let[t,i]=Be(""),m=a=>{i(a),a.length===6&&e(a)},[h,u]=kt(),d=()=>{r(),u()};return E.createElement(yt,{behavior:St.OS==="ios"?"padding":void 0,style:ge.innerContainer},E.createElement(de,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},E.createElement(de,{style:ge.content},E.createElement(de,{style:ge.formContainer},E.createElement(j,{title:"Enter confirmation code",subtitle:n}),E.createElement(le,{value:t,editable:!o,onChangeText:m,success:c,error:s,status:c?"Success.":s?"Code is incorrect.":void 0}),E.createElement(Ie,{hint:"Didn\u2019t get an email?",link:"Resend code",onPress:d,disabled:!h}))),E.createElement(N,{title:"Continue"})))},ge=ht.create({modalContent:{backgroundColor:"#ffffff"},innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});import C,{useState as Ot}from"react";import{View as he,StyleSheet as Tt,KeyboardAvoidingView as At,Platform as Ut}from"react-native";import fe from"react";import{StyleSheet as Ct,Text as bt,View as vt}from"react-native";import Ve from"react";import wt,{Path as xt}from"react-native-svg";var De=()=>Ve.createElement(wt,{width:15,height:15,viewBox:"0 0 15 15",fill:"none"},Ve.createElement(xt,{fillRule:"evenodd",clipRule:"evenodd",d:"M2.371 10.535c0 1.664 1.535 2.41 3.036 2.415 3.51 0 7.395-2.157 7.375-5.767-.015-2.603-2.407-4.818-5.238-4.797-2.695 0-5.326 1.758-5.326 4.153 0 .643.37 1.266 1.334 1.336-.804.796-1.18 1.75-1.18 2.66zm5.182-2.352c.563 0 1.019-.548 1.019-1.224 0-.676-.456-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224zm2.922 0c.562 0 1.019-.548 1.019-1.224 0-.676-.457-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224z",fill:f.placeholder}));var ze=()=>fe.createElement(vt,{style:Ge.legalFooterContainer},fe.createElement(De,null),fe.createElement(bt,{style:Ge.legalText},"Protected by Privy")),Ge=Ct.create({legalFooterContainer:{flexDirection:"row",padding:12,alignItems:"center",justifyContent:"center",gap:2},legalText:{fontFamily:"Inter",fontWeight:"400",fontSize:12,lineHeight:17,color:f.textMuted}});import R,{useState as Et}from"react";import{View as Ne,TextInput as Wt,StyleSheet as Lt,Text as Pt}from"react-native";var je=s=>{var c=s,{error:e,status:r=" ",LeftIcon:n}=c,o=H(c,["error","status","LeftIcon"]);let[t,i]=Et(!1);return R.createElement(Ne,{style:P.container},R.createElement(Ne,{style:[P.inputBox,t&&P.inputBoxFocused,e&&P.inputBoxError]},n,R.createElement(Wt,x({cursorColor:f.interactive,placeholderTextColor:f.placeholder,onFocus:()=>i(!0),onBlur:()=>i(!1),autoCapitalize:"none",returnKeyType:"next",multiline:!1,numberOfLines:1,style:P.input},o))),R.createElement(Pt,{style:[P.statusText,e&&P.statusError]},r))},P=Lt.create({container:{gap:6},input:{flex:1,fontFamily:"Inter",fontWeight:"400",fontSize:18,height:30,color:f.text},inputBox:{flexDirection:"row",paddingHorizontal:16,height:64,backgroundColor:f.inputBackground,borderRadius:14,alignItems:"center",columnGap:10,borderWidth:2,borderColor:f.border},inputBoxFocused:{borderColor:f.interactive},inputBoxError:{borderColor:f.error},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark}});import Re from"react";import _t,{Path as Ft}from"react-native-svg";var Ke=()=>Re.createElement(_t,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},Re.createElement(Ft,{d:"M22 7l-8.97 5.7a1.94 1.94 0 01-2.06 0L2 7m2-3h16a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2z",stroke:f.icon,strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}));var qe=({sendCode:e,isLoading:r,isError:n,initialEmail:o})=>{let[s,c]=Ot(o!=null?o:"");return C.createElement(At,{behavior:Ut.OS==="ios"?"padding":void 0,style:ye.innerContainer},C.createElement(he,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},C.createElement(he,{style:ye.content},C.createElement(he,{style:ye.formContainer},C.createElement(j,{title:"Enter your email"}),C.createElement(je,{LeftIcon:C.createElement(Ke,null),value:s,onChangeText:c,error:n,status:n?"Email is incorrect.":void 0,placeholder:"your@email.com",autoComplete:"email",keyboardType:"email-address"})),C.createElement(ze,null)),C.createElement(N,{title:"Continue",loading:r,onPress:()=>e(s)})))},ye=Tt.create({innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var Bt=600,Xe=({goBackRef:e})=>{let{closeLoginModal:r,setOtpState:n}=Mt(g),[o,s]=Qe(""),{state:c,loginWithCode:t,sendCode:i}=we(),[m,h]=Qe("email"),{step:u,isLoading:d=!1,isError:a=!1,isDone:l=!1}=It(()=>{switch(c.status){case"initial":return{step:{type:"email"}};case"sending-code":return{step:{type:m},isLoading:!0};case"awaiting-code-input":return{step:{type:"code"}};case"submitting-code":return{step:{type:"code"},isLoading:!0};case"done":return{step:{type:"code"},isDone:!0};case"error":return{step:{type:m},isError:!0}}},[m,c.status]);switch(m!==u.type&&h(u.type),Je(()=>{if(!l)return;let S=setTimeout(()=>{r()},Bt);return()=>clearTimeout(S)},[l,r]),Je(()=>{if(u.type==="code")return e.current=()=>{n({status:"initial"})},()=>{e.current=null}},[u.type,n]),u.type){case"code":return $e.createElement(He,{loginWithCode:S=>t({code:S,email:o}),requestNewCode:()=>i({email:o}),subtitle:`Please check ${o} for a message with your login code.`,isLoading:d,isError:a,isDone:l});case"email":return $e.createElement(qe,{initialEmail:o,sendCode:S=>{s(S),i({email:S})},isLoading:d,isError:a})}};import B from"react";import{Pressable as Dt,StyleSheet as Gt,View as er}from"react-native";import Ye from"react";import Ht,{Path as Vt}from"react-native-svg";var Ze=()=>Ye.createElement(Ht,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},Ye.createElement(Vt,{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",fill:"#45483C"}));var rr=({goBack:e})=>B.createElement(er,{style:tr.navigationBar},B.createElement(zt,{onPress:e})),zt=e=>B.createElement(Dt,x({},e),B.createElement(er,{style:tr.backButton},B.createElement(Ze,null))),tr=Gt.create({navigationBar:{height:48},backButton:{width:48,height:48,justifyContent:"center",alignItems:"center"}});import or from"react";import{Modal as Nt,View as jt,StyleSheet as nr}from"react-native";import{useSafeAreaInsets as Rt}from"react-native-safe-area-context";var Kt=()=>{let e=Rt();return{paddingTop:e.top,paddingBottom:e.bottom,paddingLeft:e.left,paddingRight:e.right}},ir=({children:e,visible:r})=>{let n=Kt();return or.createElement(Nt,{animationType:"slide",transparent:!0,visible:r},or.createElement(jt,{style:[nr.absoluteFill,qt.modalContent,n]},e))},qt=nr.create({modalContent:{backgroundColor:f.white}});var Qt=({goBackRef:e})=>K.createElement(Xe,{goBackRef:e}),ns=()=>{let{privyModalOpen:e,closeLoginModal:r}=$t(g),n=e!==null,o=Jt(null);return K.createElement(ir,{visible:n},K.createElement(rr,{goBack:()=>{var s;return((s=o.current)!=null?s:r)()}}),K.createElement(Qt,{goBackRef:o}))};import{useContext as Xt}from"react";var ls=()=>{let{loginWithUI:e}=Xt(g);return{login:e}};export{g as PrivyContext,ns as PrivyElements,Zt as PrivyProvider,cr as SecureStorageAdapter,Yt as getAccessToken,ao as hasError,eo as isConnected,to as isConnecting,io as isCreating,oo as isDisconnected,no as isNotCreated,ro as isReconnecting,so as needsRecovery,Jn as useCreateGuestAccount,Vr as useEmbeddedSolanaWallet,ie as useEmbeddedWallet,Vn as useEmbeddedWalletStateChange,Nn as useIdentityToken,Uo as useLinkEmail,qo as useLinkSMS,ln as useLinkWithFarcaster,sr as useLinkWithOAuth,go as useLinkWithSiwe,we as useLoginWithEmail,xn as useLoginWithFarcaster,ar as useLoginWithOAuth,en as useLoginWithSMS,wo as useLoginWithSiwe,lr as useOAuthFlow,Tn as useOAuthTokens,Nr as usePrivy,Gr as usePrivyClient,ls as usePrivyLogin,fn as useUnlinkFarcaster,Ln as useUnlinkOAuth,Lo as useUnlinkWallet};
@@ -1 +1 @@
1
- import{a as m,b as k,d as c,e as g,l as f,o as M,p as I,q as T,r as U,s as V,t as D,u as Y,v as j}from"./chunk-7LS6TTOM.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,d as c,e as g,l as f,o as M,p as I,q as T,r as U,s as V,t as D,u as Y,v as j}from"./chunk-2IOW73TR.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.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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunk7LS6TTOMjs = require('./chunk-7LS6TTOM.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var go=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),c=_react.useCallback.call(void 0, m=>{var u;let h=_chunk7LS6TTOMjs.e.call(void 0, m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, u=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[u],function*({signature:m,messageOverride:h}){var d;try{if(!r)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"});o({status:"submitting-signature"});let a=yield n.auth.siwe.linkWithSiwe(m,void 0,h);return o({status:"done"}),(d=e==null?void 0:e.onSuccess)==null||d.call(e,a),a}catch(a){throw c(a)}}),[r,n,c,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:s}};var wo=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),c=_react.useCallback.call(void 0, m=>{var u;let h=_chunk7LS6TTOMjs.e.call(void 0, m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({signature:m,messageOverride:h,disableSignup:u}){var a;try{if(r)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"});o({status:"submitting-signature"});let l=yield n.auth.siwe.loginWithSiwe(m,void 0,h,u?"no-signup":"login-or-sign-up");return o({status:"done"}),(a=e==null?void 0:e.onSuccess)==null||a.call(e,l.user,l.is_new_user),l.user}catch(l){throw c(l)}}),[r,n,c,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:s}};var Lo=e=>{let{user:r,client:n}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),o=_react.useCallback.call(void 0, c=>{var i;let t=_chunk7LS6TTOMjs.e.call(void 0, c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[t],function*({address:c}){var i;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let m=yield n.auth.siwe.unlinkWallet(c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw o(m)}}),[r,n,o,e==null?void 0:e.onSuccess])}};var Uo=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk7LS6TTOMjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, a=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[a],function*({code:u,email:d}){var l;try{if(!o)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 S=d||r;if(!S)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 s.auth.email.linkWithCode(S,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};var we=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk7LS6TTOMjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, l=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[l],function*({code:u,email:d,disableSignup:a}){var S;try{if(o)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 w=d||r;if(!w)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 k=yield s.auth.email.loginWithCode(w,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};var qo=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk7LS6TTOMjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, a=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[a],function*({code:u,phone:d}){var l;try{if(!o)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(!(d||r))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 s.auth.phone.linkWithCode(d||r,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};var en=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk7LS6TTOMjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, l=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[l],function*({code:u,phone:d,disableSignup:a}){var S;try{if(o)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(!(d||r))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 k=yield s.auth.phone.loginWithCode(d||r,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};var _expolinking = require('expo-linking'); var D = _interopRequireWildcard(_expolinking); var G = _interopRequireWildcard(_expolinking);var ln=e=>{let{appState:r,getCurrentAppState:n}=_chunk7LS6TTOMjs.g.call(void 0, ),{client:o,user:s,farcasterState:c,setFarcasterState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useRef.call(void 0, !1),m=_react.useCallback.call(void 0, d=>{var l;let a=_chunk7LS6TTOMjs.e.call(void 0, d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (S,...w)=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[S,...w],function*({relyingParty:d,redirectUrl:a},l={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,!s)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:W,channel_token:b}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:D.createURL(a!=null?a:"/")});if(!W)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(W),t({status:"polling-status"});let _=0;for(;_<l.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield _chunk7LS6TTOMjs.f.call(void 0, l.pollIntervalMs);continue}let O=yield o.auth.farcaster.getFarcasterStatus({channel_token:b});if(O.state==="completed"){t({status:"submitting-token"});let T=yield o.auth.farcaster.link(_chunk7LS6TTOMjs.a.call(void 0, {channel_token:b},O));return t({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,T),T}_++,yield _chunk7LS6TTOMjs.f.call(void 0, l.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw m(W)}}),[o,e==null?void 0:e.onSuccess,m,t,s]),state:c,cancel:h}};var fn=e=>{let{client:r}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),n=_react.useCallback.call(void 0, s=>{var t;let c=_chunk7LS6TTOMjs.e.call(void 0, s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, c=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[c],function*({fid:s}){var t;try{let i=yield r.auth.farcaster.unlink({fid:s});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw n(i)}}),[r,e==null?void 0:e.onSuccess,n])}};var xn=e=>{let{appState:r,getCurrentAppState:n}=_chunk7LS6TTOMjs.g.call(void 0, ),{client:o,user:s,farcasterState:c,setFarcasterState:t}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),i=_react.useRef.call(void 0, !1),m=_react.useCallback.call(void 0, d=>{var l;let a=_chunk7LS6TTOMjs.e.call(void 0, d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (w,...k)=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[w,...k],function*({relyingParty:d,redirectUrl:a,disableSignup:l},S={pollAttempts:10,pollIntervalMs:1e3}){var W;try{if(i.current=!1,s)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:b,channel_token:_}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:G.createURL(a!=null?a:"/")});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(b),t({status:"polling-status"});let O=0;for(;O<S.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield _chunk7LS6TTOMjs.f.call(void 0, S.pollIntervalMs);continue}let T=yield o.auth.farcaster.getFarcasterStatus({channel_token:_});if(T.state==="completed"){t({status:"submitting-token"});let q=yield o.auth.farcaster.authenticate(_chunk7LS6TTOMjs.a.call(void 0, {channel_token:_,mode:l?"no-signup":"login-or-sign-up"},T));return t({status:"done"}),(W=e==null?void 0:e.onSuccess)==null||W.call(e,q.user,q.is_new_user),q.user}O++,yield _chunk7LS6TTOMjs.f.call(void 0, S.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw m(b)}}),[o,m,e==null?void 0:e.onSuccess,t,s,r]),state:c,cancel:h}};var Ln=e=>{let{client:r}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),n=_react.useCallback.call(void 0, s=>{var t;let c=_chunk7LS6TTOMjs.e.call(void 0, s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunk7LS6TTOMjs.d.call(void 0, void 0,[t],function*({provider:s,subject:c}){var i;try{let m=yield r.auth.oauth.unlink(s,c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw n(m)}}),[r,e==null?void 0:e.onSuccess,n])}};var Tn=e=>{let{client:r}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),n=_react.useRef.call(void 0, e.onOAuthTokenGrant);n.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:o}=r.addOAuthTokensListener(s=>{n.current(s)});return o},[r])};var ie=(e={})=>{let{wallet:r,createWalletCallbacks:n,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),{onCreateWalletSuccess:c,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:m,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:u}=e;return _react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:t}},[c,t]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:m,onError:i}},[m,i]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:h,onError:u}},[m,i]),r};var Vn=({onStateChange:e})=>{let r=ie();return _react.useEffect.call(void 0, ()=>{e(r)},[r])};var Nn=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l);return{getIdentityToken:e}};var Jn=e=>{let{user:r,client:n}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),o=_react.useCallback.call(void 0, c=>{var i;let t=_chunk7LS6TTOMjs.e.call(void 0, c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunk7LS6TTOMjs.d.call(void 0, void 0,null,function*(){var c;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield n.auth.guest.create();return(c=e==null?void 0:e.onSuccess)==null||c.call(e,t.user,t.is_new_user),t.user}catch(t){throw o(t)}}),[n,o,r,e==null?void 0:e.onSuccess])}};var Vr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:o}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),{onCreateWalletSuccess:s,onCreateWalletError:c,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{n.current={onSuccess:s,onError:c}},[s,c]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:i,onError:t}},[i,t]),r};var Gr=()=>{let{client:e}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l);return e};var Nr=()=>{let{user:e,isReady:r,logout:n,getAccessToken:o}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l);return{user:e,isReady:r,logout:n,getAccessToken:o}};var _reactnative = require('react-native');var _reactnativesvg = require('react-native-svg'); var _reactnativesvg2 = _interopRequireDefault(_reactnativesvg);var Le=()=>{let e=_reactnative.useAnimatedValue.call(void 0, 0);_react.useEffect.call(void 0, ()=>{e.setValue(0);let n=_reactnative.Animated.loop(_reactnative.Animated.timing(e,{toValue:1,duration:1200,useNativeDriver:!0,easing:_reactnative.Easing.linear}));return n.start(),()=>n.stop()},[]);let r=e.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]});return _react2.default.createElement(_reactnative.Animated.View,{style:{transform:[{rotate:r}]}},_react2.default.createElement(_reactnativesvg2.default,{width:20,height:20,viewBox:"0 0 20 20",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M19 10a9 9 0 11-6.219-8.56",stroke:"#fff",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))};var f={interactive:"#5B4FFF",white:"#FFFFFF",black:"#000000",placeholder:"#9498B8",success:"#22C55E",successDark:"#15803D",inputBackground:"#F3F3F3",text:"#040217",icon:"#110F2A",border:"#E2E3F0",error:"#EF4444",errorDark:"#B91C1C",textMuted:"#64668B",textTitle:"#1A1C29"};var N=o=>{var s=o,{title:e,loading:r=!1}=s,n=_chunk7LS6TTOMjs.c.call(void 0, s,["title","loading"]);return _react2.default.createElement(_reactnative.Pressable,_chunk7LS6TTOMjs.a.call(void 0, {},n),_react2.default.createElement(_reactnative.View,{style:Pe.buttonBox},r?_react2.default.createElement(Le,null):_react2.default.createElement(_reactnative.Text,{style:Pe.buttonLabel},e)))},Pe=_reactnative.StyleSheet.create({buttonBox:{height:54,justifyContent:"center",alignItems:"center",borderRadius:14,backgroundColor:f.interactive,marginVertical:16},buttonLabel:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:16,lineHeight:24,color:f.white}});var Fe=({value:e,isFocused:r,isSuccess:n,isError:o})=>_react2.default.createElement(_reactnative.View,{style:[M.box,r&&M.focusedBox,n&&M.successBox,o&&M.errorBox]},_react2.default.createElement(_reactnative.Text,{style:M.text},e)),M=_reactnative.StyleSheet.create({box:{borderWidth:1,borderColor:f.border,borderRadius:12,height:64,width:48,justifyContent:"center",alignItems:"center"},focusedBox:{borderWidth:2,borderColor:f.interactive},successBox:{borderColor:f.success},errorBox:{borderColor:f.error},text:{fontFamily:"InterMedium",fontWeight:"500",fontSize:16,lineHeight:20,color:f.text}});var Te=6,st=[0,1,2,"-",3,4,5];function le({value:e="",status:r=" ",onChangeText:n=()=>{},editable:o=!0,success:s=!1,error:c=!1,autoFocus:t=!1}){let i=_react.useRef.call(void 0, null),[m,h]=_react.useState.call(void 0, !1),u=()=>{var l;(l=i==null?void 0:i.current)==null||l.focus()},d=l=>{let S=l.replace(/\D/g,"");n(S)},a=m?Math.min(e.length,Te-1):void 0;return _react2.default.createElement(_reactnative.View,{style:L.container},_react2.default.createElement(_reactnative.TextInput,{autoFocus:t,style:L.invisibleTextInput,value:e,onChangeText:d,maxLength:Te,ref:i,editable:o,onFocus:()=>h(!0),onBlur:()=>h(!1),keyboardType:"numeric"}),_react2.default.createElement(_reactnative.Pressable,{onPress:u,disabled:!o},_react2.default.createElement(_reactnative.View,{style:L.codeContainer},st.map((l,S)=>l==="-"?_react2.default.createElement(lt,{key:S}):_react2.default.createElement(Fe,{key:S,isFocused:a===l,value:e[l]||"",isSuccess:s,isError:c})))),_react2.default.createElement(_reactnative.Text,{style:[L.statusText,s&&L.statusSuccess,c&&L.statusError]},r))}var lt=()=>_react2.default.createElement(_reactnative.Text,{style:L.separator},"-"),L=_reactnative.StyleSheet.create({container:{justifyContent:"center",paddingHorizontal:0,gap:6},invisibleTextInput:{position:"absolute",opacity:0},codeContainer:{flexDirection:"row",alignItems:"center",gap:10,justifyContent:"space-between"},separator:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:18,lineHeight:24,color:f.black},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark},statusSuccess:{color:f.successDark}});var j=({title:e,subtitle:r})=>_react2.default.createElement(_reactnative.View,{style:ue.titleContainer},_react2.default.createElement(_reactnative.Text,{style:ue.title},e),r&&_react2.default.createElement(_reactnative.Text,{style:ue.subtitle},r)),ue=_reactnative.StyleSheet.create({titleContainer:{alignItems:"center",gap:16},title:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:20,lineHeight:32,color:f.textTitle},subtitle:{fontFamily:"Inter",fontWeight:"400",fontSize:16,lineHeight:24,color:f.textMuted,textAlign:"center"}});var Ie=({hint:e,link:r,onPress:n,disabled:o})=>_react2.default.createElement(_reactnative.Text,{style:me.hintText},e,r&&_react2.default.createElement(_react2.default.Fragment,null," ",_react2.default.createElement(_reactnative.TouchableOpacity,{onPress:n,disabled:o},_react2.default.createElement(_reactnative.Text,{style:[me.linkText,o&&me.disabledLink]},r)))),me=_reactnative.StyleSheet.create({hintText:{fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22,color:f.textMuted},linkText:{fontFamily:"InterMedium",fontWeight:"500",color:f.interactive},disabledLink:{color:f.textMuted}});var pt=3e4,kt=()=>{let[e,r]=_react.useState.call(void 0, !1),n=_react.useCallback.call(void 0, ()=>{r(!1),setTimeout(()=>{r(!0)},pt)},[]);return _react.useEffect.call(void 0, ()=>{n()},[]),[e,n]},He=({loginWithCode:e,requestNewCode:r,subtitle:n,isLoading:o,isError:s,isDone:c})=>{let[t,i]=_react.useState.call(void 0, ""),m=a=>{i(a),a.length===6&&e(a)},[h,u]=kt(),d=()=>{r(),u()};return _react2.default.createElement(_reactnative.KeyboardAvoidingView,{behavior:_reactnative.Platform.OS==="ios"?"padding":void 0,style:ge.innerContainer},_react2.default.createElement(_reactnative.View,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},_react2.default.createElement(_reactnative.View,{style:ge.content},_react2.default.createElement(_reactnative.View,{style:ge.formContainer},_react2.default.createElement(j,{title:"Enter confirmation code",subtitle:n}),_react2.default.createElement(le,{value:t,editable:!o,onChangeText:m,success:c,error:s,status:c?"Success.":s?"Code is incorrect.":void 0}),_react2.default.createElement(Ie,{hint:"Didn\u2019t get an email?",link:"Resend code",onPress:d,disabled:!h}))),_react2.default.createElement(N,{title:"Continue"})))},ge=_reactnative.StyleSheet.create({modalContent:{backgroundColor:"#ffffff"},innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var De=()=>_react2.default.createElement(_reactnativesvg2.default,{width:15,height:15,viewBox:"0 0 15 15",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M2.371 10.535c0 1.664 1.535 2.41 3.036 2.415 3.51 0 7.395-2.157 7.375-5.767-.015-2.603-2.407-4.818-5.238-4.797-2.695 0-5.326 1.758-5.326 4.153 0 .643.37 1.266 1.334 1.336-.804.796-1.18 1.75-1.18 2.66zm5.182-2.352c.563 0 1.019-.548 1.019-1.224 0-.676-.456-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224zm2.922 0c.562 0 1.019-.548 1.019-1.224 0-.676-.457-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224z",fill:f.placeholder}));var ze=()=>_react2.default.createElement(_reactnative.View,{style:Ge.legalFooterContainer},_react2.default.createElement(De,null),_react2.default.createElement(_reactnative.Text,{style:Ge.legalText},"Protected by Privy")),Ge=_reactnative.StyleSheet.create({legalFooterContainer:{flexDirection:"row",padding:12,alignItems:"center",justifyContent:"center",gap:2},legalText:{fontFamily:"Inter",fontWeight:"400",fontSize:12,lineHeight:17,color:f.textMuted}});var je=s=>{var c=s,{error:e,status:r=" ",LeftIcon:n}=c,o=_chunk7LS6TTOMjs.c.call(void 0, c,["error","status","LeftIcon"]);let[t,i]=_react.useState.call(void 0, !1);return _react2.default.createElement(_reactnative.View,{style:P.container},_react2.default.createElement(_reactnative.View,{style:[P.inputBox,t&&P.inputBoxFocused,e&&P.inputBoxError]},n,_react2.default.createElement(_reactnative.TextInput,_chunk7LS6TTOMjs.a.call(void 0, {cursorColor:f.interactive,placeholderTextColor:f.placeholder,onFocus:()=>i(!0),onBlur:()=>i(!1),autoCapitalize:"none",returnKeyType:"next",multiline:!1,numberOfLines:1,style:P.input},o))),_react2.default.createElement(_reactnative.Text,{style:[P.statusText,e&&P.statusError]},r))},P=_reactnative.StyleSheet.create({container:{gap:6},input:{flex:1,fontFamily:"Inter",fontWeight:"400",fontSize:18,height:30,color:f.text},inputBox:{flexDirection:"row",paddingHorizontal:16,height:64,backgroundColor:f.inputBackground,borderRadius:14,alignItems:"center",columnGap:10,borderWidth:2,borderColor:f.border},inputBoxFocused:{borderColor:f.interactive},inputBoxError:{borderColor:f.error},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark}});var Ke=()=>_react2.default.createElement(_reactnativesvg2.default,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M22 7l-8.97 5.7a1.94 1.94 0 01-2.06 0L2 7m2-3h16a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2z",stroke:f.icon,strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}));var qe=({sendCode:e,isLoading:r,isError:n,initialEmail:o})=>{let[s,c]=_react.useState.call(void 0, o!=null?o:"");return _react2.default.createElement(_reactnative.KeyboardAvoidingView,{behavior:_reactnative.Platform.OS==="ios"?"padding":void 0,style:ye.innerContainer},_react2.default.createElement(_reactnative.View,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},_react2.default.createElement(_reactnative.View,{style:ye.content},_react2.default.createElement(_reactnative.View,{style:ye.formContainer},_react2.default.createElement(j,{title:"Enter your email"}),_react2.default.createElement(je,{LeftIcon:_react2.default.createElement(Ke,null),value:s,onChangeText:c,error:n,status:n?"Email is incorrect.":void 0,placeholder:"your@email.com",autoComplete:"email",keyboardType:"email-address"})),_react2.default.createElement(ze,null)),_react2.default.createElement(N,{title:"Continue",loading:r,onPress:()=>e(s)})))},ye=_reactnative.StyleSheet.create({innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var Bt=600,Xe=({goBackRef:e})=>{let{closeLoginModal:r,setOtpState:n}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),[o,s]=_react.useState.call(void 0, ""),{state:c,loginWithCode:t,sendCode:i}=we(),[m,h]=_react.useState.call(void 0, "email"),{step:u,isLoading:d=!1,isError:a=!1,isDone:l=!1}=_react.useMemo.call(void 0, ()=>{switch(c.status){case"initial":return{step:{type:"email"}};case"sending-code":return{step:{type:m},isLoading:!0};case"awaiting-code-input":return{step:{type:"code"}};case"submitting-code":return{step:{type:"code"},isLoading:!0};case"done":return{step:{type:"code"},isDone:!0};case"error":return{step:{type:m},isError:!0}}},[m,c.status]);switch(m!==u.type&&h(u.type),_react.useEffect.call(void 0, ()=>{if(!l)return;let S=setTimeout(()=>{r()},Bt);return()=>clearTimeout(S)},[l,r]),_react.useEffect.call(void 0, ()=>{if(u.type==="code")return e.current=()=>{n({status:"initial"})},()=>{e.current=null}},[u.type,n]),u.type){case"code":return _react2.default.createElement(He,{loginWithCode:S=>t({code:S,email:o}),requestNewCode:()=>i({email:o}),subtitle:`Please check ${o} for a message with your login code.`,isLoading:d,isError:a,isDone:l});case"email":return _react2.default.createElement(qe,{initialEmail:o,sendCode:S=>{s(S),i({email:S})},isLoading:d,isError:a})}};var Ze=()=>_react2.default.createElement(_reactnativesvg2.default,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",fill:"#45483C"}));var rr=({goBack:e})=>_react2.default.createElement(_reactnative.View,{style:tr.navigationBar},_react2.default.createElement(zt,{onPress:e})),zt=e=>_react2.default.createElement(_reactnative.Pressable,_chunk7LS6TTOMjs.a.call(void 0, {},e),_react2.default.createElement(_reactnative.View,{style:tr.backButton},_react2.default.createElement(Ze,null))),tr=_reactnative.StyleSheet.create({navigationBar:{height:48},backButton:{width:48,height:48,justifyContent:"center",alignItems:"center"}});var _reactnativesafeareacontext = require('react-native-safe-area-context');var Kt=()=>{let e=_reactnativesafeareacontext.useSafeAreaInsets.call(void 0, );return{paddingTop:e.top,paddingBottom:e.bottom,paddingLeft:e.left,paddingRight:e.right}},ir=({children:e,visible:r})=>{let n=Kt();return _react2.default.createElement(_reactnative.Modal,{animationType:"slide",transparent:!0,visible:r},_react2.default.createElement(_reactnative.View,{style:[_reactnative.StyleSheet.absoluteFill,qt.modalContent,n]},e))},qt=_reactnative.StyleSheet.create({modalContent:{backgroundColor:f.white}});var Qt=({goBackRef:e})=>_react2.default.createElement(Xe,{goBackRef:e}),ns= exports.PrivyElements =()=>{let{privyModalOpen:e,closeLoginModal:r}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l),n=e!==null,o=_react.useRef.call(void 0, null);return _react2.default.createElement(ir,{visible:n},_react2.default.createElement(rr,{goBack:()=>{var s;return((s=o.current)!=null?s:r)()}}),_react2.default.createElement(Qt,{goBackRef:o}))};var ls=()=>{let{loginWithUI:e}=_react.useContext.call(void 0, _chunk7LS6TTOMjs.l);return{login:e}};exports.PrivyContext = _chunk7LS6TTOMjs.l; exports.PrivyElements = ns; exports.PrivyProvider = _chunk7LS6TTOMjs.n; exports.SecureStorageAdapter = _chunk7LS6TTOMjs.k; exports.getAccessToken = _chunk7LS6TTOMjs.m; exports.hasError = _chunk7LS6TTOMjs.u; exports.isConnected = _chunk7LS6TTOMjs.o; exports.isConnecting = _chunk7LS6TTOMjs.q; exports.isCreating = _chunk7LS6TTOMjs.t; exports.isDisconnected = _chunk7LS6TTOMjs.r; exports.isNotCreated = _chunk7LS6TTOMjs.s; exports.isReconnecting = _chunk7LS6TTOMjs.p; exports.needsRecovery = _chunk7LS6TTOMjs.v; exports.useCreateGuestAccount = Jn; exports.useEmbeddedSolanaWallet = Vr; exports.useEmbeddedWallet = ie; exports.useEmbeddedWalletStateChange = Vn; exports.useIdentityToken = Nn; exports.useLinkEmail = Uo; exports.useLinkSMS = qo; exports.useLinkWithFarcaster = ln; exports.useLinkWithOAuth = _chunk7LS6TTOMjs.i; exports.useLinkWithSiwe = go; exports.useLoginWithEmail = we; exports.useLoginWithFarcaster = xn; exports.useLoginWithOAuth = _chunk7LS6TTOMjs.h; exports.useLoginWithSMS = en; exports.useLoginWithSiwe = wo; exports.useOAuthFlow = _chunk7LS6TTOMjs.j; exports.useOAuthTokens = Tn; exports.usePrivy = Nr; exports.usePrivyClient = Gr; exports.usePrivyLogin = ls; exports.useUnlinkFarcaster = fn; exports.useUnlinkOAuth = Ln; exports.useUnlinkWallet = Lo;
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 }; } 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 _chunk2IOW73TRjs = require('./chunk-2IOW73TR.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var go=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),c=_react.useCallback.call(void 0, m=>{var u;let h=_chunk2IOW73TRjs.e.call(void 0, m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, u=>_chunk2IOW73TRjs.d.call(void 0, void 0,[u],function*({signature:m,messageOverride:h}){var d;try{if(!r)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"});o({status:"submitting-signature"});let a=yield n.auth.siwe.linkWithSiwe(m,void 0,h);return o({status:"done"}),(d=e==null?void 0:e.onSuccess)==null||d.call(e,a),a}catch(a){throw c(a)}}),[r,n,c,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:s}};var wo=e=>{let{user:r,client:n,setSiweState:o,siweState:s}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),c=_react.useCallback.call(void 0, m=>{var u;let h=_chunk2IOW73TRjs.e.call(void 0, m);return o({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({wallet:m,from:{domain:h,uri:u}}){var a;try{o({status:"generating-message"});let l=yield n.auth.siwe.init(m,h,u);return o({status:"awaiting-signature"}),(a=e==null?void 0:e.onGenerateMessage)==null||a.call(e,l.message),l.message}catch(l){throw c(l)}}),[n,c,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({signature:m,messageOverride:h,disableSignup:u}){var a;try{if(r)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"});o({status:"submitting-signature"});let l=yield n.auth.siwe.loginWithSiwe(m,void 0,h,u?"no-signup":"login-or-sign-up");return o({status:"done"}),(a=e==null?void 0:e.onSuccess)==null||a.call(e,l.user,l.is_new_user),l.user}catch(l){throw c(l)}}),[r,n,c,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:s}};var Lo=e=>{let{user:r,client:n}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),o=_react.useCallback.call(void 0, c=>{var i;let t=_chunk2IOW73TRjs.e.call(void 0, c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunk2IOW73TRjs.d.call(void 0, void 0,[t],function*({address:c}){var i;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let m=yield n.auth.siwe.unlinkWallet(c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw o(m)}}),[r,n,o,e==null?void 0:e.onSuccess])}};var Uo=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk2IOW73TRjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, a=>_chunk2IOW73TRjs.d.call(void 0, void 0,[a],function*({code:u,email:d}){var l;try{if(!o)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 S=d||r;if(!S)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 s.auth.email.linkWithCode(S,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};var we=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk2IOW73TRjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({email:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{email:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, l=>_chunk2IOW73TRjs.d.call(void 0, void 0,[l],function*({code:u,email:d,disableSignup:a}){var S;try{if(o)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 w=d||r;if(!w)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 k=yield s.auth.email.loginWithCode(w,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};var qo=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk2IOW73TRjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, a=>_chunk2IOW73TRjs.d.call(void 0, void 0,[a],function*({code:u,phone:d}){var l;try{if(!o)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(!(d||r))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 s.auth.phone.linkWithCode(d||r,u);return t({status:"done"}),(l=e==null?void 0:e.onLinkSuccess)==null||l.call(e,w),w}catch(S){i(S)}}),[o,s,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:m,linkWithCode:h,state:c}};var en=e=>{let[r,n]=_react.useState.call(void 0, ""),{user:o,client:s,otpState:c,setOtpState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useCallback.call(void 0, u=>{var a;let d=_chunk2IOW73TRjs.e.call(void 0, u);return t({status:"error",error:d}),(a=e==null?void 0:e.onError)==null||a.call(e,d),d},[e==null?void 0:e.onError]),m=_react.useCallback.call(void 0, d=>_chunk2IOW73TRjs.d.call(void 0, void 0,[d],function*({phone:u}){var a;n(u);try{t({status:"sending-code"});let l=yield s.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(a=e==null?void 0:e.onSendCodeSuccess)==null||a.call(e,{phone:u}),l}catch(l){return i(l),{success:!1}}}),[s,i,e==null?void 0:e.onSendCodeSuccess]),h=_react.useCallback.call(void 0, l=>_chunk2IOW73TRjs.d.call(void 0, void 0,[l],function*({code:u,phone:d,disableSignup:a}){var S;try{if(o)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(!(d||r))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 k=yield s.auth.phone.loginWithCode(d||r,u,a?"no-signup":"login-or-sign-up");return t({status:"done"}),(S=e==null?void 0:e.onLoginSuccess)==null||S.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){i(w)}}),[o,s,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:m,loginWithCode:h,state:c}};var _expolinking = require('expo-linking'); var D = _interopRequireWildcard(_expolinking); var G = _interopRequireWildcard(_expolinking);var ln=e=>{let{appState:r,getCurrentAppState:n}=_chunk2IOW73TRjs.g.call(void 0, ),{client:o,user:s,farcasterState:c,setFarcasterState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useRef.call(void 0, !1),m=_react.useCallback.call(void 0, d=>{var l;let a=_chunk2IOW73TRjs.e.call(void 0, d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (S,...w)=>_chunk2IOW73TRjs.d.call(void 0, void 0,[S,...w],function*({relyingParty:d,redirectUrl:a},l={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,!s)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:W,channel_token:b}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:D.createURL(a!=null?a:"/")});if(!W)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(W),t({status:"polling-status"});let _=0;for(;_<l.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield _chunk2IOW73TRjs.f.call(void 0, l.pollIntervalMs);continue}let O=yield o.auth.farcaster.getFarcasterStatus({channel_token:b});if(O.state==="completed"){t({status:"submitting-token"});let T=yield o.auth.farcaster.link(_chunk2IOW73TRjs.a.call(void 0, {channel_token:b},O));return t({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,T),T}_++,yield _chunk2IOW73TRjs.f.call(void 0, l.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw m(W)}}),[o,e==null?void 0:e.onSuccess,m,t,s]),state:c,cancel:h}};var fn=e=>{let{client:r}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),n=_react.useCallback.call(void 0, s=>{var t;let c=_chunk2IOW73TRjs.e.call(void 0, s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, c=>_chunk2IOW73TRjs.d.call(void 0, void 0,[c],function*({fid:s}){var t;try{let i=yield r.auth.farcaster.unlink({fid:s});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw n(i)}}),[r,e==null?void 0:e.onSuccess,n])}};var xn=e=>{let{appState:r,getCurrentAppState:n}=_chunk2IOW73TRjs.g.call(void 0, ),{client:o,user:s,farcasterState:c,setFarcasterState:t}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),i=_react.useRef.call(void 0, !1),m=_react.useCallback.call(void 0, d=>{var l;let a=_chunk2IOW73TRjs.e.call(void 0, d);return t({status:"error",error:a}),(l=e==null?void 0:e.onError)==null||l.call(e,a),a},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (w,...k)=>_chunk2IOW73TRjs.d.call(void 0, void 0,[w,...k],function*({relyingParty:d,redirectUrl:a,disableSignup:l},S={pollAttempts:10,pollIntervalMs:1e3}){var W;try{if(i.current=!1,s)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:b,channel_token:_}=yield o.auth.farcaster.initializeAuth({relyingParty:d,redirectUrl:G.createURL(a!=null?a:"/")});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(b),t({status:"polling-status"});let O=0;for(;O<S.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&n()!=="active"){yield _chunk2IOW73TRjs.f.call(void 0, S.pollIntervalMs);continue}let T=yield o.auth.farcaster.getFarcasterStatus({channel_token:_});if(T.state==="completed"){t({status:"submitting-token"});let q=yield o.auth.farcaster.authenticate(_chunk2IOW73TRjs.a.call(void 0, {channel_token:_,mode:l?"no-signup":"login-or-sign-up"},T));return t({status:"done"}),(W=e==null?void 0:e.onSuccess)==null||W.call(e,q.user,q.is_new_user),q.user}O++,yield _chunk2IOW73TRjs.f.call(void 0, S.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw m(b)}}),[o,m,e==null?void 0:e.onSuccess,t,s,r]),state:c,cancel:h}};var Ln=e=>{let{client:r}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),n=_react.useCallback.call(void 0, s=>{var t;let c=_chunk2IOW73TRjs.e.call(void 0, s);return(t=e==null?void 0:e.onError)==null||t.call(e,c),c},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunk2IOW73TRjs.d.call(void 0, void 0,[t],function*({provider:s,subject:c}){var i;try{let m=yield r.auth.oauth.unlink(s,c);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,m),m}catch(m){throw n(m)}}),[r,e==null?void 0:e.onSuccess,n])}};var Tn=e=>{let{client:r}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),n=_react.useRef.call(void 0, e.onOAuthTokenGrant);n.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:o}=r.addOAuthTokensListener(s=>{n.current(s)});return o},[r])};var ie=(e={})=>{let{wallet:r,createWalletCallbacks:n,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),{onCreateWalletSuccess:c,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:m,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:u}=e;return _react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:t}},[c,t]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:m,onError:i}},[m,i]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:h,onError:u}},[m,i]),r};var Vn=({onStateChange:e})=>{let r=ie();return _react.useEffect.call(void 0, ()=>{e(r)},[r])};var Nn=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l);return{getIdentityToken:e}};var Jn=e=>{let{user:r,client:n}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),o=_react.useCallback.call(void 0, c=>{var i;let t=_chunk2IOW73TRjs.e.call(void 0, c);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunk2IOW73TRjs.d.call(void 0, void 0,null,function*(){var c;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield n.auth.guest.create();return(c=e==null?void 0:e.onSuccess)==null||c.call(e,t.user,t.is_new_user),t.user}catch(t){throw o(t)}}),[n,o,r,e==null?void 0:e.onSuccess])}};var Vr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:o}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),{onCreateWalletSuccess:s,onCreateWalletError:c,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{n.current={onSuccess:s,onError:c}},[s,c]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:i,onError:t}},[i,t]),r};var Gr=()=>{let{client:e}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l);return e};var Nr=()=>{let{user:e,isReady:r,logout:n,getAccessToken:o}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l);return{user:e,isReady:r,logout:n,getAccessToken:o}};var _reactnative = require('react-native');var _reactnativesvg = require('react-native-svg'); var _reactnativesvg2 = _interopRequireDefault(_reactnativesvg);var Le=()=>{let e=_reactnative.useAnimatedValue.call(void 0, 0);_react.useEffect.call(void 0, ()=>{e.setValue(0);let n=_reactnative.Animated.loop(_reactnative.Animated.timing(e,{toValue:1,duration:1200,useNativeDriver:!0,easing:_reactnative.Easing.linear}));return n.start(),()=>n.stop()},[]);let r=e.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]});return _react2.default.createElement(_reactnative.Animated.View,{style:{transform:[{rotate:r}]}},_react2.default.createElement(_reactnativesvg2.default,{width:20,height:20,viewBox:"0 0 20 20",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M19 10a9 9 0 11-6.219-8.56",stroke:"#fff",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))};var f={interactive:"#5B4FFF",white:"#FFFFFF",black:"#000000",placeholder:"#9498B8",success:"#22C55E",successDark:"#15803D",inputBackground:"#F3F3F3",text:"#040217",icon:"#110F2A",border:"#E2E3F0",error:"#EF4444",errorDark:"#B91C1C",textMuted:"#64668B",textTitle:"#1A1C29"};var N=o=>{var s=o,{title:e,loading:r=!1}=s,n=_chunk2IOW73TRjs.c.call(void 0, s,["title","loading"]);return _react2.default.createElement(_reactnative.Pressable,_chunk2IOW73TRjs.a.call(void 0, {},n),_react2.default.createElement(_reactnative.View,{style:Pe.buttonBox},r?_react2.default.createElement(Le,null):_react2.default.createElement(_reactnative.Text,{style:Pe.buttonLabel},e)))},Pe=_reactnative.StyleSheet.create({buttonBox:{height:54,justifyContent:"center",alignItems:"center",borderRadius:14,backgroundColor:f.interactive,marginVertical:16},buttonLabel:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:16,lineHeight:24,color:f.white}});var Fe=({value:e,isFocused:r,isSuccess:n,isError:o})=>_react2.default.createElement(_reactnative.View,{style:[M.box,r&&M.focusedBox,n&&M.successBox,o&&M.errorBox]},_react2.default.createElement(_reactnative.Text,{style:M.text},e)),M=_reactnative.StyleSheet.create({box:{borderWidth:1,borderColor:f.border,borderRadius:12,height:64,width:48,justifyContent:"center",alignItems:"center"},focusedBox:{borderWidth:2,borderColor:f.interactive},successBox:{borderColor:f.success},errorBox:{borderColor:f.error},text:{fontFamily:"InterMedium",fontWeight:"500",fontSize:16,lineHeight:20,color:f.text}});var Te=6,st=[0,1,2,"-",3,4,5];function le({value:e="",status:r=" ",onChangeText:n=()=>{},editable:o=!0,success:s=!1,error:c=!1,autoFocus:t=!1}){let i=_react.useRef.call(void 0, null),[m,h]=_react.useState.call(void 0, !1),u=()=>{var l;(l=i==null?void 0:i.current)==null||l.focus()},d=l=>{let S=l.replace(/\D/g,"");n(S)},a=m?Math.min(e.length,Te-1):void 0;return _react2.default.createElement(_reactnative.View,{style:L.container},_react2.default.createElement(_reactnative.TextInput,{autoFocus:t,style:L.invisibleTextInput,value:e,onChangeText:d,maxLength:Te,ref:i,editable:o,onFocus:()=>h(!0),onBlur:()=>h(!1),keyboardType:"numeric"}),_react2.default.createElement(_reactnative.Pressable,{onPress:u,disabled:!o},_react2.default.createElement(_reactnative.View,{style:L.codeContainer},st.map((l,S)=>l==="-"?_react2.default.createElement(lt,{key:S}):_react2.default.createElement(Fe,{key:S,isFocused:a===l,value:e[l]||"",isSuccess:s,isError:c})))),_react2.default.createElement(_reactnative.Text,{style:[L.statusText,s&&L.statusSuccess,c&&L.statusError]},r))}var lt=()=>_react2.default.createElement(_reactnative.Text,{style:L.separator},"-"),L=_reactnative.StyleSheet.create({container:{justifyContent:"center",paddingHorizontal:0,gap:6},invisibleTextInput:{position:"absolute",opacity:0},codeContainer:{flexDirection:"row",alignItems:"center",gap:10,justifyContent:"space-between"},separator:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:18,lineHeight:24,color:f.black},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark},statusSuccess:{color:f.successDark}});var j=({title:e,subtitle:r})=>_react2.default.createElement(_reactnative.View,{style:ue.titleContainer},_react2.default.createElement(_reactnative.Text,{style:ue.title},e),r&&_react2.default.createElement(_reactnative.Text,{style:ue.subtitle},r)),ue=_reactnative.StyleSheet.create({titleContainer:{alignItems:"center",gap:16},title:{fontFamily:"InterSemiBold",fontWeight:"600",fontSize:20,lineHeight:32,color:f.textTitle},subtitle:{fontFamily:"Inter",fontWeight:"400",fontSize:16,lineHeight:24,color:f.textMuted,textAlign:"center"}});var Ie=({hint:e,link:r,onPress:n,disabled:o})=>_react2.default.createElement(_reactnative.Text,{style:me.hintText},e,r&&_react2.default.createElement(_react2.default.Fragment,null," ",_react2.default.createElement(_reactnative.TouchableOpacity,{onPress:n,disabled:o},_react2.default.createElement(_reactnative.Text,{style:[me.linkText,o&&me.disabledLink]},r)))),me=_reactnative.StyleSheet.create({hintText:{fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22,color:f.textMuted},linkText:{fontFamily:"InterMedium",fontWeight:"500",color:f.interactive},disabledLink:{color:f.textMuted}});var pt=3e4,kt=()=>{let[e,r]=_react.useState.call(void 0, !1),n=_react.useCallback.call(void 0, ()=>{r(!1),setTimeout(()=>{r(!0)},pt)},[]);return _react.useEffect.call(void 0, ()=>{n()},[]),[e,n]},He=({loginWithCode:e,requestNewCode:r,subtitle:n,isLoading:o,isError:s,isDone:c})=>{let[t,i]=_react.useState.call(void 0, ""),m=a=>{i(a),a.length===6&&e(a)},[h,u]=kt(),d=()=>{r(),u()};return _react2.default.createElement(_reactnative.KeyboardAvoidingView,{behavior:_reactnative.Platform.OS==="ios"?"padding":void 0,style:ge.innerContainer},_react2.default.createElement(_reactnative.View,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},_react2.default.createElement(_reactnative.View,{style:ge.content},_react2.default.createElement(_reactnative.View,{style:ge.formContainer},_react2.default.createElement(j,{title:"Enter confirmation code",subtitle:n}),_react2.default.createElement(le,{value:t,editable:!o,onChangeText:m,success:c,error:s,status:c?"Success.":s?"Code is incorrect.":void 0}),_react2.default.createElement(Ie,{hint:"Didn\u2019t get an email?",link:"Resend code",onPress:d,disabled:!h}))),_react2.default.createElement(N,{title:"Continue"})))},ge=_reactnative.StyleSheet.create({modalContent:{backgroundColor:"#ffffff"},innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var De=()=>_react2.default.createElement(_reactnativesvg2.default,{width:15,height:15,viewBox:"0 0 15 15",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M2.371 10.535c0 1.664 1.535 2.41 3.036 2.415 3.51 0 7.395-2.157 7.375-5.767-.015-2.603-2.407-4.818-5.238-4.797-2.695 0-5.326 1.758-5.326 4.153 0 .643.37 1.266 1.334 1.336-.804.796-1.18 1.75-1.18 2.66zm5.182-2.352c.563 0 1.019-.548 1.019-1.224 0-.676-.456-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224zm2.922 0c.562 0 1.019-.548 1.019-1.224 0-.676-.457-1.224-1.02-1.224-.562 0-1.018.548-1.018 1.224 0 .676.456 1.224 1.019 1.224z",fill:f.placeholder}));var ze=()=>_react2.default.createElement(_reactnative.View,{style:Ge.legalFooterContainer},_react2.default.createElement(De,null),_react2.default.createElement(_reactnative.Text,{style:Ge.legalText},"Protected by Privy")),Ge=_reactnative.StyleSheet.create({legalFooterContainer:{flexDirection:"row",padding:12,alignItems:"center",justifyContent:"center",gap:2},legalText:{fontFamily:"Inter",fontWeight:"400",fontSize:12,lineHeight:17,color:f.textMuted}});var je=s=>{var c=s,{error:e,status:r=" ",LeftIcon:n}=c,o=_chunk2IOW73TRjs.c.call(void 0, c,["error","status","LeftIcon"]);let[t,i]=_react.useState.call(void 0, !1);return _react2.default.createElement(_reactnative.View,{style:P.container},_react2.default.createElement(_reactnative.View,{style:[P.inputBox,t&&P.inputBoxFocused,e&&P.inputBoxError]},n,_react2.default.createElement(_reactnative.TextInput,_chunk2IOW73TRjs.a.call(void 0, {cursorColor:f.interactive,placeholderTextColor:f.placeholder,onFocus:()=>i(!0),onBlur:()=>i(!1),autoCapitalize:"none",returnKeyType:"next",multiline:!1,numberOfLines:1,style:P.input},o))),_react2.default.createElement(_reactnative.Text,{style:[P.statusText,e&&P.statusError]},r))},P=_reactnative.StyleSheet.create({container:{gap:6},input:{flex:1,fontFamily:"Inter",fontWeight:"400",fontSize:18,height:30,color:f.text},inputBox:{flexDirection:"row",paddingHorizontal:16,height:64,backgroundColor:f.inputBackground,borderRadius:14,alignItems:"center",columnGap:10,borderWidth:2,borderColor:f.border},inputBoxFocused:{borderColor:f.interactive},inputBoxError:{borderColor:f.error},statusText:{textAlign:"left",color:f.textMuted,fontFamily:"Inter",fontWeight:"400",fontSize:14,lineHeight:22},statusError:{color:f.errorDark}});var Ke=()=>_react2.default.createElement(_reactnativesvg2.default,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M22 7l-8.97 5.7a1.94 1.94 0 01-2.06 0L2 7m2-3h16a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2z",stroke:f.icon,strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}));var qe=({sendCode:e,isLoading:r,isError:n,initialEmail:o})=>{let[s,c]=_react.useState.call(void 0, o!=null?o:"");return _react2.default.createElement(_reactnative.KeyboardAvoidingView,{behavior:_reactnative.Platform.OS==="ios"?"padding":void 0,style:ye.innerContainer},_react2.default.createElement(_reactnative.View,{style:{flex:1,justifyContent:"space-between",paddingHorizontal:16}},_react2.default.createElement(_reactnative.View,{style:ye.content},_react2.default.createElement(_reactnative.View,{style:ye.formContainer},_react2.default.createElement(j,{title:"Enter your email"}),_react2.default.createElement(je,{LeftIcon:_react2.default.createElement(Ke,null),value:s,onChangeText:c,error:n,status:n?"Email is incorrect.":void 0,placeholder:"your@email.com",autoComplete:"email",keyboardType:"email-address"})),_react2.default.createElement(ze,null)),_react2.default.createElement(N,{title:"Continue",loading:r,onPress:()=>e(s)})))},ye=_reactnative.StyleSheet.create({innerContainer:{flex:1},content:{gap:16},formContainer:{rowGap:24}});var Bt=600,Xe=({goBackRef:e})=>{let{closeLoginModal:r,setOtpState:n}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),[o,s]=_react.useState.call(void 0, ""),{state:c,loginWithCode:t,sendCode:i}=we(),[m,h]=_react.useState.call(void 0, "email"),{step:u,isLoading:d=!1,isError:a=!1,isDone:l=!1}=_react.useMemo.call(void 0, ()=>{switch(c.status){case"initial":return{step:{type:"email"}};case"sending-code":return{step:{type:m},isLoading:!0};case"awaiting-code-input":return{step:{type:"code"}};case"submitting-code":return{step:{type:"code"},isLoading:!0};case"done":return{step:{type:"code"},isDone:!0};case"error":return{step:{type:m},isError:!0}}},[m,c.status]);switch(m!==u.type&&h(u.type),_react.useEffect.call(void 0, ()=>{if(!l)return;let S=setTimeout(()=>{r()},Bt);return()=>clearTimeout(S)},[l,r]),_react.useEffect.call(void 0, ()=>{if(u.type==="code")return e.current=()=>{n({status:"initial"})},()=>{e.current=null}},[u.type,n]),u.type){case"code":return _react2.default.createElement(He,{loginWithCode:S=>t({code:S,email:o}),requestNewCode:()=>i({email:o}),subtitle:`Please check ${o} for a message with your login code.`,isLoading:d,isError:a,isDone:l});case"email":return _react2.default.createElement(qe,{initialEmail:o,sendCode:S=>{s(S),i({email:S})},isLoading:d,isError:a})}};var Ze=()=>_react2.default.createElement(_reactnativesvg2.default,{width:24,height:24,viewBox:"0 0 24 24",fill:"none"},_react2.default.createElement(_reactnativesvg.Path,{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",fill:"#45483C"}));var rr=({goBack:e})=>_react2.default.createElement(_reactnative.View,{style:tr.navigationBar},_react2.default.createElement(zt,{onPress:e})),zt=e=>_react2.default.createElement(_reactnative.Pressable,_chunk2IOW73TRjs.a.call(void 0, {},e),_react2.default.createElement(_reactnative.View,{style:tr.backButton},_react2.default.createElement(Ze,null))),tr=_reactnative.StyleSheet.create({navigationBar:{height:48},backButton:{width:48,height:48,justifyContent:"center",alignItems:"center"}});var _reactnativesafeareacontext = require('react-native-safe-area-context');var Kt=()=>{let e=_reactnativesafeareacontext.useSafeAreaInsets.call(void 0, );return{paddingTop:e.top,paddingBottom:e.bottom,paddingLeft:e.left,paddingRight:e.right}},ir=({children:e,visible:r})=>{let n=Kt();return _react2.default.createElement(_reactnative.Modal,{animationType:"slide",transparent:!0,visible:r},_react2.default.createElement(_reactnative.View,{style:[_reactnative.StyleSheet.absoluteFill,qt.modalContent,n]},e))},qt=_reactnative.StyleSheet.create({modalContent:{backgroundColor:f.white}});var Qt=({goBackRef:e})=>_react2.default.createElement(Xe,{goBackRef:e}),ns= exports.PrivyElements =()=>{let{privyModalOpen:e,closeLoginModal:r}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l),n=e!==null,o=_react.useRef.call(void 0, null);return _react2.default.createElement(ir,{visible:n},_react2.default.createElement(rr,{goBack:()=>{var s;return((s=o.current)!=null?s:r)()}}),_react2.default.createElement(Qt,{goBackRef:o}))};var ls=()=>{let{loginWithUI:e}=_react.useContext.call(void 0, _chunk2IOW73TRjs.l);return{login:e}};exports.PrivyContext = _chunk2IOW73TRjs.l; exports.PrivyElements = ns; exports.PrivyProvider = _chunk2IOW73TRjs.n; exports.SecureStorageAdapter = _chunk2IOW73TRjs.k; exports.getAccessToken = _chunk2IOW73TRjs.m; exports.hasError = _chunk2IOW73TRjs.u; exports.isConnected = _chunk2IOW73TRjs.o; exports.isConnecting = _chunk2IOW73TRjs.q; exports.isCreating = _chunk2IOW73TRjs.t; exports.isDisconnected = _chunk2IOW73TRjs.r; exports.isNotCreated = _chunk2IOW73TRjs.s; exports.isReconnecting = _chunk2IOW73TRjs.p; exports.needsRecovery = _chunk2IOW73TRjs.v; exports.useCreateGuestAccount = Jn; exports.useEmbeddedSolanaWallet = Vr; exports.useEmbeddedWallet = ie; exports.useEmbeddedWalletStateChange = Vn; exports.useIdentityToken = Nn; exports.useLinkEmail = Uo; exports.useLinkSMS = qo; exports.useLinkWithFarcaster = ln; exports.useLinkWithOAuth = _chunk2IOW73TRjs.i; exports.useLinkWithSiwe = go; exports.useLoginWithEmail = we; exports.useLoginWithFarcaster = xn; exports.useLoginWithOAuth = _chunk2IOW73TRjs.h; exports.useLoginWithSMS = en; exports.useLoginWithSiwe = wo; exports.useOAuthFlow = _chunk2IOW73TRjs.j; exports.useOAuthTokens = Tn; exports.usePrivy = Nr; exports.usePrivyClient = Gr; exports.usePrivyLogin = ls; exports.useUnlinkFarcaster = fn; exports.useUnlinkOAuth = Ln; exports.useUnlinkWallet = Lo;
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 _chunk7LS6TTOMjs = require('./chunk-7LS6TTOM.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunk7LS6TTOMjs.d.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 _chunk7LS6TTOMjs.b.call(void 0, _chunk7LS6TTOMjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var C=e=>_chunk7LS6TTOMjs.d.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 _chunk7LS6TTOMjs.b.call(void 0, _chunk7LS6TTOMjs.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, _chunk7LS6TTOMjs.l),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunk7LS6TTOMjs.e.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=>_chunk7LS6TTOMjs.d.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, _chunk7LS6TTOMjs.l),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunk7LS6TTOMjs.e.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=>_chunk7LS6TTOMjs.d.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(_chunk7LS6TTOMjs.b.call(void 0, _chunk7LS6TTOMjs.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 = _chunk7LS6TTOMjs.u; exports.isConnected = _chunk7LS6TTOMjs.o; exports.isConnecting = _chunk7LS6TTOMjs.q; exports.isCreating = _chunk7LS6TTOMjs.t; exports.isDisconnected = _chunk7LS6TTOMjs.r; exports.isNotCreated = _chunk7LS6TTOMjs.s; exports.isReconnecting = _chunk7LS6TTOMjs.p; exports.needsRecovery = _chunk7LS6TTOMjs.v; 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 _chunk2IOW73TRjs = require('./chunk-2IOW73TR.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunk2IOW73TRjs.d.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 _chunk2IOW73TRjs.b.call(void 0, _chunk2IOW73TRjs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var C=e=>_chunk2IOW73TRjs.d.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 _chunk2IOW73TRjs.b.call(void 0, _chunk2IOW73TRjs.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, _chunk2IOW73TRjs.l),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunk2IOW73TRjs.e.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=>_chunk2IOW73TRjs.d.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, _chunk2IOW73TRjs.l),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunk2IOW73TRjs.e.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=>_chunk2IOW73TRjs.d.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(_chunk2IOW73TRjs.b.call(void 0, _chunk2IOW73TRjs.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 = _chunk2IOW73TRjs.u; exports.isConnected = _chunk2IOW73TRjs.o; exports.isConnecting = _chunk2IOW73TRjs.q; exports.isCreating = _chunk2IOW73TRjs.t; exports.isDisconnected = _chunk2IOW73TRjs.r; exports.isNotCreated = _chunk2IOW73TRjs.s; exports.isReconnecting = _chunk2IOW73TRjs.p; exports.needsRecovery = _chunk2IOW73TRjs.v; 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.24.1",
3
+ "version": "0.24.2-beta-20240920184838",
4
4
  "description": "Expo client for the Privy Auth API",
5
5
  "keywords": [
6
6
  "authentication",
@@ -61,7 +61,7 @@
61
61
  "expo-web-browser": "*"
62
62
  },
63
63
  "dependencies": {
64
- "@privy-io/js-sdk-core": "0.28.1",
64
+ "@privy-io/js-sdk-core": "0.28.2-beta-20240920184838",
65
65
  "react-fast-compare": "^3.2.2"
66
66
  },
67
67
  "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 st=Object.defineProperty,lt=Object.defineProperties;var ct=Object.getOwnPropertyDescriptors;var te=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var Ee=(e,t,o)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,k= exports.a =(e,t)=>{for(var o in t||(t={}))We.call(t,o)&&Ee(e,o,t[o]);if(te)for(var o of te(t))_e.call(t,o)&&Ee(e,o,t[o]);return e},F= exports.b =(e,t)=>lt(e,ct(t));var er=(e,t)=>{var o={};for(var r in e)We.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&te)for(var r of te(e))t.indexOf(r)<0&&_e.call(e,r)&&(o[r]=e[r]);return o};var y=(e,t,o)=>new Promise((r,l)=>{var a=n=>{try{d(o.next(n))}catch(s){l(s)}},c=n=>{try{d(o.throw(n))}catch(s){l(s)}},d=n=>n.done?r(n.value):Promise.resolve(n.value).then(a,c);d((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var $e = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var N = _interopRequireWildcard(_expolinking); var ae = _interopRequireWildcard(_expolinking); var M = _interopRequireWildcard(_expolinking); var T = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var A = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var Z = _interopRequireWildcard(_expowebbrowser); var Me = _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 Ce={name:"@privy-io/expo",version:"0.24.1",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/esm/index.js",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.3",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","react-native-safe-area-context":"*","react-native-svg":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.28.1","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 Re=({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",n=>y(void 0,null,function*(){a.current&&n==="active"&&((yield e.embeddedWallet.ping(500))||(a.current.reload(),o("reloading")))})).remove,[]);let c=_react.useCallback.call(void 0, d=>y(void 0,null,function*(){let{data:n}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(n))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:a,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:c}):null};function re(s){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:c,recoverySecretOverride:d,iCloudRecordNameOverride:n}){var u,p;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(!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(!d||!n)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 i=r==="icloud"?"icloud-native":r;try{let{provider:f,user:v}=yield e.embeddedWallet.create(a,i,c,d,n),g=_jssdkcore.getUserEmbeddedWallet.call(void 0, v);return(p=(u=o.current)==null?void 0:u.onSuccess)==null||p.call(u,f),t({status:"connected",provider:f,account:g}),l({status:"initial"}),f}catch(f){let v=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:v,account:null}),l({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:v})}})}function Ae(a){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var c,d;t({status:"creating"});try{let n=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,n),t({status:"connected",publicKey:n._publicKey}),r({status:"initial"}),n}catch(n){let s=n instanceof Error?n.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 oe(s){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:c,recoveryToken:d,recoverySecretOverride:n}){var i,u,p,f;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(!c)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(!n)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 v=yield e.embeddedWallet.getProvider(t,c,d,n);return o({status:"connected",provider:v,account:t}),a({status:"initial"}),(u=(i=r.current)==null?void 0:i.onSuccess)==null||u.call(i,v),v}catch(v){o({status:"needs-recovery",account:t}),a({status:"initial"});let g=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(f=(p=r.current)==null?void 0:p.onError)==null||f.call(p,g),g}})}function Oe(a){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var c,d,n,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 i=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:i._publicKey}),l({status:"initial"}),(d=(c=r.current)==null?void 0:c.onSuccess)==null||d.call(c,i),i}catch(i){o({status:"needs-recovery"}),l({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:i instanceof Error?i.message:"Error recovering embedded wallet"});throw(s=(n=r.current)==null?void 0:n.onError)==null||s.call(n,u),u}})}var Pe=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:d})=>{let n=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),s=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){var v;let{user:p}=yield e.user.get(),f=(v=_jssdkcore.getUserEmbeddedWallet.call(void 0, p))!=null?v:void 0;return yield Ae({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l,ethereumAccount:f})}),[e,c]),i=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Oe({client:e,solanaAccount:n,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l})}),[e,n]),u=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!n)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(p=>p.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let p=yield e.embeddedWallet.getSolanaProvider(n);return r({status:"connected",publicKey:p._publicKey}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(r({status:"error",error:p.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&u().catch(()=>{})},[a,t,n]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&u()},[o.status]),{create:s,recover:i,getProvider:u}};function Ie(){return y(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 pe(r){return y(this,arguments,function*({user:e,appId:t,client:o}){var d;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 Ie(),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."});try{let{recoverySecret:n,iCloudRecordName:s}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:n,iCloudRecordName:s}}catch(n){if(n instanceof Error){let s=(d=n.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Le(o){return y(this,arguments,function*({walletAddress:e,client:t}){var n;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 Ie(),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 c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=c==null?void 0:c.container_identifier;if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s}=yield r.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:s}}catch(s){if(s instanceof Error){let i=(n=s.message.split("Caused by: ")[1])!=null?n:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:i})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Fe=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function R(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 xr=e=>new Promise(t=>setTimeout(t,e));function Fr(){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 ne(l){return y(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(ae.createURL(t||"/"));a=s;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Me.openAuthSessionAsync(a);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:d}=ae.parse(c.url),n;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:i}=d;if(!i||!s)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});n=yield ye({oAuthCode:i,oAuthState:s,client:o});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return n}catch(a){throw r==null||r(R(a)),a}})}function ye(r){return y(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 ie(a){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var c,d,n,s;try{let{provider:i,user:u}=yield e.embeddedWallet.setRecovery(t),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return l({status:"connected",provider:i,account:p}),(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,i),r({status:"initial"}),i}catch(i){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:i instanceof Error?i.message:"Error setting password on embedded wallet"});throw(s=(n=o.current)==null?void 0:n.onError)==null||s.call(n,u),r({status:"initial"}),u}})}function je(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 De=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:c,createWalletCallbacks:d,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:s})=>{let i=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var P;if(i)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:b}=je(m),h,w,E;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(P=d.current)==null?void 0:P.onError}),a({status:"creating-wallet"}),!h))return null;if(b==="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:O,iCloudRecordName:V}=yield pe({user:t,appId:o,client:e});w=O,E=V}return yield re({client:e,setWallet:l,createWalletCallbacks:d,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoverySecretOverride:w,iCloudRecordNameOverride:E})}),[e,i,t]),p=_react.useCallback.call(void 0, m=>y(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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:i.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let S,b;switch(m.recoveryMethod){case"privy":b=F(k({},m),{wallet:i});break;case"user-passcode":b=F(k({},m),{wallet:i,password:m.password});break;case"google-drive":if(S=yield ne({provider:m.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;b={recoveryMethod:"google-drive",wallet:i,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:w,iCloudRecordName:E}=yield pe({user:t,appId:o,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:w,iCloudRecordNameOverride:E,wallet:i};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ie({client:e,recoveryInput:b,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,i,r.status,t]),f=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){return p({recoveryMethod:"user-passcode",password:m})}),[e,i,r.status]),v=_react.useCallback.call(void 0, m=>y(void 0,null,function*(){var E;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:b}=je(m),h,w;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(E=n.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(b==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:P}=yield Le({client:e,walletAddress:i.address});w=P}return oe({client:e,account:i,setWallet:l,recoverWalletCallbacks:n,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:w})}),[e,i]),g=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!i)throw l({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(m=>m.status==="connected"?{status:"reconnecting",account:i}:{status:"connecting",account:i});try{let m=yield e.embeddedWallet.getProvider(i);return l({status:"connected",provider:m,account:i}),m}catch(m){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, m)?(l({status:"needs-recovery",account:i}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(l({status:"error",error:m.message,account:i}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:m.message})):(l({status:"error",error:"Error loading embedded wallet",account:i}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});c==="loaded"&&g().catch(()=>{})},[c,t,i]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&g()},[r.status]),{create:u,recover:v,setPassword:f,setRecovery:p,getProvider:g}};var Ve=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:d,isLoading:n}=r;if(!(!o||n))try{let s=yield d();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 He=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:c,oAuthStateRef:d})=>{let n=M.useURL(),s=_react.useCallback.call(void 0, i=>{var p,f;let u=R(i);a({status:"error",error:u}),(f=(p=l.current).onError)==null||f.call(p,u)},[a]);return _react.useEffect.call(void 0, ()=>{function i(){return y(this,null,function*(){var v,g;if(!n||r.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=M.parse(n),{privy_oauth_state:p,privy_oauth_code:f}=u;if(!f||!p){a({status:"done"});return}try{let m,S;if(t)m=yield e.auth.oauth.linkWithCode(f,p);else{let b=yield e.auth.oauth.loginWithCode(f,p,void 0,void 0,d.current.disableSignup?"no-signup":"login-or-sign-up");m=b.user,S=!!b.is_new_user}return(g=(v=l.current).onSuccess)==null||g.call(v,m,S),d.current={},a({status:"done"}),yield M.openURL(n.split("?")[0])}catch(m){d.current={},s(m)}})}_reactnative.Platform.OS==="android"&&o&&i()},[n,o])};var ze=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:c,setRecoveryFlowState:d,setWallet:n,appStateVisible:s,webViewLoaded:i})=>{let u=T.useURL(),p=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, v=>{var m,S,b,h;let g=R(v);a.status==="creating-wallet"?(S=(m=o.current).onError)==null||S.call(m,R(g)):(h=(b=r.current).onError)==null||h.call(b,R(g)),d({status:"initial"})},[a]);return _react.useEffect.call(void 0, ()=>{function v(){return y(this,null,function*(){if(!u&&a.status!=="initial"&&s&&f(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||c.status!=="initial"||!s||!i)return;let{queryParams:g}=T.parse(u),{privy_oauth_state:m,privy_oauth_code:S}=g;if(!(!S||!m)){yield T.openURL(u.split("?")[0]);try{let b=yield ye({oAuthCode:S,oAuthState:m,client:e});if(a.status==="creating-wallet")yield re({client:e,setWallet:n,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b});else if(a.status==="upgrading-recovery"){if(!p)throw new Error("Embedded wallet not found");yield ie({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:p,recoveryAccessToken:b},setWalletRecoveryCallbacks:l,setRecoveryFlowState:d,setWallet:n})}else yield oe({client:e,account:p,setWallet:n,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b})}catch(b){f(b)}}})}_reactnative.Platform.OS==="android"&&v()},[u,a.status,s,i])};var qe=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var be=_react.createContext.call(void 0, {}),de;function qo(){return de?de.getAccessToken():Promise.resolve(null)}var Bo=e=>{var ge;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let U=_reactnative.AppState.addEventListener("change",dt=>{o(dt==="active")});return()=>{U.remove()}},[]);let[r,l]=_react.useState.call(void 0, !1),[a,c]=_react.useState.call(void 0, "loading"),[d,n]=_react.useState.call(void 0, !1),[s,i]=_react.useState.call(void 0, null),[u,p]=_react.useState.call(void 0, {status:"disconnected",account:null}),[f,v]=_react.useState.call(void 0, {status:"disconnected"}),[g,m]=_react.useState.call(void 0, {status:"initial"}),[S,b]=_react.useState.call(void 0, {status:"initial"}),h=_react.useRef.call(void 0, {}),[w,E]=_react.useState.call(void 0, {status:"initial"}),[P,O]=_react.useState.call(void 0, {status:"initial"}),[V,H]=_react.useState.call(void 0, {status:"initial"}),[z,q]=_react.useState.call(void 0, {status:"initial"}),[B,K]=_react.useState.call(void 0, {status:"initial"}),G=_react.useRef.call(void 0, {}),se=_react.useRef.call(void 0, {}),le=_react.useRef.call(void 0, {}),ce=_react.useRef.call(void 0, {}),Se=_react.useRef.call(void 0, {}),we=_react.useRef.call(void 0, {}),[Qe,he]=_react.useState.call(void 0, null),Ze=_react.useCallback.call(void 0, ()=>{he(null)},[]),et=_react.useCallback.call(void 0, U=>{he(U)},[]),ee=_react.useCallback.call(void 0, U=>{if(U)return Fe(i)(U);i(null),m({status:"initial"}),b({status:"initial"}),p({status:"disconnected",account:null})},[]),_=_react.useMemo.call(void 0, ()=>{let U=e.storage||Xe;return de=new (0, _jssdkcore2.default)({storage:Ye(U),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ge(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ce.version}`,callbacks:{setUser:ee,setIsReady:n},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),de},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),tt=_react.useCallback.call(void 0, ()=>(ee(null),_.auth.logout()),[ee,_]),rt=_react.useCallback.call(void 0, ()=>_.getAccessToken(),[_]),ot=_react.useCallback.call(void 0, ()=>_.getIdentityToken(),[_]);qe({client:_,isUserInitialized:r,setIsUserInitialized:l});let at=De({client:_,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,setRecoveryFlowState:E,wallet:u,setWallet:p}),nt=Pe({client:_,user:s,webViewState:a,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setSolanaRecoveryFlowState:O,solanaWallet:f,setSolanaWallet:v});He({client:_,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:b,oAuthCallbacks:G,recoveryFlowState:w,oAuthStateRef:h}),ze({client:_,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,recoveryFlowState:w,oAuthState:S,setRecoveryFlowState:E,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:it}=Ve({client:_,user:s,isReady:r,customAuth:(ge=e.config)==null?void 0:ge.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(be.Provider,{value:{client:_,user:s,isReady:a!=="loading"&&r&&Ke(S)&&it,logout:tt,getAccessToken:rt,getIdentityToken:ot,wallet:k(k({},u),at),solanaWallet:k(k({},f),nt),oAuthState:S,oAuthCallbacks:G,recoveryFlowState:w,setRecoveryFlowState:E,solanaRecoveryFlowState:P,setSolanaRecoveryFlowState:O,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setOAuthState:b,siweState:V,setSiweState:H,otpState:g,setOtpState:m,passkeyState:z,setPasskeyState:q,farcasterState:B,setFarcasterState:K,oAuthStateRef:h,loginWithUI:et,closeLoginModal:Ze,privyModalOpen:Qe}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Re,{logLevel:e.logLevel,client:_,isClientReady:d,setWebViewState:c,webViewState:a})))};var Ke=e=>e.status!=="loading",fe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a,oAuthStateRef:c}=_react.useContext.call(void 0, be),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 n=_react.useCallback.call(void 0, i=>{var p;let u=R(i);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(g){return y(this,arguments,function*({provider:u,redirectUri:p,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var m,S,b;r({status:"loading"}),c.current={disableSignup:v};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:h}=yield a.auth.oauth.generateURL(u,N.createURL(p||"/")),w,E;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!f){let B=(m=new URL(h).searchParams.get("state"))!=null?m:"",K=yield $e.signInAsync({state:B});if(!K.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 G=yield a.auth.oauth.loginWithCode(K.authorizationCode,B,u,"raw",v?"no-signup":"login-or-sign-up");w=G.user,E=G.is_new_user}else w=yield a.auth.oauth.linkWithCode(K.authorizationCode,B,u,"raw");return(S=e==null?void 0:e.onSuccess)==null||S.call(e,w,E),r({status:"done"}),w!=null?w:void 0}let P=_reactnative.Platform.OS==="android"?h.replace("x.com","twitter.com"):h,O=yield Z.openAuthSessionAsync(P);if(_reactnative.Platform.OS==="android")return;if(O.type!=="success")throw[Z.WebBrowserResultType.CANCEL,Z.WebBrowserResultType.DISMISS].includes(O.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:V}=N.parse(O.url),{privy_oauth_state:H,privy_oauth_code:z}=V;if(!z||!H)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 q=yield a.auth.oauth.loginWithCode(z,H,u,void 0,v?"no-signup":"login-or-sign-up");w=q.user,E=q.is_new_user}else w=yield a.auth.oauth.linkWithCode(z,H,u);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,w,E),yield N.openURL(O.url.split("?")[0]),r({status:"done"}),w!=null?w:void 0}catch(h){n(h)}})},[t,a,r,n]),state:o}};function ea(e){let{state:t,start:o}=fe(F(k({},e),{action:"login"}));return{state:t,login:o}}function ta(e){let{state:t,start:o}=fe(F(k({},e),{action:"link"}));return{state:t,link:o}}function ra(e){return fe(e)}var Ge=()=>_expoapplication.applicationId;function Ye(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 Xe={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:()=>y(void 0,null,function*(){return[]})};function na(e){return e.status==="connected"}function ia(e){return e.status==="reconnecting"}function da(e){return e.status==="connecting"}function sa(e){return e.status==="disconnected"}function la(e){return e.status==="not-created"}function ca(e){return e.status==="creating"}function ua(e){return e.status==="error"}function pa(e){return e.status==="needs-recovery"}exports.a = k; exports.b = F; exports.c = er; exports.d = y; exports.e = R; exports.f = xr; exports.g = Fr; exports.h = ea; exports.i = ta; exports.j = ra; exports.k = Xe; exports.l = be; exports.m = qo; exports.n = Bo; exports.o = na; exports.p = ia; exports.q = da; exports.r = sa; exports.s = la; exports.t = ca; exports.u = ua; exports.v = pa;
@@ -1 +0,0 @@
1
- var st=Object.defineProperty,lt=Object.defineProperties;var ct=Object.getOwnPropertyDescriptors;var te=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var Ee=(e,t,o)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,k=(e,t)=>{for(var o in t||(t={}))We.call(t,o)&&Ee(e,o,t[o]);if(te)for(var o of te(t))_e.call(t,o)&&Ee(e,o,t[o]);return e},F=(e,t)=>lt(e,ct(t));var er=(e,t)=>{var o={};for(var r in e)We.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&te)for(var r of te(e))t.indexOf(r)<0&&_e.call(e,r)&&(o[r]=e[r]);return o};var y=(e,t,o)=>new Promise((r,l)=>{var a=n=>{try{d(o.next(n))}catch(s){l(s)}},c=n=>{try{d(o.throw(n))}catch(s){l(s)}},d=n=>n.done?r(n.value):Promise.resolve(n.value).then(a,c);d((o=o.apply(e,t)).next())});import*as $e from"expo-apple-authentication";import{applicationId as $t}from"expo-application";import*as N from"expo-linking";import*as A from"expo-secure-store";import*as Z from"expo-web-browser";import{useCallback as Je,useContext as Qt,useEffect as Zt}from"react";import{Platform as ve}from"react-native";import{PrivyClientError as D}from"@privy-io/js-sdk-core";import{digest as Bt}from"expo-crypto";import Q,{useState as W,useMemo as Kt,createContext as Gt,useCallback as j,useRef as L,useEffect as Yt}from"react";import{AppState as Be,View as Xt}from"react-native";import Jt from"@privy-io/js-sdk-core";var Ce={name:"@privy-io/expo",version:"0.24.1",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/esm/index.js",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.3",react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","react-native-safe-area-context":"*","react-native-svg":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.28.1","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 pt from"react";import{useCallback as mt,useEffect as ke,useRef as yt}from"react";import{AppState as bt}from"react-native";import vt from"react-native-webview";var Re=({client:e,isClientReady:t,setWebViewState:o,webViewState:r,logLevel:l})=>{let a=yt(null);ke(()=>{a.current&&r==="loaded"&&e.setMessagePoster(a.current)},[e,a.current,r==="loaded"]),ke(()=>bt.addEventListener("change",n=>y(void 0,null,function*(){a.current&&n==="active"&&((yield e.embeddedWallet.ping(500))||(a.current.reload(),o("reloading")))})).remove,[]);let c=mt(d=>y(void 0,null,function*(){let{data:n}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(n))}),[e]);return t?pt.createElement(vt,{style:{flex:1},ref:a,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:l==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:c}):null};import{useCallback as ue,useEffect as xe,useMemo as St}from"react";import{errorIndicatesRecoveryIsNeeded as wt,getUserEmbeddedSolanaWallet as ht,getUserEmbeddedWallet as gt,PrivyClientError as X}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as ft}from"@privy-io/js-sdk-core";import{PrivyClientError as Y}from"@privy-io/js-sdk-core";function re(s){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:r,setRecoveryFlowState:l,password:a,recoveryToken:c,recoverySecretOverride:d,iCloudRecordNameOverride:n}){var u,p;switch(r){case"user-passcode":if(!a)throw new Y({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new Y({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!d||!n)throw new Y({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let i=r==="icloud"?"icloud-native":r;try{let{provider:f,user:v}=yield e.embeddedWallet.create(a,i,c,d,n),g=ft(v);return(p=(u=o.current)==null?void 0:u.onSuccess)==null||p.call(u,f),t({status:"connected",provider:f,account:g}),l({status:"initial"}),f}catch(f){let v=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:v,account:null}),l({status:"initial"}),new Y({code:"embedded_wallet_creation_error",error:v})}})}function Ae(a){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:r,ethereumAccount:l}){var c,d;t({status:"creating"});try{let n=yield e.embeddedWallet.createSolana({ethereumAccount:l});return(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,n),t({status:"connected",publicKey:n._publicKey}),r({status:"initial"}),n}catch(n){let s=n instanceof Error?n.message:"Error creating embedded wallet";throw t({status:"error",error:s}),r({status:"initial"}),new Y({code:"embedded_wallet_creation_error",error:s})}})}import{PrivyClientError as I}from"@privy-io/js-sdk-core";function oe(s){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:r,recoveryMethod:l,setRecoveryFlowState:a,password:c,recoveryToken:d,recoverySecretOverride:n}){var i,u,p,f;if(!t)throw new I({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(l){case"user-passcode":if(!c)throw new I({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new I({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!n)throw new I({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let v=yield e.embeddedWallet.getProvider(t,c,d,n);return o({status:"connected",provider:v,account:t}),a({status:"initial"}),(u=(i=r.current)==null?void 0:i.onSuccess)==null||u.call(i,v),v}catch(v){o({status:"needs-recovery",account:t}),a({status:"initial"});let g=new I({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(f=(p=r.current)==null?void 0:p.onError)==null||f.call(p,g),g}})}function Oe(a){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:l}){var c,d,n,s;if(!t)throw new I({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let i=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:i._publicKey}),l({status:"initial"}),(d=(c=r.current)==null?void 0:c.onSuccess)==null||d.call(c,i),i}catch(i){o({status:"needs-recovery"}),l({status:"initial"});let u=new I({code:"embedded_wallet_recovery_error",error:i instanceof Error?i.message:"Error recovering embedded wallet"});throw(s=(n=r.current)==null?void 0:n.onError)==null||s.call(n,u),u}})}var Pe=({client:e,user:t,solanaWallet:o,setSolanaWallet:r,setSolanaRecoveryFlowState:l,webViewState:a,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:d})=>{let n=St(()=>ht(t),[t]),s=ue(()=>y(void 0,null,function*(){var v;let{user:p}=yield e.user.get(),f=(v=gt(p))!=null?v:void 0;return yield Ae({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:l,ethereumAccount:f})}),[e,c]),i=ue(()=>y(void 0,null,function*(){if(!n)throw new X({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return Oe({client:e,solanaAccount:n,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:l})}),[e,n]),u=ue(()=>y(void 0,null,function*(){if(!n)throw r({status:"not-created"}),new X({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(p=>p.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let p=yield e.embeddedWallet.getSolanaProvider(n);return r({status:"connected",publicKey:p._publicKey}),p}catch(p){throw wt(p)?(r({status:"needs-recovery"}),new X({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(r({status:"error",error:p.message}),new X({code:"unknown_embedded_wallet_error",error:p.message})):(r({status:"error",error:"Error loading embedded wallet"}),new X({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,n]);return xe(()=>{if(!t&&o.status!=="disconnected")return r({status:"disconnected"});a==="loaded"&&u().catch(()=>{})},[a,t,n]),xe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&u()},[o.status]),{create:s,recover:i,getProvider:u}};import{useCallback as $,useEffect as Te,useMemo as xt}from"react";import{throwIfInvalidRecoveryUpgradePath as Pt}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as Ut,getUserEmbeddedWallet as It,PrivyClientError as C}from"@privy-io/js-sdk-core";import{Platform as Ue}from"react-native";import{PrivyClientError as x}from"@privy-io/js-sdk-core";function Ie(){return y(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 pe(r){return y(this,arguments,function*({user:e,appId:t,client:o}){var d;if(Ue.OS==="android")throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let l=yield Ie(),a=yield o.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(a==null?void 0:a.container_identifier))throw new x({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:n,iCloudRecordName:s}=yield l.writeRecoverySecretToICloud({containerId:a.container_identifier,appId:t,userId:e.id});return{recoverySecret:n,iCloudRecordName:s}}catch(n){if(n instanceof Error){let s=(d=n.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new x({code:"embedded_wallet_recovery_error",error:s})}throw new x({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Le(o){return y(this,arguments,function*({walletAddress:e,client:t}){var n;if(Ue.OS==="android")throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let r=yield Ie(),a=(yield t.recovery.getRecoveryKeyMaterial(e)).icloud_record_name;if(!a)throw new x({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=c==null?void 0:c.container_identifier;if(!d)throw new x({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s}=yield r.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:s}}catch(s){if(s instanceof Error){let i=(n=s.message.split("Caused by: ")[1])!=null?n:"Error writing to iCloud";throw new x({code:"embedded_wallet_recovery_error",error:i})}throw new x({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}import*as ae from"expo-linking";import*as Me from"expo-web-browser";import{Platform as Rt}from"react-native";import{PrivyClientError as J}from"@privy-io/js-sdk-core";import Et from"react-fast-compare";var Fe=e=>t=>e(o=>Et(o,t)?o:t);import{PrivyApiError as Wt,PrivyClientError as _t}from"@privy-io/js-sdk-core";function R(e){return e instanceof Error||e instanceof Wt||e instanceof _t?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var xr=e=>new Promise(t=>setTimeout(t,e));import{useEffect as Ct,useRef as kt}from"react";import{AppState as me}from"react-native";function Fr(){let e=kt(me.currentState);Ct(()=>me.addEventListener("change",r=>{e.current=r}).remove,[]);function t(){return me.currentState}return{appState:e,getCurrentAppState:t}}function ne(l){return y(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(ae.createURL(t||"/"));a=s;break}default:throw new J({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Me.openAuthSessionAsync(a);if(Rt.OS==="android")return;if(c.type!=="success")throw new J({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:d}=ae.parse(c.url),n;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:i}=d;if(!i||!s)throw new J({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});n=yield ye({oAuthCode:i,oAuthState:s,client:o});break}default:throw new J({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return n}catch(a){throw r==null||r(R(a)),a}})}function ye(r){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:l}=yield o.recovery.auth.authorize(e,t);if(!l)throw new J({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return l})}import{getUserEmbeddedWallet as At,PrivyClientError as Ot}from"@privy-io/js-sdk-core";function ie(a){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:r,setWallet:l}){var c,d,n,s;try{let{provider:i,user:u}=yield e.embeddedWallet.setRecovery(t),p=At(u);return l({status:"connected",provider:i,account:p}),(d=(c=o.current)==null?void 0:c.onSuccess)==null||d.call(c,i),r({status:"initial"}),i}catch(i){let u=new Ot({code:"embedded_wallet_set_recovery_error",error:i instanceof Error?i.message:"Error setting password on embedded wallet"});throw(s=(n=o.current)==null?void 0:n.onError)==null||s.call(n,u),r({status:"initial"}),u}})}function je(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 De=({client:e,user:t,appId:o,wallet:r,setWallet:l,setRecoveryFlowState:a,webViewState:c,createWalletCallbacks:d,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:s})=>{let i=xt(()=>It(t),[t]),u=$(m=>y(void 0,null,function*(){var P;if(i)throw new C({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:S,recoveryMethod:b}=je(m),h,w,E;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(P=d.current)==null?void 0:P.onError}),a({status:"creating-wallet"}),!h))return null;if(b==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:O,iCloudRecordName:V}=yield pe({user:t,appId:o,client:e});w=O,E=V}return yield re({client:e,setWallet:l,createWalletCallbacks:d,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoverySecretOverride:w,iCloudRecordNameOverride:E})}),[e,i,t]),p=$(m=>y(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(!i)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});Pt({currentRecoveryMethod:i.recovery_method,upgradeToRecoveryMethod:m.recoveryMethod});let S,b;switch(m.recoveryMethod){case"privy":b=F(k({},m),{wallet:i});break;case"user-passcode":b=F(k({},m),{wallet:i,password:m.password});break;case"google-drive":if(S=yield ne({provider:m.recoveryMethod,client:e,onError:(h=s.current)==null?void 0:h.onError}),a({status:"upgrading-recovery"}),!S)return null;b={recoveryMethod:"google-drive",wallet:i,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:w,iCloudRecordName:E}=yield pe({user:t,appId:o,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:w,iCloudRecordNameOverride:E,wallet:i};break;default:throw new C({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ie({client:e,recoveryInput:b,setWalletRecoveryCallbacks:s,setRecoveryFlowState:a,setWallet:l})}),[e,i,r.status,t]),f=$(m=>y(void 0,null,function*(){return p({recoveryMethod:"user-passcode",password:m})}),[e,i,r.status]),v=$(m=>y(void 0,null,function*(){var E;if(!i)throw new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:S,recoveryMethod:b}=je(m),h,w;if(b==="google-drive"&&(h=yield ne({provider:b,client:e,onError:(E=n.current)==null?void 0:E.onError}),a({status:"recovering"}),!h))return null;if(b==="icloud"){if(!t)throw new C({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:P}=yield Le({client:e,walletAddress:i.address});w=P}return oe({client:e,account:i,setWallet:l,recoverWalletCallbacks:n,recoveryMethod:b,setRecoveryFlowState:a,password:S,recoveryToken:h,recoverySecretOverride:w})}),[e,i]),g=$(()=>y(void 0,null,function*(){if(!i)throw l({status:"not-created",account:null}),new C({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});l(m=>m.status==="connected"?{status:"reconnecting",account:i}:{status:"connecting",account:i});try{let m=yield e.embeddedWallet.getProvider(i);return l({status:"connected",provider:m,account:i}),m}catch(m){throw Ut(m)?(l({status:"needs-recovery",account:i}),new C({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(l({status:"error",error:m.message,account:i}),new C({code:"unknown_embedded_wallet_error",error:m.message})):(l({status:"error",error:"Error loading embedded wallet",account:i}),new C({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,i]);return Te(()=>{if(!t&&r.status!=="disconnected")return l({status:"disconnected",account:null});c==="loaded"&&g().catch(()=>{})},[c,t,i]),Te(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&g()},[r.status]),{create:u,recover:v,setPassword:f,setRecovery:p,getProvider:g}};import{useEffect as Lt,useState as Ft}from"react";import{PrivyClientError as Ne}from"@privy-io/js-sdk-core";var Ve=({client:e,user:t,isReady:o,customAuth:r})=>{let[l,a]=Ft({status:"initial"});return Lt(()=>{(()=>y(void 0,null,function*(){if(!(r!=null&&r.enabled)){a({status:"not-enabled"});return}a({status:"loading"});let{getCustomAccessToken:d,isLoading:n}=r;if(!(!o||n))try{let s=yield d();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 Ne({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 Ne({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 M from"expo-linking";import{useCallback as Mt,useEffect as Tt}from"react";import{Platform as jt}from"react-native";var He=({client:e,user:t,isUserInitialized:o,oAuthState:r,oAuthCallbacks:l,setOAuthState:a,recoveryFlowState:c,oAuthStateRef:d})=>{let n=M.useURL(),s=Mt(i=>{var p,f;let u=R(i);a({status:"error",error:u}),(f=(p=l.current).onError)==null||f.call(p,u)},[a]);return Tt(()=>{function i(){return y(this,null,function*(){var v,g;if(!n||r.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=M.parse(n),{privy_oauth_state:p,privy_oauth_code:f}=u;if(!f||!p){a({status:"done"});return}try{let m,S;if(t)m=yield e.auth.oauth.linkWithCode(f,p);else{let b=yield e.auth.oauth.loginWithCode(f,p,void 0,void 0,d.current.disableSignup?"no-signup":"login-or-sign-up");m=b.user,S=!!b.is_new_user}return(g=(v=l.current).onSuccess)==null||g.call(v,m,S),d.current={},a({status:"done"}),yield M.openURL(n.split("?")[0])}catch(m){d.current={},s(m)}})}jt.OS==="android"&&o&&i()},[n,o])};import*as T from"expo-linking";import{useCallback as Dt,useEffect as Nt,useMemo as Vt}from"react";import{Platform as Ht}from"react-native";import{getUserEmbeddedWallet as zt}from"@privy-io/js-sdk-core";var ze=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:l,recoveryFlowState:a,oAuthState:c,setRecoveryFlowState:d,setWallet:n,appStateVisible:s,webViewLoaded:i})=>{let u=T.useURL(),p=Vt(()=>zt(t),[t]),f=Dt(v=>{var m,S,b,h;let g=R(v);a.status==="creating-wallet"?(S=(m=o.current).onError)==null||S.call(m,R(g)):(h=(b=r.current).onError)==null||h.call(b,R(g)),d({status:"initial"})},[a]);return Nt(()=>{function v(){return y(this,null,function*(){if(!u&&a.status!=="initial"&&s&&f(new Error("Recovery OAuth session failed")),!u||a.status==="initial"||c.status!=="initial"||!s||!i)return;let{queryParams:g}=T.parse(u),{privy_oauth_state:m,privy_oauth_code:S}=g;if(!(!S||!m)){yield T.openURL(u.split("?")[0]);try{let b=yield ye({oAuthCode:S,oAuthState:m,client:e});if(a.status==="creating-wallet")yield re({client:e,setWallet:n,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b});else if(a.status==="upgrading-recovery"){if(!p)throw new Error("Embedded wallet not found");yield ie({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:p,recoveryAccessToken:b},setWalletRecoveryCallbacks:l,setRecoveryFlowState:d,setWallet:n})}else yield oe({client:e,account:p,setWallet:n,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:d,recoveryToken:b})}catch(b){f(b)}}})}Ht.OS==="android"&&v()},[u,a.status,s,i])};import{useEffect as qt}from"react";var qe=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{qt(()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(l){}finally{o(!0)}}))()},[t])};var be=Gt({}),de;function qo(){return de?de.getAccessToken():Promise.resolve(null)}var Bo=e=>{var ge;let[t,o]=W(Be.currentState==="active");Yt(()=>{let U=Be.addEventListener("change",dt=>{o(dt==="active")});return()=>{U.remove()}},[]);let[r,l]=W(!1),[a,c]=W("loading"),[d,n]=W(!1),[s,i]=W(null),[u,p]=W({status:"disconnected",account:null}),[f,v]=W({status:"disconnected"}),[g,m]=W({status:"initial"}),[S,b]=W({status:"initial"}),h=L({}),[w,E]=W({status:"initial"}),[P,O]=W({status:"initial"}),[V,H]=W({status:"initial"}),[z,q]=W({status:"initial"}),[B,K]=W({status:"initial"}),G=L({}),se=L({}),le=L({}),ce=L({}),Se=L({}),we=L({}),[Qe,he]=W(null),Ze=j(()=>{he(null)},[]),et=j(U=>{he(U)},[]),ee=j(U=>{if(U)return Fe(i)(U);i(null),m({status:"initial"}),b({status:"initial"}),p({status:"disconnected",account:null})},[]),_=Kt(()=>{let U=e.storage||Xe;return de=new Jt({storage:Ye(U),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:Ge(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ce.version}`,callbacks:{setUser:ee,setIsReady:n},logLevel:e.logLevel,crypto:{digest:Bt}}),de},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),tt=j(()=>(ee(null),_.auth.logout()),[ee,_]),rt=j(()=>_.getAccessToken(),[_]),ot=j(()=>_.getIdentityToken(),[_]);qe({client:_,isUserInitialized:r,setIsUserInitialized:l});let at=De({client:_,user:s,appId:e.appId,webViewState:a,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,setRecoveryFlowState:E,wallet:u,setWallet:p}),nt=Pe({client:_,user:s,webViewState:a,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setSolanaRecoveryFlowState:O,solanaWallet:f,setSolanaWallet:v});He({client:_,isUserInitialized:r,user:s,oAuthState:S,setOAuthState:b,oAuthCallbacks:G,recoveryFlowState:w,oAuthStateRef:h}),ze({client:_,user:s,webViewLoaded:a==="loaded",createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,recoveryFlowState:w,oAuthState:S,setRecoveryFlowState:E,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:it}=Ve({client:_,user:s,isReady:r,customAuth:(ge=e.config)==null?void 0:ge.customAuth});return Q.createElement(Q.Fragment,null,Q.createElement(be.Provider,{value:{client:_,user:s,isReady:a!=="loading"&&r&&Ke(S)&&it,logout:tt,getAccessToken:rt,getIdentityToken:ot,wallet:k(k({},u),at),solanaWallet:k(k({},f),nt),oAuthState:S,oAuthCallbacks:G,recoveryFlowState:w,setRecoveryFlowState:E,solanaRecoveryFlowState:P,setSolanaRecoveryFlowState:O,createWalletCallbacks:se,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ce,createSolanaWalletCallbacks:Se,recoverSolanaWalletCallbacks:we,setOAuthState:b,siweState:V,setSiweState:H,otpState:g,setOtpState:m,passkeyState:z,setPasskeyState:q,farcasterState:B,setFarcasterState:K,oAuthStateRef:h,loginWithUI:et,closeLoginModal:Ze,privyModalOpen:Qe}},e.children),Q.createElement(Xt,{style:{width:0,height:0,overflow:"hidden"}},Q.createElement(Re,{logLevel:e.logLevel,client:_,isClientReady:d,setWebViewState:c,webViewState:a})))};var Ke=e=>e.status!=="loading",fe=(e={})=>{let{user:t,oAuthState:o,setOAuthState:r,oAuthCallbacks:l,client:a,oAuthStateRef:c}=Qt(be),d=e.action?e.action==="login":!t;Zt(()=>{l.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let n=Je(i=>{var p;let u=R(i);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError]);return{start:Je(function(g){return y(this,arguments,function*({provider:u,redirectUri:p,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var m,S,b;r({status:"loading"}),c.current={disableSignup:v};try{if(t&&e.action==="login")throw new D({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 D({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:h}=yield a.auth.oauth.generateURL(u,N.createURL(p||"/")),w,E;if(ve.OS==="ios"&&u==="apple"&&!f){let B=(m=new URL(h).searchParams.get("state"))!=null?m:"",K=yield $e.signInAsync({state:B});if(!K.authorizationCode)throw new D({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let G=yield a.auth.oauth.loginWithCode(K.authorizationCode,B,u,"raw",v?"no-signup":"login-or-sign-up");w=G.user,E=G.is_new_user}else w=yield a.auth.oauth.linkWithCode(K.authorizationCode,B,u,"raw");return(S=e==null?void 0:e.onSuccess)==null||S.call(e,w,E),r({status:"done"}),w!=null?w:void 0}let P=ve.OS==="android"?h.replace("x.com","twitter.com"):h,O=yield Z.openAuthSessionAsync(P);if(ve.OS==="android")return;if(O.type!=="success")throw[Z.WebBrowserResultType.CANCEL,Z.WebBrowserResultType.DISMISS].includes(O.type)?new D({error:"OAuth was cancelled",code:d?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new D({error:"OAuth session failed",code:d?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:V}=N.parse(O.url),{privy_oauth_state:H,privy_oauth_code:z}=V;if(!z||!H)throw new D({error:"OAuth invalid credentials",code:d?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(d){let q=yield a.auth.oauth.loginWithCode(z,H,u,void 0,v?"no-signup":"login-or-sign-up");w=q.user,E=q.is_new_user}else w=yield a.auth.oauth.linkWithCode(z,H,u);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,w,E),yield N.openURL(O.url.split("?")[0]),r({status:"done"}),w!=null?w:void 0}catch(h){n(h)}})},[t,a,r,n]),state:o}};function ea(e){let{state:t,start:o}=fe(F(k({},e),{action:"login"}));return{state:t,login:o}}function ta(e){let{state:t,start:o}=fe(F(k({},e),{action:"link"}));return{state:t,link:o}}function ra(e){return fe(e)}var Ge=()=>$t;function Ye(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 Xe={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:()=>y(void 0,null,function*(){return[]})};function na(e){return e.status==="connected"}function ia(e){return e.status==="reconnecting"}function da(e){return e.status==="connecting"}function sa(e){return e.status==="disconnected"}function la(e){return e.status==="not-created"}function ca(e){return e.status==="creating"}function ua(e){return e.status==="error"}function pa(e){return e.status==="needs-recovery"}export{k as a,F as b,er as c,y as d,R as e,xr as f,Fr as g,ea as h,ta as i,ra as j,Xe as k,be as l,qo as m,Bo as n,na as o,ia as p,da as q,sa as r,la as s,ca as t,ua as u,pa as v};