@privy-io/expo 0.21.4 → 0.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-PC7W3FI5.js → chunk-QYCPG73N.js} +1 -1
- package/dist/esm/{chunk-PC7W3FI5.js → chunk-QYCPG73N.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/passkey.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/passkey.d.ts +2 -2
- package/dist/passkey.js +1 -1
- package/package.json +2 -2
|
@@ -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 }; }var $e=Object.defineProperty,Qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ve=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var fe=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,C= exports.a =(e,t)=>{for(var o in t||(t={}))et.call(t,o)&&fe(e,o,t[o]);if(ve)for(var o of ve(t))tt.call(t,o)&&fe(e,o,t[o]);return e},H= exports.b =(e,t)=>Qe(e,Ze(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var ze = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var T = _interopRequireWildcard(_expolinking); var Q = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking); var L = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var R = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var G = _interopRequireWildcard(_expowebbrowser); var Ae = _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 we={name:"@privy-io/expo",version:"0.21.4",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.24.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 Ee=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=_react.useCallback.call(void 0, l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};function J(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function ge(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:r})}})}function $(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let b=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:b,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,b),b}catch(b){o({status:"needs-recovery",account:t}),n({status:"initial"});let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:b instanceof Error?b.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,w),w}})}function We(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var ke=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),r=_react.useMemo.call(void 0, ()=>{var b;return(b=_jssdkcore.getUserEmbeddedWallet.call(void 0, t))!=null?b:void 0},[t]),s=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){return yield ge({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return We({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(b=>b.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let b=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:b._publicKey}),b}catch(b){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, b)?(a({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):b instanceof Error?(a({status:"error",error:b.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:b.message})):(a({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Re=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function k(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var br=e=>new Promise(t=>setTimeout(t,e));function hr(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function Z(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Q.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Ae.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Q.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield se({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(k(n)),n}})}function se(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}function ee(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function xe(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 Pe=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),s=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var h;if(r)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=i.current)==null?void 0:h.onError}),c({status:"creating-wallet"}),!S)return null}return yield J({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),u=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var S,h,_;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let f,m;switch(p.recoveryMethod){case"user-passcode":m=H(C({},p),{wallet:r,password:p.password});break;case"google-drive":case"icloud":if(p.recoveryMethod==="icloud"&&_reactnative.Platform.OS==="android"){let O=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(h=(S=d.current)==null?void 0:S.onError)==null||h.call(S,O),O}if(f=yield Z({provider:p.recoveryMethod,client:e,onError:(_=d.current)==null?void 0:_.onError}),c({status:"upgrading-recovery"}),!f)return null;m={recoveryMethod:p.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ee({client:e,recoveryInput:m,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:p})}),[e,r,o.status]),b=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var h;if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=l.current)==null?void 0:h.onError}),c({status:"recovering"}),!S)return null}return $({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),w=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let p=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:p,account:r}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(a({status:"needs-recovery",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&w().catch(()=>{})},[n,t,r]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:s,recover:b,setPassword:v,setRecovery:u,getProvider:w}};var Fe=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};var Le=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=F.useURL(),d=_react.useCallback.call(void 0, r=>{var u,v;let s=k(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return _react.useEffect.call(void 0, ()=>{function r(){return y(this,null,function*(){var b,w;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=F.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let p,f;if(t)p=yield e.auth.oauth.linkWithCode(v,u);else{let m=yield e.auth.oauth.loginWithCode(v,u);p=m.user,f=!!m.is_new_user}return(w=(b=c.current).onSuccess)==null||w.call(b,p,f),n({status:"done"}),yield F.openURL(l.split("?")[0])}catch(p){d(p)}})}_reactnative.Platform.OS==="android"&&o&&r()},[l,o])};var Ie=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=L.useURL(),v=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),b=_react.useCallback.call(void 0, w=>{var f,m,S,h;let p=k(w);n.status==="creating-wallet"?(m=(f=o.current).onError)==null||m.call(f,k(p)):(h=(S=a.current).onError)==null||h.call(S,k(p)),l({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function w(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&b(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:p}=L.parse(u),{privy_oauth_state:f,privy_oauth_code:m}=p;if(!(!m||!f)){yield L.openURL(u.split("?")[0]);try{let S=yield se({oAuthCode:m,oAuthState:f,client:e});if(n.status==="creating-wallet")yield J({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield ee({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:S},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield $({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S})}catch(S){b(S)}}})}_reactnative.Platform.OS==="android"&&w()},[u,n.status,r,s])};var Me=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ce=_react.createContext.call(void 0, {}),te;function Oo(){return te?te.getAccessToken():Promise.resolve(null)}var xo=e=>{var Se;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let P=_reactnative.AppState.addEventListener("change",Je=>{o(Je==="active")});return()=>{P.remove()}},[]);let[a,c]=_react.useState.call(void 0, !1),[n,i]=_react.useState.call(void 0, "loading"),[l,d]=_react.useState.call(void 0, !1),[r,s]=_react.useState.call(void 0, null),[u,v]=_react.useState.call(void 0, {status:"disconnected",account:null}),[b,w]=_react.useState.call(void 0, {status:"disconnected"}),[p,f]=_react.useState.call(void 0, {status:"initial"}),[m,S]=_react.useState.call(void 0, {status:"initial"}),[h,_]=_react.useState.call(void 0, {status:"initial"}),[O,x]=_react.useState.call(void 0, {status:"initial"}),[j,D]=_react.useState.call(void 0, {status:"initial"}),[N,V]=_react.useState.call(void 0, {status:"initial"}),[Y,qe]=_react.useState.call(void 0, {status:"initial"}),pe=_react.useRef.call(void 0, {}),re=_react.useRef.call(void 0, {}),oe=_react.useRef.call(void 0, {}),ae=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),be=_react.useRef.call(void 0, {}),X=_react.useCallback.call(void 0, P=>{if(P)return Re(s)(P);s(null),f({status:"initial"}),S({status:"initial"}),v({status:"disconnected",account:null})},[]),g=_react.useMemo.call(void 0, ()=>{let P=e.storage||Ve;return te=new (0, _jssdkcore2.default)({storage:Ne(P),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:De(),baseUrl:e.baseUrl,sdkVersion:`expo:${we.version}`,callbacks:{setUser:X,setIsReady:d},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),te},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,X]),Ke=_react.useCallback.call(void 0, ()=>(X(null),g.auth.logout()),[X,g]),Be=_react.useCallback.call(void 0, ()=>g.getAccessToken(),[g]);Me({client:g,isUserInitialized:a,setIsUserInitialized:c});let Ge=Pe({client:g,user:r,webViewState:n,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,setRecoveryFlowState:_,wallet:u,setWallet:v}),Ye=ke({client:g,user:r,webViewState:n,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setSolanaRecoveryFlowState:x,solanaWallet:b,setSolanaWallet:w});Le({client:g,isUserInitialized:a,user:r,oAuthState:m,setOAuthState:S,oAuthCallbacks:pe,recoveryFlowState:h}),Ie({client:g,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,recoveryFlowState:h,oAuthState:m,setRecoveryFlowState:_,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Xe}=Fe({client:g,user:r,isReady:a,customAuth:(Se=e.config)==null?void 0:Se.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(ce.Provider,{value:{client:g,user:r,isReady:n!=="loading"&&a&&je(m)&&Xe,logout:Ke,getAccessToken:Be,wallet:C(C({},u),Ge),solanaWallet:C(C({},b),Ye),oAuthState:m,oAuthCallbacks:pe,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:O,setSolanaRecoveryFlowState:x,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setOAuthState:S,siweState:j,setSiweState:D,otpState:p,setOtpState:f,passkeyState:N,setPasskeyState:V,farcasterState:Y,setFarcasterState:qe}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Ee,{logLevel:e.logLevel,client:g,isClientReady:l,setWebViewState:i,webViewState:n})))};var je=e=>e.status!=="loading",me=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=_react.useContext.call(void 0, ce),i=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=_react.useCallback.call(void 0, r=>{var u;let s=k(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(v){return y(this,arguments,function*({provider:s,redirectUri:u}){var b,w,p;a({status:"loading"});try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:f}=yield n.auth.oauth.generateURL(s,T.createURL(u||"/")),m,S;if(_reactnative.Platform.OS==="ios"&&s==="apple"){let N=(b=new URL(f).searchParams.get("state"))!=null?b:"",V=yield ze.signInAsync({state:N});if(!V.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");m=Y.user,S=Y.is_new_user}else m=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,S),a({status:"done"}),m!=null?m:void 0}let h=_reactnative.Platform.OS==="android"?f.replace("x.com","twitter.com"):f,_=yield G.openAuthSessionAsync(h);if(_reactnative.Platform.OS==="android")return;if(_.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(_.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=T.parse(_.url),{privy_oauth_state:x,privy_oauth_code:j}=O;if(!j||!x)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,x,s);m=D.user,S=D.is_new_user}else m=yield n.auth.oauth.linkWithCode(j,x,s);return(p=e==null?void 0:e.onSuccess)==null||p.call(e,m,S),yield T.openURL(_.url.split("?")[0]),a({status:"done"}),m!=null?m:void 0}catch(f){l(f)}})},[t,n,a,l]),state:o}};function Do(e){let{state:t,start:o}=me(H(C({},e),{action:"login"}));return{state:t,login:o}}function No(e){let{state:t,start:o}=me(H(C({},e),{action:"link"}));return{state:t,link:o}}function Vo(e){return me(e)}var De=()=>_expoapplication.applicationId;function Ne(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 Ve={get(e){return R.getItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return R.setItemAsync(e,t,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return R.deleteItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function qo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Bo(e){return e.status==="connecting"}function Go(e){return e.status==="disconnected"}function Yo(e){return e.status==="not-created"}function Xo(e){return e.status==="creating"}function Jo(e){return e.status==="error"}function $o(e){return e.status==="needs-recovery"}exports.a = C; exports.b = H; exports.c = y; exports.d = k; exports.e = br; exports.f = hr; exports.g = Do; exports.h = No; exports.i = Vo; exports.j = Ve; exports.k = ce; exports.l = Oo; exports.m = xo; exports.n = qo; exports.o = Ko; exports.p = Bo; exports.q = Go; exports.r = Yo; exports.s = Xo; exports.t = Jo; exports.u = $o;
|
|
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 $e=Object.defineProperty,Qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ve=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var fe=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,C= exports.a =(e,t)=>{for(var o in t||(t={}))et.call(t,o)&&fe(e,o,t[o]);if(ve)for(var o of ve(t))tt.call(t,o)&&fe(e,o,t[o]);return e},H= exports.b =(e,t)=>Qe(e,Ze(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var ze = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var T = _interopRequireWildcard(_expolinking); var Q = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking); var L = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var R = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var G = _interopRequireWildcard(_expowebbrowser); var Ae = _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 we={name:"@privy-io/expo",version:"0.21.5",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.24.2","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 Ee=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=_react.useCallback.call(void 0, l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};function J(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function ge(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:r})}})}function $(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let b=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:b,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,b),b}catch(b){o({status:"needs-recovery",account:t}),n({status:"initial"});let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:b instanceof Error?b.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,w),w}})}function We(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var ke=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),[t]),r=_react.useMemo.call(void 0, ()=>{var b;return(b=_jssdkcore.getUserEmbeddedWallet.call(void 0, t))!=null?b:void 0},[t]),s=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){return yield ge({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return We({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(b=>b.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let b=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:b._publicKey}),b}catch(b){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, b)?(a({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):b instanceof Error?(a({status:"error",error:b.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:b.message})):(a({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Re=e=>t=>e(o=>_reactfastcompare2.default.call(void 0, o,t)?o:t);function k(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var br=e=>new Promise(t=>setTimeout(t,e));function hr(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function Z(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Q.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Ae.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Q.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield se({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(k(n)),n}})}function se(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}function ee(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function xe(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 Pe=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),s=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var h;if(r)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=i.current)==null?void 0:h.onError}),c({status:"creating-wallet"}),!S)return null}return yield J({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),u=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var S,h,_;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let f,m;switch(p.recoveryMethod){case"user-passcode":m=H(C({},p),{wallet:r,password:p.password});break;case"google-drive":case"icloud":if(p.recoveryMethod==="icloud"&&_reactnative.Platform.OS==="android"){let O=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(h=(S=d.current)==null?void 0:S.onError)==null||h.call(S,O),O}if(f=yield Z({provider:p.recoveryMethod,client:e,onError:(_=d.current)==null?void 0:_.onError}),c({status:"upgrading-recovery"}),!f)return null;m={recoveryMethod:p.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ee({client:e,recoveryInput:m,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:p})}),[e,r,o.status]),b=_react.useCallback.call(void 0, p=>y(void 0,null,function*(){var h;if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=l.current)==null?void 0:h.onError}),c({status:"recovering"}),!S)return null}return $({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),w=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let p=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:p,account:r}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(a({status:"needs-recovery",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&w().catch(()=>{})},[n,t,r]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:s,recover:b,setPassword:v,setRecovery:u,getProvider:w}};var Fe=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};var Le=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=F.useURL(),d=_react.useCallback.call(void 0, r=>{var u,v;let s=k(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return _react.useEffect.call(void 0, ()=>{function r(){return y(this,null,function*(){var b,w;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=F.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let p,f;if(t)p=yield e.auth.oauth.linkWithCode(v,u);else{let m=yield e.auth.oauth.loginWithCode(v,u);p=m.user,f=!!m.is_new_user}return(w=(b=c.current).onSuccess)==null||w.call(b,p,f),n({status:"done"}),yield F.openURL(l.split("?")[0])}catch(p){d(p)}})}_reactnative.Platform.OS==="android"&&o&&r()},[l,o])};var Ie=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=L.useURL(),v=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),b=_react.useCallback.call(void 0, w=>{var f,m,S,h;let p=k(w);n.status==="creating-wallet"?(m=(f=o.current).onError)==null||m.call(f,k(p)):(h=(S=a.current).onError)==null||h.call(S,k(p)),l({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function w(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&b(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:p}=L.parse(u),{privy_oauth_state:f,privy_oauth_code:m}=p;if(!(!m||!f)){yield L.openURL(u.split("?")[0]);try{let S=yield se({oAuthCode:m,oAuthState:f,client:e});if(n.status==="creating-wallet")yield J({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield ee({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:S},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield $({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S})}catch(S){b(S)}}})}_reactnative.Platform.OS==="android"&&w()},[u,n.status,r,s])};var Me=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ce=_react.createContext.call(void 0, {}),te;function Oo(){return te?te.getAccessToken():Promise.resolve(null)}var xo=e=>{var Se;let[t,o]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let P=_reactnative.AppState.addEventListener("change",Je=>{o(Je==="active")});return()=>{P.remove()}},[]);let[a,c]=_react.useState.call(void 0, !1),[n,i]=_react.useState.call(void 0, "loading"),[l,d]=_react.useState.call(void 0, !1),[r,s]=_react.useState.call(void 0, null),[u,v]=_react.useState.call(void 0, {status:"disconnected",account:null}),[b,w]=_react.useState.call(void 0, {status:"disconnected"}),[p,f]=_react.useState.call(void 0, {status:"initial"}),[m,S]=_react.useState.call(void 0, {status:"initial"}),[h,_]=_react.useState.call(void 0, {status:"initial"}),[O,x]=_react.useState.call(void 0, {status:"initial"}),[j,D]=_react.useState.call(void 0, {status:"initial"}),[N,V]=_react.useState.call(void 0, {status:"initial"}),[Y,qe]=_react.useState.call(void 0, {status:"initial"}),pe=_react.useRef.call(void 0, {}),re=_react.useRef.call(void 0, {}),oe=_react.useRef.call(void 0, {}),ae=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),be=_react.useRef.call(void 0, {}),X=_react.useCallback.call(void 0, P=>{if(P)return Re(s)(P);s(null),f({status:"initial"}),S({status:"initial"}),v({status:"disconnected",account:null})},[]),g=_react.useMemo.call(void 0, ()=>{let P=e.storage||Ve;return te=new (0, _jssdkcore2.default)({storage:Ne(P),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:De(),baseUrl:e.baseUrl,sdkVersion:`expo:${we.version}`,callbacks:{setUser:X,setIsReady:d},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),te},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,X]),Ke=_react.useCallback.call(void 0, ()=>(X(null),g.auth.logout()),[X,g]),Be=_react.useCallback.call(void 0, ()=>g.getAccessToken(),[g]);Me({client:g,isUserInitialized:a,setIsUserInitialized:c});let Ge=Pe({client:g,user:r,webViewState:n,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,setRecoveryFlowState:_,wallet:u,setWallet:v}),Ye=ke({client:g,user:r,webViewState:n,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setSolanaRecoveryFlowState:x,solanaWallet:b,setSolanaWallet:w});Le({client:g,isUserInitialized:a,user:r,oAuthState:m,setOAuthState:S,oAuthCallbacks:pe,recoveryFlowState:h}),Ie({client:g,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,recoveryFlowState:h,oAuthState:m,setRecoveryFlowState:_,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Xe}=Fe({client:g,user:r,isReady:a,customAuth:(Se=e.config)==null?void 0:Se.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(ce.Provider,{value:{client:g,user:r,isReady:n!=="loading"&&a&&je(m)&&Xe,logout:Ke,getAccessToken:Be,wallet:C(C({},u),Ge),solanaWallet:C(C({},b),Ye),oAuthState:m,oAuthCallbacks:pe,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:O,setSolanaRecoveryFlowState:x,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setOAuthState:S,siweState:j,setSiweState:D,otpState:p,setOtpState:f,passkeyState:N,setPasskeyState:V,farcasterState:Y,setFarcasterState:qe}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Ee,{logLevel:e.logLevel,client:g,isClientReady:l,setWebViewState:i,webViewState:n})))};var je=e=>e.status!=="loading",me=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=_react.useContext.call(void 0, ce),i=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=_react.useCallback.call(void 0, r=>{var u;let s=k(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(v){return y(this,arguments,function*({provider:s,redirectUri:u}){var b,w,p;a({status:"loading"});try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:f}=yield n.auth.oauth.generateURL(s,T.createURL(u||"/")),m,S;if(_reactnative.Platform.OS==="ios"&&s==="apple"){let N=(b=new URL(f).searchParams.get("state"))!=null?b:"",V=yield ze.signInAsync({state:N});if(!V.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");m=Y.user,S=Y.is_new_user}else m=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,S),a({status:"done"}),m!=null?m:void 0}let h=_reactnative.Platform.OS==="android"?f.replace("x.com","twitter.com"):f,_=yield G.openAuthSessionAsync(h);if(_reactnative.Platform.OS==="android")return;if(_.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(_.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=T.parse(_.url),{privy_oauth_state:x,privy_oauth_code:j}=O;if(!j||!x)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,x,s);m=D.user,S=D.is_new_user}else m=yield n.auth.oauth.linkWithCode(j,x,s);return(p=e==null?void 0:e.onSuccess)==null||p.call(e,m,S),yield T.openURL(_.url.split("?")[0]),a({status:"done"}),m!=null?m:void 0}catch(f){l(f)}})},[t,n,a,l]),state:o}};function Do(e){let{state:t,start:o}=me(H(C({},e),{action:"login"}));return{state:t,login:o}}function No(e){let{state:t,start:o}=me(H(C({},e),{action:"link"}));return{state:t,link:o}}function Vo(e){return me(e)}var De=()=>_expoapplication.applicationId;function Ne(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 Ve={get(e){return R.getItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return R.setItemAsync(e,t,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return R.deleteItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function qo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Bo(e){return e.status==="connecting"}function Go(e){return e.status==="disconnected"}function Yo(e){return e.status==="not-created"}function Xo(e){return e.status==="creating"}function Jo(e){return e.status==="error"}function $o(e){return e.status==="needs-recovery"}exports.a = C; exports.b = H; exports.c = y; exports.d = k; exports.e = br; exports.f = hr; exports.g = Do; exports.h = No; exports.i = Vo; exports.j = Ve; exports.k = ce; exports.l = Oo; exports.m = xo; exports.n = qo; exports.o = Ko; exports.p = Bo; exports.q = Go; exports.r = Yo; exports.s = Xo; exports.t = Jo; exports.u = $o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var $e=Object.defineProperty,Qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ve=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var fe=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,C=(e,t)=>{for(var o in t||(t={}))et.call(t,o)&&fe(e,o,t[o]);if(ve)for(var o of ve(t))tt.call(t,o)&&fe(e,o,t[o]);return e},H=(e,t)=>Qe(e,Ze(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});import*as ze from"expo-apple-authentication";import{applicationId as Vt}from"expo-application";import*as T from"expo-linking";import*as R from"expo-secure-store";import*as G from"expo-web-browser";import{useCallback as He,useContext as Ht,useEffect as zt}from"react";import{Platform as ue}from"react-native";import{PrivyClientError as M}from"@privy-io/js-sdk-core";import{digest as It}from"expo-crypto";import B,{useState as E,useMemo as Mt,createContext as Tt,useCallback as le,useRef as I,useEffect as jt}from"react";import{AppState as Te,View as Dt}from"react-native";import Nt from"@privy-io/js-sdk-core";var we={name:"@privy-io/expo",version:"0.21.4",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.24.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 ot from"react";import{useCallback as at,useEffect as he,useRef as nt}from"react";import{AppState as dt}from"react-native";import st from"react-native-webview";var Ee=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=nt(null);he(()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),he(()=>dt.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=at(l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?ot.createElement(st,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};import{useCallback as ne,useEffect as _e,useMemo as Ce}from"react";import{errorIndicatesRecoveryIsNeeded as lt,getUserEmbeddedSolanaWallet as ct,getUserEmbeddedWallet as ut,PrivyClientError as q}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as it}from"@privy-io/js-sdk-core";import{PrivyClientError as z}from"@privy-io/js-sdk-core";function J(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new z({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=it(u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:u})}})}function ge(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:r})}})}import{PrivyClientError as A}from"@privy-io/js-sdk-core";function $(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new A({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new A({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new A({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new A({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let b=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:b,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,b),b}catch(b){o({status:"needs-recovery",account:t}),n({status:"initial"});let w=new A({code:"embedded_wallet_recovery_error",error:b instanceof Error?b.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,w),w}})}function We(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new A({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new A({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var ke=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=Ce(()=>ct(t),[t]),r=Ce(()=>{var b;return(b=ut(t))!=null?b:void 0},[t]),s=ne(()=>y(void 0,null,function*(){return yield ge({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=ne(()=>y(void 0,null,function*(){if(!d)throw new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return We({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=ne(()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(b=>b.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let b=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:b._publicKey}),b}catch(b){throw lt(b)?(a({status:"needs-recovery"}),new q({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):b instanceof Error?(a({status:"error",error:b.message}),new q({code:"unknown_embedded_wallet_error",error:b.message})):(a({status:"error",error:"Error loading embedded wallet"}),new q({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _e(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_e(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};import{useCallback as K,useEffect as Oe,useMemo as ht}from"react";import{Platform as ie}from"react-native";import{throwIfInvalidRecoveryUpgradePath as Et}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as gt,getUserEmbeddedWallet as Wt,PrivyClientError as W}from"@privy-io/js-sdk-core";import*as Q from"expo-linking";import*as Ae from"expo-web-browser";import{Platform as vt}from"react-native";import{PrivyClientError as U}from"@privy-io/js-sdk-core";import mt from"react-fast-compare";var Re=e=>t=>e(o=>mt(o,t)?o:t);import{PrivyApiError as pt,PrivyClientError as yt}from"@privy-io/js-sdk-core";function k(e){return e instanceof Error||e instanceof pt||e instanceof yt?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var br=e=>new Promise(t=>setTimeout(t,e));import{useEffect as bt,useRef as St}from"react";import{AppState as de}from"react-native";function hr(){let e=St(de.currentState);bt(()=>de.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return de.currentState}return{appState:e,getCurrentAppState:t}}function Z(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Q.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new U({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Ae.openAuthSessionAsync(n);if(vt.OS==="android")return;if(i.type!=="success")throw new U({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Q.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new U({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield se({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new U({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new U({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(k(n)),n}})}function se(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new U({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}import{getUserEmbeddedWallet as ft,PrivyClientError as wt}from"@privy-io/js-sdk-core";function ee(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=ft(u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new wt({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function xe(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 Pe=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=ht(()=>Wt(t),[t]),s=K(p=>y(void 0,null,function*(){var h;if(r)throw new W({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&ie.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=i.current)==null?void 0:h.onError}),c({status:"creating-wallet"}),!S)return null}return yield J({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),u=K(p=>y(void 0,null,function*(){var S,h,_;if(o.status!=="connected")throw new W({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});Et({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let f,m;switch(p.recoveryMethod){case"user-passcode":m=H(C({},p),{wallet:r,password:p.password});break;case"google-drive":case"icloud":if(p.recoveryMethod==="icloud"&&ie.OS==="android"){let O=new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(h=(S=d.current)==null?void 0:S.onError)==null||h.call(S,O),O}if(f=yield Z({provider:p.recoveryMethod,client:e,onError:(_=d.current)==null?void 0:_.onError}),c({status:"upgrading-recovery"}),!f)return null;m={recoveryMethod:p.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new W({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ee({client:e,recoveryInput:m,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=K(p=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:p})}),[e,r,o.status]),b=K(p=>y(void 0,null,function*(){var h;if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&ie.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=l.current)==null?void 0:h.onError}),c({status:"recovering"}),!S)return null}return $({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),w=K(()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let p=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:p,account:r}),p}catch(p){throw gt(p)?(a({status:"needs-recovery",account:r}),new W({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:r}),new W({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new W({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return Oe(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&w().catch(()=>{})},[n,t,r]),Oe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:s,recover:b,setPassword:v,setRecovery:u,getProvider:w}};import{useEffect as _t,useState as Ct}from"react";import{PrivyClientError as Ue}from"@privy-io/js-sdk-core";var Fe=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=Ct({status:"initial"});return _t(()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new Ue({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new Ue({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};import*as F from"expo-linking";import{useCallback as kt,useEffect as Rt}from"react";import{Platform as At}from"react-native";var Le=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=F.useURL(),d=kt(r=>{var u,v;let s=k(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return Rt(()=>{function r(){return y(this,null,function*(){var b,w;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=F.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let p,f;if(t)p=yield e.auth.oauth.linkWithCode(v,u);else{let m=yield e.auth.oauth.loginWithCode(v,u);p=m.user,f=!!m.is_new_user}return(w=(b=c.current).onSuccess)==null||w.call(b,p,f),n({status:"done"}),yield F.openURL(l.split("?")[0])}catch(p){d(p)}})}At.OS==="android"&&o&&r()},[l,o])};import*as L from"expo-linking";import{useCallback as Ot,useEffect as xt,useMemo as Pt}from"react";import{Platform as Ut}from"react-native";import{getUserEmbeddedWallet as Ft}from"@privy-io/js-sdk-core";var Ie=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=L.useURL(),v=Pt(()=>Ft(t),[t]),b=Ot(w=>{var f,m,S,h;let p=k(w);n.status==="creating-wallet"?(m=(f=o.current).onError)==null||m.call(f,k(p)):(h=(S=a.current).onError)==null||h.call(S,k(p)),l({status:"initial"})},[n]);return xt(()=>{function w(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&b(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:p}=L.parse(u),{privy_oauth_state:f,privy_oauth_code:m}=p;if(!(!m||!f)){yield L.openURL(u.split("?")[0]);try{let S=yield se({oAuthCode:m,oAuthState:f,client:e});if(n.status==="creating-wallet")yield J({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield ee({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:S},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield $({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S})}catch(S){b(S)}}})}Ut.OS==="android"&&w()},[u,n.status,r,s])};import{useEffect as Lt}from"react";var Me=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{Lt(()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ce=Tt({}),te;function Oo(){return te?te.getAccessToken():Promise.resolve(null)}var xo=e=>{var Se;let[t,o]=E(Te.currentState==="active");jt(()=>{let P=Te.addEventListener("change",Je=>{o(Je==="active")});return()=>{P.remove()}},[]);let[a,c]=E(!1),[n,i]=E("loading"),[l,d]=E(!1),[r,s]=E(null),[u,v]=E({status:"disconnected",account:null}),[b,w]=E({status:"disconnected"}),[p,f]=E({status:"initial"}),[m,S]=E({status:"initial"}),[h,_]=E({status:"initial"}),[O,x]=E({status:"initial"}),[j,D]=E({status:"initial"}),[N,V]=E({status:"initial"}),[Y,qe]=E({status:"initial"}),pe=I({}),re=I({}),oe=I({}),ae=I({}),ye=I({}),be=I({}),X=le(P=>{if(P)return Re(s)(P);s(null),f({status:"initial"}),S({status:"initial"}),v({status:"disconnected",account:null})},[]),g=Mt(()=>{let P=e.storage||Ve;return te=new Nt({storage:Ne(P),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:De(),baseUrl:e.baseUrl,sdkVersion:`expo:${we.version}`,callbacks:{setUser:X,setIsReady:d},logLevel:e.logLevel,crypto:{digest:It}}),te},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,X]),Ke=le(()=>(X(null),g.auth.logout()),[X,g]),Be=le(()=>g.getAccessToken(),[g]);Me({client:g,isUserInitialized:a,setIsUserInitialized:c});let Ge=Pe({client:g,user:r,webViewState:n,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,setRecoveryFlowState:_,wallet:u,setWallet:v}),Ye=ke({client:g,user:r,webViewState:n,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setSolanaRecoveryFlowState:x,solanaWallet:b,setSolanaWallet:w});Le({client:g,isUserInitialized:a,user:r,oAuthState:m,setOAuthState:S,oAuthCallbacks:pe,recoveryFlowState:h}),Ie({client:g,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,recoveryFlowState:h,oAuthState:m,setRecoveryFlowState:_,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Xe}=Fe({client:g,user:r,isReady:a,customAuth:(Se=e.config)==null?void 0:Se.customAuth});return B.createElement(B.Fragment,null,B.createElement(ce.Provider,{value:{client:g,user:r,isReady:n!=="loading"&&a&&je(m)&&Xe,logout:Ke,getAccessToken:Be,wallet:C(C({},u),Ge),solanaWallet:C(C({},b),Ye),oAuthState:m,oAuthCallbacks:pe,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:O,setSolanaRecoveryFlowState:x,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setOAuthState:S,siweState:j,setSiweState:D,otpState:p,setOtpState:f,passkeyState:N,setPasskeyState:V,farcasterState:Y,setFarcasterState:qe}},e.children),B.createElement(Dt,{style:{width:0,height:0,overflow:"hidden"}},B.createElement(Ee,{logLevel:e.logLevel,client:g,isClientReady:l,setWebViewState:i,webViewState:n})))};var je=e=>e.status!=="loading",me=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=Ht(ce),i=e.action?e.action==="login":!t;zt(()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=He(r=>{var u;let s=k(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:He(function(v){return y(this,arguments,function*({provider:s,redirectUri:u}){var b,w,p;a({status:"loading"});try{if(t&&e.action==="login")throw new M({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 M({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:f}=yield n.auth.oauth.generateURL(s,T.createURL(u||"/")),m,S;if(ue.OS==="ios"&&s==="apple"){let N=(b=new URL(f).searchParams.get("state"))!=null?b:"",V=yield ze.signInAsync({state:N});if(!V.authorizationCode)throw new M({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");m=Y.user,S=Y.is_new_user}else m=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,S),a({status:"done"}),m!=null?m:void 0}let h=ue.OS==="android"?f.replace("x.com","twitter.com"):f,_=yield G.openAuthSessionAsync(h);if(ue.OS==="android")return;if(_.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(_.type)?new M({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new M({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=T.parse(_.url),{privy_oauth_state:x,privy_oauth_code:j}=O;if(!j||!x)throw new M({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,x,s);m=D.user,S=D.is_new_user}else m=yield n.auth.oauth.linkWithCode(j,x,s);return(p=e==null?void 0:e.onSuccess)==null||p.call(e,m,S),yield T.openURL(_.url.split("?")[0]),a({status:"done"}),m!=null?m:void 0}catch(f){l(f)}})},[t,n,a,l]),state:o}};function Do(e){let{state:t,start:o}=me(H(C({},e),{action:"login"}));return{state:t,login:o}}function No(e){let{state:t,start:o}=me(H(C({},e),{action:"link"}));return{state:t,link:o}}function Vo(e){return me(e)}var De=()=>Vt;function Ne(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 Ve={get(e){return R.getItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return R.setItemAsync(e,t,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return R.deleteItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function qo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Bo(e){return e.status==="connecting"}function Go(e){return e.status==="disconnected"}function Yo(e){return e.status==="not-created"}function Xo(e){return e.status==="creating"}function Jo(e){return e.status==="error"}function $o(e){return e.status==="needs-recovery"}export{C as a,H as b,y as c,k as d,br as e,hr as f,Do as g,No as h,Vo as i,Ve as j,ce as k,Oo as l,xo as m,qo as n,Ko as o,Bo as p,Go as q,Yo as r,Xo as s,Jo as t,$o as u};
|
|
1
|
+
var $e=Object.defineProperty,Qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ve=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var fe=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,C=(e,t)=>{for(var o in t||(t={}))et.call(t,o)&&fe(e,o,t[o]);if(ve)for(var o of ve(t))tt.call(t,o)&&fe(e,o,t[o]);return e},H=(e,t)=>Qe(e,Ze(t));var y=(e,t,o)=>new Promise((a,c)=>{var n=d=>{try{l(o.next(d))}catch(r){c(r)}},i=d=>{try{l(o.throw(d))}catch(r){c(r)}},l=d=>d.done?a(d.value):Promise.resolve(d.value).then(n,i);l((o=o.apply(e,t)).next())});import*as ze from"expo-apple-authentication";import{applicationId as Vt}from"expo-application";import*as T from"expo-linking";import*as R from"expo-secure-store";import*as G from"expo-web-browser";import{useCallback as He,useContext as Ht,useEffect as zt}from"react";import{Platform as ue}from"react-native";import{PrivyClientError as M}from"@privy-io/js-sdk-core";import{digest as It}from"expo-crypto";import B,{useState as E,useMemo as Mt,createContext as Tt,useCallback as le,useRef as I,useEffect as jt}from"react";import{AppState as Te,View as Dt}from"react-native";import Nt from"@privy-io/js-sdk-core";var we={name:"@privy-io/expo",version:"0.21.5",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-apple-authentication":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.24.2","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 ot from"react";import{useCallback as at,useEffect as he,useRef as nt}from"react";import{AppState as dt}from"react-native";import st from"react-native-webview";var Ee=({client:e,isClientReady:t,setWebViewState:o,webViewState:a,logLevel:c})=>{let n=nt(null);he(()=>{n.current&&a==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,a==="loaded"]),he(()=>dt.addEventListener("change",d=>y(void 0,null,function*(){n.current&&d==="active"&&((yield e.embeddedWallet.ping(150))||(n.current.reload(),o("reloading")))})).remove,[]);let i=at(l=>y(void 0,null,function*(){let{data:d}=l.nativeEvent,r=e.embeddedWallet.getMessageHandler();r==null||r(JSON.parse(d))}),[e]);return t?ot.createElement(st,{style:{flex:1},ref:n,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:c==="DEBUG",onLoad:()=>o("loaded"),onError:console.error,onMessage:i}):null};import{useCallback as ne,useEffect as _e,useMemo as Ce}from"react";import{errorIndicatesRecoveryIsNeeded as lt,getUserEmbeddedSolanaWallet as ct,getUserEmbeddedWallet as ut,PrivyClientError as q}from"@privy-io/js-sdk-core";import{getUserEmbeddedWallet as it}from"@privy-io/js-sdk-core";import{PrivyClientError as z}from"@privy-io/js-sdk-core";function J(l){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:c,password:n,recoveryToken:i}){var d,r;switch(a){case"user-passcode":if(!n)throw new z({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!i)throw new z({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}t({status:"creating",account:null});try{let{provider:s,user:u}=yield e.embeddedWallet.create(n,a,i),v=it(u);return(r=(d=o.current)==null?void 0:d.onSuccess)==null||r.call(d,s),t({status:"connected",provider:s,account:v}),c({status:"initial"}),s}catch(s){let u=s instanceof Error?s.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),c({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:u})}})}function ge(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:o,setSolanaRecoveryFlowState:a,ethereumAccount:c}){var i,l;t({status:"creating"});try{let d=yield e.embeddedWallet.createSolana({ethereumAccount:c});return(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,d),t({status:"connected",publicKey:d._publicKey}),a({status:"initial"}),d}catch(d){let r=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:r}),a({status:"initial"}),new z({code:"embedded_wallet_creation_error",error:r})}})}import{PrivyClientError as A}from"@privy-io/js-sdk-core";function $(d){return y(this,arguments,function*({client:e,account:t,setWallet:o,recoverWalletCallbacks:a,recoveryMethod:c,setRecoveryFlowState:n,password:i,recoveryToken:l}){var r,s,u,v;if(!t)throw new A({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(c){case"user-passcode":if(!i)throw new A({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!l)throw new A({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!l)throw new A({code:"embedded_wallet_recovery_error",error:"Recovery token is required for icloud recovery method"});break}o({status:"connecting",account:t});try{let b=yield e.embeddedWallet.getProvider(t,i,l);return o({status:"connected",provider:b,account:t}),n({status:"initial"}),(s=(r=a.current)==null?void 0:r.onSuccess)==null||s.call(r,b),b}catch(b){o({status:"needs-recovery",account:t}),n({status:"initial"});let w=new A({code:"embedded_wallet_recovery_error",error:b instanceof Error?b.message:"Error recovering embedded wallet"});throw(v=(u=a.current)==null?void 0:u.onError)==null||v.call(u,w),w}})}function We(n){return y(this,arguments,function*({client:e,solanaAccount:t,setSolanaWallet:o,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:c}){var i,l,d,r;if(!t)throw new A({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o({status:"connecting"});try{let s=yield e.embeddedWallet.getSolanaProvider(t);return o({status:"connected",publicKey:s._publicKey}),c({status:"initial"}),(l=(i=a.current)==null?void 0:i.onSuccess)==null||l.call(i,s),s}catch(s){o({status:"needs-recovery"}),c({status:"initial"});let u=new A({code:"embedded_wallet_recovery_error",error:s instanceof Error?s.message:"Error recovering embedded wallet"});throw(r=(d=a.current)==null?void 0:d.onError)==null||r.call(d,u),u}})}var ke=({client:e,user:t,solanaWallet:o,setSolanaWallet:a,setSolanaRecoveryFlowState:c,webViewState:n,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:l})=>{let d=Ce(()=>ct(t),[t]),r=Ce(()=>{var b;return(b=ut(t))!=null?b:void 0},[t]),s=ne(()=>y(void 0,null,function*(){return yield ge({client:e,setSolanaWallet:a,createSolanaWalletCallbacks:i,setSolanaRecoveryFlowState:c,ethereumAccount:r})}),[e,i,r]),u=ne(()=>y(void 0,null,function*(){if(!d)throw new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});return We({client:e,solanaAccount:d,setSolanaWallet:a,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:c})}),[e,d]),v=ne(()=>y(void 0,null,function*(){if(!d)throw a({status:"not-created"}),new q({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(b=>b.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let b=yield e.embeddedWallet.getSolanaProvider(d);return a({status:"connected",publicKey:b._publicKey}),b}catch(b){throw lt(b)?(a({status:"needs-recovery"}),new q({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):b instanceof Error?(a({status:"error",error:b.message}),new q({code:"unknown_embedded_wallet_error",error:b.message})):(a({status:"error",error:"Error loading embedded wallet"}),new q({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _e(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_e(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&v()},[o.status]),{create:s,recover:u,getProvider:v}};import{useCallback as K,useEffect as Oe,useMemo as ht}from"react";import{Platform as ie}from"react-native";import{throwIfInvalidRecoveryUpgradePath as Et}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as gt,getUserEmbeddedWallet as Wt,PrivyClientError as W}from"@privy-io/js-sdk-core";import*as Q from"expo-linking";import*as Ae from"expo-web-browser";import{Platform as vt}from"react-native";import{PrivyClientError as U}from"@privy-io/js-sdk-core";import mt from"react-fast-compare";var Re=e=>t=>e(o=>mt(o,t)?o:t);import{PrivyApiError as pt,PrivyClientError as yt}from"@privy-io/js-sdk-core";function k(e){return e instanceof Error||e instanceof pt||e instanceof yt?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var br=e=>new Promise(t=>setTimeout(t,e));import{useEffect as bt,useRef as St}from"react";import{AppState as de}from"react-native";function hr(){let e=St(de.currentState);bt(()=>de.addEventListener("change",a=>{e.current=a}).remove,[]);function t(){return de.currentState}return{appState:e,getCurrentAppState:t}}function Z(c){return y(this,arguments,function*({provider:e,redirectUri:t,client:o,onError:a}){try{let n;switch(e){case"google-drive":{let{url:r}=yield o.recovery.auth.generateURL(Q.createURL(t||"/"));n=r;break}case"icloud":{let{url:r}=yield o.recovery.icloudAuth.init("expo-ios");n=r;break}default:throw new U({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Ae.openAuthSessionAsync(n);if(vt.OS==="android")return;if(i.type!=="success")throw new U({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:l}=Q.parse(i.url),d;switch(e){case"google-drive":{let{privy_oauth_state:r,privy_oauth_code:s}=l;if(!s||!r)throw new U({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield se({oAuthCode:s,oAuthState:r,client:o});break}case"icloud":{let{ckWebAuthToken:r}=l;if(!r)throw new U({error:"Recovery iCloud token not found in query params",code:"embedded_wallet_recovery_error"});d=r;break}default:throw new U({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(n){throw a==null||a(k(n)),n}})}function se(a){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:o}){let{access_token:c}=yield o.recovery.auth.authorize(e,t);if(!c)throw new U({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return c})}import{getUserEmbeddedWallet as ft,PrivyClientError as wt}from"@privy-io/js-sdk-core";function ee(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:c}){var i,l,d,r;try{let{provider:s,user:u}=yield e.embeddedWallet.setRecovery(t),v=ft(u);return c({status:"connected",provider:s,account:v}),(l=(i=o.current)==null?void 0:i.onSuccess)==null||l.call(i,s),a({status:"initial"}),s}catch(s){let u=new wt({code:"embedded_wallet_set_recovery_error",error:s instanceof Error?s.message:"Error setting password on embedded wallet"});throw(r=(d=o.current)==null?void 0:d.onError)==null||r.call(d,u),a({status:"initial"}),u}})}function xe(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 Pe=({client:e,user:t,wallet:o,setWallet:a,setRecoveryFlowState:c,webViewState:n,createWalletCallbacks:i,recoverWalletCallbacks:l,setWalletRecoveryCallbacks:d})=>{let r=ht(()=>Wt(t),[t]),s=K(p=>y(void 0,null,function*(){var h;if(r)throw new W({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&ie.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=i.current)==null?void 0:h.onError}),c({status:"creating-wallet"}),!S)return null}return yield J({client:e,setWallet:a,createWalletCallbacks:i,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),u=K(p=>y(void 0,null,function*(){var S,h,_;if(o.status!=="connected")throw new W({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});Et({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let f,m;switch(p.recoveryMethod){case"user-passcode":m=H(C({},p),{wallet:r,password:p.password});break;case"google-drive":case"icloud":if(p.recoveryMethod==="icloud"&&ie.OS==="android"){let O=new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});throw(h=(S=d.current)==null?void 0:S.onError)==null||h.call(S,O),O}if(f=yield Z({provider:p.recoveryMethod,client:e,onError:(_=d.current)==null?void 0:_.onError}),c({status:"upgrading-recovery"}),!f)return null;m={recoveryMethod:p.recoveryMethod,wallet:r,recoveryAccessToken:f};break;default:throw new W({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ee({client:e,recoveryInput:m,setWalletRecoveryCallbacks:d,setRecoveryFlowState:c,setWallet:a})}),[e,r,o.status]),v=K(p=>y(void 0,null,function*(){return u({recoveryMethod:"user-passcode",password:p})}),[e,r,o.status]),b=K(p=>y(void 0,null,function*(){var h;if(!r)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:f,recoveryMethod:m}=xe(p),S;if(["google-drive","icloud"].includes(m)){if(m==="icloud"&&ie.OS==="android")throw new W({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});if(S=yield Z({provider:m,client:e,onError:(h=l.current)==null?void 0:h.onError}),c({status:"recovering"}),!S)return null}return $({client:e,account:r,setWallet:a,recoverWalletCallbacks:l,recoveryMethod:m,setRecoveryFlowState:c,password:f,recoveryToken:S})}),[e,r]),w=K(()=>y(void 0,null,function*(){if(!r)throw a({status:"not-created",account:null}),new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:r}:{status:"connecting",account:r});try{let p=yield e.embeddedWallet.getProvider(r);return a({status:"connected",provider:p,account:r}),p}catch(p){throw gt(p)?(a({status:"needs-recovery",account:r}),new W({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:r}),new W({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:r}),new W({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,r]);return Oe(()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});n==="loaded"&&w().catch(()=>{})},[n,t,r]),Oe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:s,recover:b,setPassword:v,setRecovery:u,getProvider:w}};import{useEffect as _t,useState as Ct}from"react";import{PrivyClientError as Ue}from"@privy-io/js-sdk-core";var Fe=({client:e,user:t,isReady:o,customAuth:a})=>{let[c,n]=Ct({status:"initial"});return _t(()=>{(()=>y(void 0,null,function*(){if(!(a!=null&&a.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:d}=a;if(!(!o||d))try{let r=yield l();if(!r&&t){yield e.auth.logout(),n({status:"done"});return}if(!r){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(r))){yield e.auth.logout(),n({status:"error",error:new Ue({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(r){if(console.log("Error syncing with custom auth provider",r),n({status:"error",error:r}),t)throw yield e.auth.logout(),new Ue({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,o,a==null?void 0:a.enabled,a==null?void 0:a.getCustomAccessToken,a==null?void 0:a.isLoading]),{customAuthState:c,customAuthStateIsSettled:c.status!=="loading"&&c.status!=="initial"}};import*as F from"expo-linking";import{useCallback as kt,useEffect as Rt}from"react";import{Platform as At}from"react-native";var Le=({client:e,user:t,isUserInitialized:o,oAuthState:a,oAuthCallbacks:c,setOAuthState:n,recoveryFlowState:i})=>{let l=F.useURL(),d=kt(r=>{var u,v;let s=k(r);n({status:"error",error:s}),(v=(u=c.current).onError)==null||v.call(u,s)},[n]);return Rt(()=>{function r(){return y(this,null,function*(){var b,w;if(!l||a.status!=="loading"||i.status!=="initial")return;let{queryParams:s}=F.parse(l),{privy_oauth_state:u,privy_oauth_code:v}=s;if(!v||!u){n({status:"done"});return}try{let p,f;if(t)p=yield e.auth.oauth.linkWithCode(v,u);else{let m=yield e.auth.oauth.loginWithCode(v,u);p=m.user,f=!!m.is_new_user}return(w=(b=c.current).onSuccess)==null||w.call(b,p,f),n({status:"done"}),yield F.openURL(l.split("?")[0])}catch(p){d(p)}})}At.OS==="android"&&o&&r()},[l,o])};import*as L from"expo-linking";import{useCallback as Ot,useEffect as xt,useMemo as Pt}from"react";import{Platform as Ut}from"react-native";import{getUserEmbeddedWallet as Ft}from"@privy-io/js-sdk-core";var Ie=({client:e,user:t,createWalletCallbacks:o,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c,recoveryFlowState:n,oAuthState:i,setRecoveryFlowState:l,setWallet:d,appStateVisible:r,webViewLoaded:s})=>{let u=L.useURL(),v=Pt(()=>Ft(t),[t]),b=Ot(w=>{var f,m,S,h;let p=k(w);n.status==="creating-wallet"?(m=(f=o.current).onError)==null||m.call(f,k(p)):(h=(S=a.current).onError)==null||h.call(S,k(p)),l({status:"initial"})},[n]);return xt(()=>{function w(){return y(this,null,function*(){if(!u&&n.status!=="initial"&&r&&b(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||i.status!=="initial"||!r||!s)return;let{queryParams:p}=L.parse(u),{privy_oauth_state:f,privy_oauth_code:m}=p;if(!(!m||!f)){yield L.openURL(u.split("?")[0]);try{let S=yield se({oAuthCode:m,oAuthState:f,client:e});if(n.status==="creating-wallet")yield J({client:e,setWallet:d,createWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S});else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield ee({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:S},setWalletRecoveryCallbacks:c,setRecoveryFlowState:l,setWallet:d})}else yield $({client:e,account:v,setWallet:d,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:S})}catch(S){b(S)}}})}Ut.OS==="android"&&w()},[u,n.status,r,s])};import{useEffect as Lt}from"react";var Me=({client:e,isUserInitialized:t,setIsUserInitialized:o})=>{Lt(()=>{t||(()=>y(void 0,null,function*(){try{yield e.user.get()}catch(c){}finally{o(!0)}}))()},[t])};var ce=Tt({}),te;function Oo(){return te?te.getAccessToken():Promise.resolve(null)}var xo=e=>{var Se;let[t,o]=E(Te.currentState==="active");jt(()=>{let P=Te.addEventListener("change",Je=>{o(Je==="active")});return()=>{P.remove()}},[]);let[a,c]=E(!1),[n,i]=E("loading"),[l,d]=E(!1),[r,s]=E(null),[u,v]=E({status:"disconnected",account:null}),[b,w]=E({status:"disconnected"}),[p,f]=E({status:"initial"}),[m,S]=E({status:"initial"}),[h,_]=E({status:"initial"}),[O,x]=E({status:"initial"}),[j,D]=E({status:"initial"}),[N,V]=E({status:"initial"}),[Y,qe]=E({status:"initial"}),pe=I({}),re=I({}),oe=I({}),ae=I({}),ye=I({}),be=I({}),X=le(P=>{if(P)return Re(s)(P);s(null),f({status:"initial"}),S({status:"initial"}),v({status:"disconnected",account:null})},[]),g=Mt(()=>{let P=e.storage||Ve;return te=new Nt({storage:Ne(P),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:De(),baseUrl:e.baseUrl,sdkVersion:`expo:${we.version}`,callbacks:{setUser:X,setIsReady:d},logLevel:e.logLevel,crypto:{digest:It}}),te},[e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,X]),Ke=le(()=>(X(null),g.auth.logout()),[X,g]),Be=le(()=>g.getAccessToken(),[g]);Me({client:g,isUserInitialized:a,setIsUserInitialized:c});let Ge=Pe({client:g,user:r,webViewState:n,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,setRecoveryFlowState:_,wallet:u,setWallet:v}),Ye=ke({client:g,user:r,webViewState:n,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setSolanaRecoveryFlowState:x,solanaWallet:b,setSolanaWallet:w});Le({client:g,isUserInitialized:a,user:r,oAuthState:m,setOAuthState:S,oAuthCallbacks:pe,recoveryFlowState:h}),Ie({client:g,user:r,webViewLoaded:n==="loaded",createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,recoveryFlowState:h,oAuthState:m,setRecoveryFlowState:_,setWallet:v,appStateVisible:t});let{customAuthStateIsSettled:Xe}=Fe({client:g,user:r,isReady:a,customAuth:(Se=e.config)==null?void 0:Se.customAuth});return B.createElement(B.Fragment,null,B.createElement(ce.Provider,{value:{client:g,user:r,isReady:n!=="loading"&&a&&je(m)&&Xe,logout:Ke,getAccessToken:Be,wallet:C(C({},u),Ge),solanaWallet:C(C({},b),Ye),oAuthState:m,oAuthCallbacks:pe,recoveryFlowState:h,setRecoveryFlowState:_,solanaRecoveryFlowState:O,setSolanaRecoveryFlowState:x,createWalletCallbacks:re,recoverWalletCallbacks:oe,setWalletRecoveryCallbacks:ae,createSolanaWalletCallbacks:ye,recoverSolanaWalletCallbacks:be,setOAuthState:S,siweState:j,setSiweState:D,otpState:p,setOtpState:f,passkeyState:N,setPasskeyState:V,farcasterState:Y,setFarcasterState:qe}},e.children),B.createElement(Dt,{style:{width:0,height:0,overflow:"hidden"}},B.createElement(Ee,{logLevel:e.logLevel,client:g,isClientReady:l,setWebViewState:i,webViewState:n})))};var je=e=>e.status!=="loading",me=(e={})=>{let{user:t,oAuthState:o,setOAuthState:a,oAuthCallbacks:c,client:n}=Ht(ce),i=e.action?e.action==="login":!t;zt(()=>{c.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let l=He(r=>{var u;let s=k(r);return a({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError]);return{start:He(function(v){return y(this,arguments,function*({provider:s,redirectUri:u}){var b,w,p;a({status:"loading"});try{if(t&&e.action==="login")throw new M({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 M({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:f}=yield n.auth.oauth.generateURL(s,T.createURL(u||"/")),m,S;if(ue.OS==="ios"&&s==="apple"){let N=(b=new URL(f).searchParams.get("state"))!=null?b:"",V=yield ze.signInAsync({state:N});if(!V.authorizationCode)throw new M({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(V.authorizationCode,N,s,"raw");m=Y.user,S=Y.is_new_user}else m=yield n.auth.oauth.linkWithCode(V.authorizationCode,N,s,"raw");return(w=e==null?void 0:e.onSuccess)==null||w.call(e,m,S),a({status:"done"}),m!=null?m:void 0}let h=ue.OS==="android"?f.replace("x.com","twitter.com"):f,_=yield G.openAuthSessionAsync(h);if(ue.OS==="android")return;if(_.type!=="success")throw[G.WebBrowserResultType.CANCEL,G.WebBrowserResultType.DISMISS].includes(_.type)?new M({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new M({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:O}=T.parse(_.url),{privy_oauth_state:x,privy_oauth_code:j}=O;if(!j||!x)throw new M({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let D=yield n.auth.oauth.loginWithCode(j,x,s);m=D.user,S=D.is_new_user}else m=yield n.auth.oauth.linkWithCode(j,x,s);return(p=e==null?void 0:e.onSuccess)==null||p.call(e,m,S),yield T.openURL(_.url.split("?")[0]),a({status:"done"}),m!=null?m:void 0}catch(f){l(f)}})},[t,n,a,l]),state:o}};function Do(e){let{state:t,start:o}=me(H(C({},e),{action:"login"}));return{state:t,login:o}}function No(e){let{state:t,start:o}=me(H(C({},e),{action:"link"}));return{state:t,link:o}}function Vo(e){return me(e)}var De=()=>Vt;function Ne(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 Ve={get(e){return R.getItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return R.setItemAsync(e,t,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return R.deleteItemAsync(e,{keychainAccessible:R.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};function qo(e){return e.status==="connected"}function Ko(e){return e.status==="reconnecting"}function Bo(e){return e.status==="connecting"}function Go(e){return e.status==="disconnected"}function Yo(e){return e.status==="not-created"}function Xo(e){return e.status==="creating"}function Jo(e){return e.status==="error"}function $o(e){return e.status==="needs-recovery"}export{C as a,H as b,y as c,k as d,br as e,hr as f,Do as g,No as h,Vo as i,Ve as j,ce as k,Oo as l,xo as m,qo as n,Ko as o,Bo as p,Go as q,Yo as r,Xo as s,Jo as t,$o as u};
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as O,c as S,d as f,e as W,f as R,g as Y,h as Z,i as $,j as p,k as h,l as xe,m as Oe,n as Re,o as Pe,p as Fe,q as Me,r as He,s as Ae,t as Ue,u as Te}from"./chunk-PC7W3FI5.js";export*from"@privy-io/js-sdk-core";import{useCallback as M,useContext as ee}from"react";import{PrivyClientError as re}from"@privy-io/js-sdk-core";var je=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=ee(h),m=M(g=>{var i;let u=f(g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=M(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),a=M(i=>S(void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new re({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:a,state:l}};import{useCallback as H,useContext as te}from"react";import{PrivyClientError as ne}from"@privy-io/js-sdk-core";var Qe=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=te(h),m=H(g=>{var i;let u=f(g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=H(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(i=>S(void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new ne({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});o({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};import{useCallback as A,useContext as ie,useState as ae}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";var rr=e=>{let[s,d]=ae(""),{user:o,client:l,otpState:m,setOtpState:t}=ie(h),a=A(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=A(c=>S(void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=A(r=>S(void 0,[r],function*({code:i,email:c}){var n;try{if(!o)throw new q({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new q({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as U,useContext as oe,useState as ce}from"react";import{PrivyClientError as B}from"@privy-io/js-sdk-core";var lr=e=>{let[s,d]=ce(""),{user:o,client:l,otpState:m,setOtpState:t}=oe(h),a=U(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=U(c=>S(void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=U(r=>S(void 0,[r],function*({code:i,email:c}){var n;try{if(o)throw new B({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new B({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import{useCallback as T,useContext as le,useState as se}from"react";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var Sr=e=>{let[s,d]=se(""),{user:o,client:l,otpState:m,setOtpState:t}=le(h),a=T(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=T(c=>S(void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=T(r=>S(void 0,[r],function*({code:i,phone:c}){var n;try{if(!o)throw new J({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new J({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as G,useContext as ue,useState as de}from"react";import{PrivyClientError as K}from"@privy-io/js-sdk-core";var Wr=e=>{let[s,d]=de(""),{user:o,client:l,otpState:m,setOtpState:t}=ue(h),a=G(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=G(c=>S(void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=G(r=>S(void 0,[r],function*({code:i,phone:c}){var n;try{if(o)throw new K({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new K({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import*as P from"expo-linking";import{useCallback as I,useContext as me,useEffect as ge,useRef as he}from"react";import{PrivyClientError as v}from"@privy-io/js-sdk-core";var Rr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:o,user:l,farcasterState:m,setFarcasterState:t}=me(h),a=he(!1),g=I(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=I(()=>{a.current=!0},[]),i=I((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,!l)throw new v({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new v({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new v({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new v({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.link(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield W(n.pollIntervalMs)}throw new v({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,e==null?void 0:e.onSuccess,g,t,l]);return ge(()=>()=>{u()},[]),{linkWithFarcaster:i,state:m,cancel:u}};import{useCallback as Q,useContext as Se}from"react";var Ur=e=>{let{client:s}=Se(h),d=Q(l=>{var t;let m=f(l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:Q(m=>S(void 0,[m],function*({fid:l}){var t;try{let a=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,a),a}catch(a){throw d(a)}}),[s,e==null?void 0:e.onSuccess,d])}};import*as F from"expo-linking";import{useCallback as j,useContext as fe,useEffect as we,useRef as ke}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var zr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:o,user:l,farcasterState:m,setFarcasterState:t}=fe(h),a=ke(!1),g=j(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=j(()=>{a.current=!0},[]),i=j((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,l)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new x({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.authenticate(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield W(n.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,g,e==null?void 0:e.onSuccess,t,l,s]);return we(()=>()=>{u()},[]),{loginWithFarcaster:i,state:m,cancel:u}};import{useEffect as Ee}from"react";import{useContext as ye,useEffect as z}from"react";var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:l}=ye(h),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:a,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:i}=e;return z(()=>{d.current={onSuccess:m,onError:t}},[m,t]),z(()=>{o.current={onSuccess:g,onError:a}},[g,a]),z(()=>{l.current={onSuccess:u,onError:i}},[g,a]),s};var Yr=({onStateChange:e})=>{let s=V();return Ee(()=>{e(s)},[s])};import{useContext as _e,useEffect as X}from"react";var We=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:o}=_e(h),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:a}=e;return X(()=>{d.current={onSuccess:l,onError:m}},[l,m]),X(()=>{o.current={onSuccess:a,onError:t}},[a,t]),s};import{useContext as Ce}from"react";var Le=()=>{let{client:e}=Ce(h);return e};import{useContext as be}from"react";var ve=()=>{let{user:e,isReady:s,logout:d,getAccessToken:o}=be(h);return{user:e,isReady:s,logout:d,getAccessToken:o}};export{h as PrivyContext,Oe as PrivyProvider,p as SecureStorageAdapter,xe as getAccessToken,Ue as hasError,Re as isConnected,Fe as isConnecting,Ae as isCreating,Me as isDisconnected,He as isNotCreated,Pe as isReconnecting,Te as needsRecovery,We as useEmbeddedSolanaWallet,V as useEmbeddedWallet,Yr as useEmbeddedWalletStateChange,rr as useLinkEmail,Sr as useLinkSMS,Rr as useLinkWithFarcaster,Z as useLinkWithOAuth,je as useLinkWithSiwe,lr as useLoginWithEmail,zr as useLoginWithFarcaster,Y as useLoginWithOAuth,Wr as useLoginWithSMS,Qe as useLoginWithSiwe,$ as useOAuthFlow,ve as usePrivy,Le as usePrivyClient,Ur as useUnlinkFarcaster};
|
|
1
|
+
import{a as O,c as S,d as f,e as W,f as R,g as Y,h as Z,i as $,j as p,k as h,l as xe,m as Oe,n as Re,o as Pe,p as Fe,q as Me,r as He,s as Ae,t as Ue,u as Te}from"./chunk-QYCPG73N.js";export*from"@privy-io/js-sdk-core";import{useCallback as M,useContext as ee}from"react";import{PrivyClientError as re}from"@privy-io/js-sdk-core";var je=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=ee(h),m=M(g=>{var i;let u=f(g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=M(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),a=M(i=>S(void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new re({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:a,state:l}};import{useCallback as H,useContext as te}from"react";import{PrivyClientError as ne}from"@privy-io/js-sdk-core";var Qe=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=te(h),m=H(g=>{var i;let u=f(g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=H(c=>S(void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(i=>S(void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new ne({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});o({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};import{useCallback as A,useContext as ie,useState as ae}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";var rr=e=>{let[s,d]=ae(""),{user:o,client:l,otpState:m,setOtpState:t}=ie(h),a=A(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=A(c=>S(void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=A(r=>S(void 0,[r],function*({code:i,email:c}){var n;try{if(!o)throw new q({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let k=c||s;if(!k)throw new q({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as U,useContext as oe,useState as ce}from"react";import{PrivyClientError as B}from"@privy-io/js-sdk-core";var lr=e=>{let[s,d]=ce(""),{user:o,client:l,otpState:m,setOtpState:t}=oe(h),a=U(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=U(c=>S(void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=U(r=>S(void 0,[r],function*({code:i,email:c}){var n;try{if(o)throw new B({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=c||s;if(!k)throw new B({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import{useCallback as T,useContext as le,useState as se}from"react";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var Sr=e=>{let[s,d]=se(""),{user:o,client:l,otpState:m,setOtpState:t}=le(h),a=T(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=T(c=>S(void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=T(r=>S(void 0,[r],function*({code:i,phone:c}){var n;try{if(!o)throw new J({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(c||s))throw new J({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};import{useCallback as G,useContext as ue,useState as de}from"react";import{PrivyClientError as K}from"@privy-io/js-sdk-core";var Wr=e=>{let[s,d]=de(""),{user:o,client:l,otpState:m,setOtpState:t}=ue(h),a=G(i=>{var r;let c=f(i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=G(c=>S(void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=G(r=>S(void 0,[r],function*({code:i,phone:c}){var n;try{if(o)throw new K({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(c||s))throw new K({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};import*as P from"expo-linking";import{useCallback as I,useContext as me,useEffect as ge,useRef as he}from"react";import{PrivyClientError as v}from"@privy-io/js-sdk-core";var Rr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:o,user:l,farcasterState:m,setFarcasterState:t}=me(h),a=he(!1),g=I(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=I(()=>{a.current=!0},[]),i=I((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,!l)throw new v({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new v({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new v({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new v({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.link(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield W(n.pollIntervalMs)}throw new v({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,e==null?void 0:e.onSuccess,g,t,l]);return ge(()=>()=>{u()},[]),{linkWithFarcaster:i,state:m,cancel:u}};import{useCallback as Q,useContext as Se}from"react";var Ur=e=>{let{client:s}=Se(h),d=Q(l=>{var t;let m=f(l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:Q(m=>S(void 0,[m],function*({fid:l}){var t;try{let a=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,a),a}catch(a){throw d(a)}}),[s,e==null?void 0:e.onSuccess,d])}};import*as F from"expo-linking";import{useCallback as j,useContext as fe,useEffect as we,useRef as ke}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var zr=e=>{let{appState:s,getCurrentAppState:d}=R(),{client:o,user:l,farcasterState:m,setFarcasterState:t}=fe(h),a=ke(!1),g=j(c=>{var n;let r=f(c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=j(()=>{a.current=!0},[]),i=j((k,...w)=>S(void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,l)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new x({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield W(n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.authenticate(O({channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield W(n.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,g,e==null?void 0:e.onSuccess,t,l,s]);return we(()=>()=>{u()},[]),{loginWithFarcaster:i,state:m,cancel:u}};import{useEffect as Ee}from"react";import{useContext as ye,useEffect as z}from"react";var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:l}=ye(h),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:a,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:i}=e;return z(()=>{d.current={onSuccess:m,onError:t}},[m,t]),z(()=>{o.current={onSuccess:g,onError:a}},[g,a]),z(()=>{l.current={onSuccess:u,onError:i}},[g,a]),s};var Yr=({onStateChange:e})=>{let s=V();return Ee(()=>{e(s)},[s])};import{useContext as _e,useEffect as X}from"react";var We=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:o}=_e(h),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:a}=e;return X(()=>{d.current={onSuccess:l,onError:m}},[l,m]),X(()=>{o.current={onSuccess:a,onError:t}},[a,t]),s};import{useContext as Ce}from"react";var Le=()=>{let{client:e}=Ce(h);return e};import{useContext as be}from"react";var ve=()=>{let{user:e,isReady:s,logout:d,getAccessToken:o}=be(h);return{user:e,isReady:s,logout:d,getAccessToken:o}};export{h as PrivyContext,Oe as PrivyProvider,p as SecureStorageAdapter,xe as getAccessToken,Ue as hasError,Re as isConnected,Fe as isConnecting,Ae as isCreating,Me as isDisconnected,He as isNotCreated,Pe as isReconnecting,Te as needsRecovery,We as useEmbeddedSolanaWallet,V as useEmbeddedWallet,Yr as useEmbeddedWalletStateChange,rr as useLinkEmail,Sr as useLinkSMS,Rr as useLinkWithFarcaster,Z as useLinkWithOAuth,je as useLinkWithSiwe,lr as useLoginWithEmail,zr as useLoginWithFarcaster,Y as useLoginWithOAuth,Wr as useLoginWithSMS,Qe as useLoginWithSiwe,$ as useOAuthFlow,ve as usePrivy,Le as usePrivyClient,Ur as useUnlinkFarcaster};
|
package/dist/esm/passkey.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as m,b as k,c,d as g,k as f,n as M,o as I,p as T,q as U,r as V,s as D,t as Y,u as j}from"./chunk-
|
|
1
|
+
import{a as m,b as k,c,d as g,k as f,n as M,o as I,p as T,q as U,r as V,s as D,t as Y,u as j}from"./chunk-QYCPG73N.js";import{useCallback as E,useContext as W}from"react";import{PrivyClientError as q}from"@privy-io/js-sdk-core";import{PrivyClientError as J}from"@privy-io/js-sdk-core";var w=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new J({code:"failed_to_create_passkey",error:"Could not create passkey"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});import{PrivyClientError as v}from"@privy-io/js-sdk-core";var C=e=>c(void 0,null,function*(){var a;let r=yield(yield import("react-native-passkeys")).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new v({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return k(m({},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=W(f),d=E(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:E(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new q({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};import{useCallback as K,useContext as H}from"react";import{PrivyClientError as L}from"@privy-io/js-sdk-core";var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=H(f),d=K(o=>{var n;let u=g(o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:K(u=>c(void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new L({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(k(m({},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(P=e==null?void 0:e.onSuccess)==null||P.call(e,y.user,y.is_new_user),y.user}catch(s){throw d(s)}}),[r,d,e==null?void 0:e.onSuccess]),state:a}};export{Y as hasError,M as isConnected,T as isConnecting,D as isCreating,U as isDisconnected,V as isNotCreated,I as isReconnecting,j as needsRecovery,oe as useLinkWithPasskey,de as useLoginWithPasskey};
|
package/dist/index.d.ts
CHANGED
|
@@ -51,9 +51,9 @@ type CustomAuthProviderConfig = {
|
|
|
51
51
|
isLoading: boolean;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
declare const useLinkWithSiwe: (opts?: SiweHookOptions) => SiweHookResult<
|
|
54
|
+
declare const useLinkWithSiwe: (opts?: SiweHookOptions) => SiweHookResult<"link">;
|
|
55
55
|
|
|
56
|
-
declare const useLoginWithSiwe: (opts?: SiweHookOptions) => SiweHookResult<
|
|
56
|
+
declare const useLoginWithSiwe: (opts?: SiweHookOptions) => SiweHookResult<"login">;
|
|
57
57
|
|
|
58
58
|
type LinkWithEmailOptions = OtpLinkHookOptions<{
|
|
59
59
|
email: string;
|
|
@@ -99,7 +99,7 @@ type LoginWithSMSHookResult = OtpLoginHookResult<{
|
|
|
99
99
|
}>;
|
|
100
100
|
declare const useLoginWithSMS: (opts?: LoginWithSMSOptions) => LoginWithSMSHookResult;
|
|
101
101
|
|
|
102
|
-
declare const useLinkWithFarcaster: (opts?: LinkWithFarcasterOptions) => FarcasterHookResult<
|
|
102
|
+
declare const useLinkWithFarcaster: (opts?: LinkWithFarcasterOptions) => FarcasterHookResult<"link">;
|
|
103
103
|
|
|
104
104
|
declare const useUnlinkFarcaster: (opts?: LinkWithFarcasterOptions) => {
|
|
105
105
|
unlinkFarcaster: ({ fid }: {
|
|
@@ -107,7 +107,7 @@ declare const useUnlinkFarcaster: (opts?: LinkWithFarcasterOptions) => {
|
|
|
107
107
|
}) => Promise<_privy_io_public_api.PrivyUser>;
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
declare const useLoginWithFarcaster: (opts?: LoginWithFarcasterOptions) => FarcasterHookResult<
|
|
110
|
+
declare const useLoginWithFarcaster: (opts?: LoginWithFarcasterOptions) => FarcasterHookResult<"login">;
|
|
111
111
|
|
|
112
112
|
interface UseOnEmbeddedWalletStateChange {
|
|
113
113
|
onStateChange: (state: EmbeddedWalletState) => void;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _chunkPC7W3FI5js = require('./chunk-PC7W3FI5.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var je=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),m=_react.useCallback.call(void 0, g=>{var i;let u=_chunkPC7W3FI5js.d.call(void 0, g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),a=_react.useCallback.call(void 0, i=>_chunkPC7W3FI5js.c.call(void 0, void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:a,state:l}};var Qe=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),m=_react.useCallback.call(void 0, g=>{var i;let u=_chunkPC7W3FI5js.d.call(void 0, g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, i=>_chunkPC7W3FI5js.c.call(void 0, void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});o({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};var rr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkPC7W3FI5js.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkPC7W3FI5js.c.call(void 0, void 0,[r],function*({code:i,email:c}){var n;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 k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var lr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkPC7W3FI5js.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkPC7W3FI5js.c.call(void 0, void 0,[r],function*({code:i,email:c}){var n;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 k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var Sr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkPC7W3FI5js.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkPC7W3FI5js.c.call(void 0, void 0,[r],function*({code:i,phone:c}){var n;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(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var Wr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkPC7W3FI5js.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkPC7W3FI5js.c.call(void 0, void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkPC7W3FI5js.c.call(void 0, void 0,[r],function*({code:i,phone:c}){var n;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(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking);var Rr=e=>{let{appState:s,getCurrentAppState:d}=_chunkPC7W3FI5js.f.call(void 0, ),{client:o,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkPC7W3FI5js.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{a.current=!0},[]),i=_react.useCallback.call(void 0, (k,...w)=>_chunkPC7W3FI5js.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkPC7W3FI5js.e.call(void 0, n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.link(_chunkPC7W3FI5js.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield _chunkPC7W3FI5js.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,e==null?void 0:e.onSuccess,g,t,l]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{linkWithFarcaster:i,state:m,cancel:u}};var Ur=e=>{let{client:s}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),d=_react.useCallback.call(void 0, l=>{var t;let m=_chunkPC7W3FI5js.d.call(void 0, l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, m=>_chunkPC7W3FI5js.c.call(void 0, void 0,[m],function*({fid:l}){var t;try{let a=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,a),a}catch(a){throw d(a)}}),[s,e==null?void 0:e.onSuccess,d])}};var zr=e=>{let{appState:s,getCurrentAppState:d}=_chunkPC7W3FI5js.f.call(void 0, ),{client:o,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),a=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkPC7W3FI5js.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{a.current=!0},[]),i=_react.useCallback.call(void 0, (k,...w)=>_chunkPC7W3FI5js.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkPC7W3FI5js.e.call(void 0, n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.authenticate(_chunkPC7W3FI5js.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield _chunkPC7W3FI5js.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,g,e==null?void 0:e.onSuccess,t,l,s]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{loginWithFarcaster:i,state:m,cancel:u}};var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:l}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:a,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:i}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:m,onError:t}},[m,t]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:g,onError:a}},[g,a]),_react.useEffect.call(void 0, ()=>{l.current={onSuccess:u,onError:i}},[g,a]),s};var Yr=({onStateChange:e})=>{let s=V();return _react.useEffect.call(void 0, ()=>{e(s)},[s])};var We=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:o}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:l,onError:m}},[l,m]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:a,onError:t}},[a,t]),s};var Le=()=>{let{client:e}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k);return e};var ve=()=>{let{user:e,isReady:s,logout:d,getAccessToken:o}=_react.useContext.call(void 0, _chunkPC7W3FI5js.k);return{user:e,isReady:s,logout:d,getAccessToken:o}};exports.PrivyContext = _chunkPC7W3FI5js.k; exports.PrivyProvider = _chunkPC7W3FI5js.m; exports.SecureStorageAdapter = _chunkPC7W3FI5js.j; exports.getAccessToken = _chunkPC7W3FI5js.l; exports.hasError = _chunkPC7W3FI5js.t; exports.isConnected = _chunkPC7W3FI5js.n; exports.isConnecting = _chunkPC7W3FI5js.p; exports.isCreating = _chunkPC7W3FI5js.s; exports.isDisconnected = _chunkPC7W3FI5js.q; exports.isNotCreated = _chunkPC7W3FI5js.r; exports.isReconnecting = _chunkPC7W3FI5js.o; exports.needsRecovery = _chunkPC7W3FI5js.u; exports.useEmbeddedSolanaWallet = We; exports.useEmbeddedWallet = V; exports.useEmbeddedWalletStateChange = Yr; exports.useLinkEmail = rr; exports.useLinkSMS = Sr; exports.useLinkWithFarcaster = Rr; exports.useLinkWithOAuth = _chunkPC7W3FI5js.h; exports.useLinkWithSiwe = je; exports.useLoginWithEmail = lr; exports.useLoginWithFarcaster = zr; exports.useLoginWithOAuth = _chunkPC7W3FI5js.g; exports.useLoginWithSMS = Wr; exports.useLoginWithSiwe = Qe; exports.useOAuthFlow = _chunkPC7W3FI5js.i; exports.usePrivy = ve; exports.usePrivyClient = Le; exports.useUnlinkFarcaster = Ur;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _chunkQYCPG73Njs = require('./chunk-QYCPG73N.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var je=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),m=_react.useCallback.call(void 0, g=>{var i;let u=_chunkQYCPG73Njs.d.call(void 0, g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]),a=_react.useCallback.call(void 0, i=>_chunkQYCPG73Njs.c.call(void 0, void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});o({status:"submitting-signature"});let r=yield d.auth.siwe.linkWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r),r}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:a,state:l}};var Qe=e=>{let{user:s,client:d,setSiweState:o,siweState:l}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),m=_react.useCallback.call(void 0, g=>{var i;let u=_chunkQYCPG73Njs.d.call(void 0, g);return o({status:"error",error:u}),(i=e==null?void 0:e.onError)==null||i.call(e,u),u},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({wallet:g,from:{domain:u,uri:i}}){var r;try{o({status:"generating-message"});let n=yield d.auth.siwe.init(g,u,i);return o({status:"awaiting-signature"}),(r=e==null?void 0:e.onGenerateMessage)==null||r.call(e,n.message),n.message}catch(n){throw m(n)}}),[d,m,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, i=>_chunkQYCPG73Njs.c.call(void 0, void 0,[i],function*({signature:g,messageOverride:u}){var c;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});o({status:"submitting-signature"});let r=yield d.auth.siwe.loginWithSiwe(g,void 0,u);return o({status:"done"}),(c=e==null?void 0:e.onSuccess)==null||c.call(e,r.user,r.is_new_user),r.user}catch(r){m(r)}}),[s,d,m,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:l}};var rr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkQYCPG73Njs.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkQYCPG73Njs.c.call(void 0, void 0,[r],function*({code:i,email:c}){var n;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 k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.linkWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var lr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkQYCPG73Njs.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({email:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.email.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{email:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkQYCPG73Njs.c.call(void 0, void 0,[r],function*({code:i,email:c}){var n;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 k=c||s;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.email.loginWithCode(k,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var Sr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkQYCPG73Njs.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkQYCPG73Njs.c.call(void 0, void 0,[r],function*({code:i,phone:c}){var n;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(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.linkWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,w),w}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLinkSuccess]);return{sendCode:g,linkWithCode:u,state:m}};var Wr=e=>{let[s,d]=_react.useState.call(void 0, ""),{user:o,client:l,otpState:m,setOtpState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useCallback.call(void 0, i=>{var r;let c=_chunkQYCPG73Njs.d.call(void 0, i);return t({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, c=>_chunkQYCPG73Njs.c.call(void 0, void 0,[c],function*({phone:i}){var r;d(i);try{t({status:"sending-code"});let n=yield l.auth.phone.sendCode(i);return t({status:"awaiting-code-input"}),(r=e==null?void 0:e.onSendCodeSuccess)==null||r.call(e,{phone:i}),n}catch(n){return a(n),{success:!1}}}),[l,a,e==null?void 0:e.onSendCodeSuccess]),u=_react.useCallback.call(void 0, r=>_chunkQYCPG73Njs.c.call(void 0, void 0,[r],function*({code:i,phone:c}){var n;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(!(c||s))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield l.auth.phone.loginWithCode(c||s,i);return t({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){a(k)}}),[o,l,s,a,e==null?void 0:e.onLoginSuccess]);return{sendCode:g,loginWithCode:u,state:m}};var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var F = _interopRequireWildcard(_expolinking);var Rr=e=>{let{appState:s,getCurrentAppState:d}=_chunkQYCPG73Njs.f.call(void 0, ),{client:o,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkQYCPG73Njs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{a.current=!0},[]),i=_react.useCallback.call(void 0, (k,...w)=>_chunkQYCPG73Njs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:P.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield P.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkQYCPG73Njs.e.call(void 0, n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.link(_chunkQYCPG73Njs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_),_}L++,yield _chunkQYCPG73Njs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,e==null?void 0:e.onSuccess,g,t,l]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{linkWithFarcaster:i,state:m,cancel:u}};var Ur=e=>{let{client:s}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),d=_react.useCallback.call(void 0, l=>{var t;let m=_chunkQYCPG73Njs.d.call(void 0, l);return(t=e==null?void 0:e.onError)==null||t.call(e,m),m},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, m=>_chunkQYCPG73Njs.c.call(void 0, void 0,[m],function*({fid:l}){var t;try{let a=yield s.auth.farcaster.unlink({fid:l});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,a),a}catch(a){throw d(a)}}),[s,e==null?void 0:e.onSuccess,d])}};var zr=e=>{let{appState:s,getCurrentAppState:d}=_chunkQYCPG73Njs.f.call(void 0, ),{client:o,user:l,farcasterState:m,setFarcasterState:t}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),a=_react.useRef.call(void 0, !1),g=_react.useCallback.call(void 0, c=>{var n;let r=_chunkQYCPG73Njs.d.call(void 0, c);return t({status:"error",error:r}),(n=e==null?void 0:e.onError)==null||n.call(e,r),r},[e==null?void 0:e.onError,t]),u=_react.useCallback.call(void 0, ()=>{a.current=!0},[]),i=_react.useCallback.call(void 0, (k,...w)=>_chunkQYCPG73Njs.c.call(void 0, void 0,[k,...w],function*({relyingParty:c,redirectUrl:r},n={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(a.current=!1,l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:y,channel_token:E}=yield o.auth.farcaster.initializeAuth({relyingParty:c,redirectUrl:F.createURL(r!=null?r:"/")});if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield F.openURL(y),t({status:"polling-status"});let L=0;for(;L<n.pollAttempts;){if(a.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcasting polling canceled"});if(s.current!=="active"&&d()!=="active"){yield _chunkQYCPG73Njs.e.call(void 0, n.pollIntervalMs);continue}let b=yield o.auth.farcaster.getFarcasterStatus({channel_token:E});if(b.state==="completed"){t({status:"submitting-token"});let _=yield o.auth.farcaster.authenticate(_chunkQYCPG73Njs.a.call(void 0, {channel_token:E},b));return t({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,_.user,_.is_new_user),_.user}L++,yield _chunkQYCPG73Njs.e.call(void 0, n.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(y){throw g(y)}}),[o,g,e==null?void 0:e.onSuccess,t,l,s]);return _react.useEffect.call(void 0, ()=>()=>{u()},[]),{loginWithFarcaster:i,state:m,cancel:u}};var V=(e={})=>{let{wallet:s,createWalletCallbacks:d,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:l}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),{onCreateWalletSuccess:m,onCreateWalletError:t,onRecoverWalletError:a,onRecoverWalletSuccess:g,onSetWalletRecoverySuccess:u,onSetWalletRecoveryError:i}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:m,onError:t}},[m,t]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:g,onError:a}},[g,a]),_react.useEffect.call(void 0, ()=>{l.current={onSuccess:u,onError:i}},[g,a]),s};var Yr=({onStateChange:e})=>{let s=V();return _react.useEffect.call(void 0, ()=>{e(s)},[s])};var We=(e={})=>{let{solanaWallet:s,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:o}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),{onCreateWalletSuccess:l,onCreateWalletError:m,onRecoverWalletError:t,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{d.current={onSuccess:l,onError:m}},[l,m]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:a,onError:t}},[a,t]),s};var Le=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k);return e};var ve=()=>{let{user:e,isReady:s,logout:d,getAccessToken:o}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k);return{user:e,isReady:s,logout:d,getAccessToken:o}};exports.PrivyContext = _chunkQYCPG73Njs.k; exports.PrivyProvider = _chunkQYCPG73Njs.m; exports.SecureStorageAdapter = _chunkQYCPG73Njs.j; exports.getAccessToken = _chunkQYCPG73Njs.l; exports.hasError = _chunkQYCPG73Njs.t; exports.isConnected = _chunkQYCPG73Njs.n; exports.isConnecting = _chunkQYCPG73Njs.p; exports.isCreating = _chunkQYCPG73Njs.s; exports.isDisconnected = _chunkQYCPG73Njs.q; exports.isNotCreated = _chunkQYCPG73Njs.r; exports.isReconnecting = _chunkQYCPG73Njs.o; exports.needsRecovery = _chunkQYCPG73Njs.u; exports.useEmbeddedSolanaWallet = We; exports.useEmbeddedWallet = V; exports.useEmbeddedWalletStateChange = Yr; exports.useLinkEmail = rr; exports.useLinkSMS = Sr; exports.useLinkWithFarcaster = Rr; exports.useLinkWithOAuth = _chunkQYCPG73Njs.h; exports.useLinkWithSiwe = je; exports.useLoginWithEmail = lr; exports.useLoginWithFarcaster = zr; exports.useLoginWithOAuth = _chunkQYCPG73Njs.g; exports.useLoginWithSMS = Wr; exports.useLoginWithSiwe = Qe; exports.useOAuthFlow = _chunkQYCPG73Njs.i; exports.usePrivy = ve; exports.usePrivyClient = Le; exports.useUnlinkFarcaster = Ur;
|
package/dist/passkey.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export { C as CreateOrRecoverEmbeddedWalletProps, o as CustomAuthFlowState, r as
|
|
|
3
3
|
import '@privy-io/js-sdk-core';
|
|
4
4
|
import '@privy-io/public-api';
|
|
5
5
|
|
|
6
|
-
declare const useLinkWithPasskey: (opts?: PasskeyLinkHookOptions) => PasskeyHookResult<
|
|
6
|
+
declare const useLinkWithPasskey: (opts?: PasskeyLinkHookOptions) => PasskeyHookResult<"link">;
|
|
7
7
|
|
|
8
|
-
declare const useLoginWithPasskey: (opts?: PasskeyLoginHookOptions) => PasskeyHookResult<
|
|
8
|
+
declare const useLoginWithPasskey: (opts?: PasskeyLoginHookOptions) => PasskeyHookResult<"login">;
|
|
9
9
|
|
|
10
10
|
export { useLinkWithPasskey, useLoginWithPasskey };
|
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
|
|
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 _chunkQYCPG73Njs = require('./chunk-QYCPG73N.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunkQYCPG73Njs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkQYCPG73Njs.b.call(void 0, _chunkQYCPG73Njs.a.call(void 0, {},r),{type:(a=r.type)!=null?a:"public-key",clientExtensionResults:{}})});var C=e=>_chunkQYCPG73Njs.c.call(void 0, void 0,null,function*(){var a;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkQYCPG73Njs.b.call(void 0, _chunkQYCPG73Njs.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, _chunkQYCPG73Njs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkQYCPG73Njs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:_react.useCallback.call(void 0, u=>_chunkQYCPG73Njs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P,s,_,y,x,b;try{if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_passkey_before_logged_in",error:"Must be logged in to link a passkey."});i({status:"generating-challenege"});let{options:t}=yield r.auth.passkey.generateRegistrationOptions(o);i({status:"awaiting-passkey"});let N=yield w({rp:t.rp,user:{id:t.user.id,name:t.user.name,displayName:t.user.display_name},challenge:t.challenge,pubKeyCredParams:t.pub_key_cred_params,extensions:{hmacCreateSecret:(n=t.extensions)==null?void 0:n.hmac_create_secret,credProps:(h=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:h.rk,appid:(P=t.extensions)==null?void 0:P.app_id},attestation:t.attestation,excludeCredentials:t.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(s=t.authenticator_selection)==null?void 0:s.authenticator_attachment,residentKey:(_=t.authenticator_selection)==null?void 0:_.resident_key,userVerification:(y=t.authenticator_selection)==null?void 0:y.user_verification,requireResidentKey:(x=t.authenticator_selection)==null?void 0:x.require_resident_key}});i({status:"submitting-response"});let O=yield r.auth.passkey.linkWithPasskey(N,o);return i({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,O),O}catch(t){throw d(t)}}),[l,r,d,e==null?void 0:e.onSuccess]),state:a}};var de=e=>{let{user:l,client:r,passkeyState:a,setPasskeyState:i}=_react.useContext.call(void 0, _chunkQYCPG73Njs.k),d=_react.useCallback.call(void 0, o=>{var n;let u=_chunkQYCPG73Njs.d.call(void 0, o);return i({status:"error",error:u}),(n=e==null?void 0:e.onError)==null||n.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:_react.useCallback.call(void 0, u=>_chunkQYCPG73Njs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var n,p,h,P;try{if(l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_passkey_while_already_logged_in",error:"Already logged in, use `useLinkWithPasskey` if you are trying to link a passkey to an existing account"});i({status:"generating-challenege"});let{options:s}=yield r.auth.passkey.generateAuthenticationOptions(o);i({status:"awaiting-passkey"});let _=yield C({challenge:s.challenge,rpId:s.rp_id,extensions:{appid:(n=s.extensions)==null?void 0:n.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(h=s.extensions)==null?void 0:h.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let y=yield r.auth.passkey.loginWithPasskey(_chunkQYCPG73Njs.b.call(void 0, _chunkQYCPG73Njs.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 = _chunkQYCPG73Njs.t; exports.isConnected = _chunkQYCPG73Njs.n; exports.isConnecting = _chunkQYCPG73Njs.p; exports.isCreating = _chunkQYCPG73Njs.s; exports.isDisconnected = _chunkQYCPG73Njs.q; exports.isNotCreated = _chunkQYCPG73Njs.r; exports.isReconnecting = _chunkQYCPG73Njs.o; exports.needsRecovery = _chunkQYCPG73Njs.u; exports.useLinkWithPasskey = oe; exports.useLoginWithPasskey = de;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privy-io/expo",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.5",
|
|
4
4
|
"description": "Expo client for the Privy Auth API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"expo-web-browser": "*"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@privy-io/js-sdk-core": "0.24.
|
|
62
|
+
"@privy-io/js-sdk-core": "0.24.2",
|
|
63
63
|
"react-fast-compare": "^3.2.2"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|