@privy-io/expo 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: 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 ke=Object.defineProperty,_e=Object.defineProperties;var Ae=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var Ce=Object.prototype.hasOwnProperty,Re=Object.prototype.propertyIsEnumerable;var Z=(e,t,r)=>t in e?ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A= exports.a =(e,t)=>{for(var r in t||(t={}))Ce.call(t,r)&&Z(e,r,t[r]);if(Y)for(var r of Y(t))Re.call(t,r)&&Z(e,r,t[r]);return e},H= exports.b =(e,t)=>_e(e,Ae(t));var b=(e,t,r)=>new Promise((a,s)=>{var i=o=>{try{p(r.next(o))}catch(l){s(l)}},c=o=>{try{p(r.throw(o))}catch(l){s(l)}},p=o=>o.done?a(o.value):Promise.resolve(o.value).then(i,c);p((r=r.apply(e,t)).next())});var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var C = _interopRequireWildcard(_expolinking); var R = _interopRequireWildcard(_expolinking); var O = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var x = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var fe = _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 ee={name:"@privy-io/expo",version:"0.11.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.15.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:"^4.9.5"},author:"privy.io",publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var re=({client:e,isClientReady:t,setWebViewState:r,webViewState:a})=>{let s=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{s.current&&a==="loaded"&&e.setMessagePoster(s.current)},[e,s.current,a==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",p=>b(void 0,null,function*(){s.current&&p==="active"&&((yield e.embeddedWallet.ping(150))||(s.current.reload(),r("reloading")))})).remove,[]);let i=_react.useCallback.call(void 0, c=>b(void 0,null,function*(){let{data:p}=c.nativeEvent,o=e.embeddedWallet.getMessageHandler();o==null||o(JSON.parse(p))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:s,source:{uri:e.embeddedWallet.getURL()},onLoad:()=>r("loaded"),onError:console.error,onMessage:i}):null};function F(p){return b(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:a,setRecoveryState:s,password:i,recoveryToken:c}){var o,l;switch(a){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(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}t({status:"creating"});try{let d=yield e.embeddedWallet.create(i,a,c);return(l=(o=r.current)==null?void 0:o.onSuccess)==null||l.call(o,d),t({status:"connected",provider:d}),s({status:"initial"}),d}catch(d){let y=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:y}),s({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:y})}})}function M(o){return b(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:a,recoveryMethod:s,setRecoveryState:i,password:c,recoveryToken:p}){var l,d,y,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){case"user-passcode":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!p)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}r({status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(t,c,p);return r({status:"connected",provider:n}),i({status:"initial"}),(d=(l=a.current)==null?void 0:l.onSuccess)==null||d.call(l,n),n}catch(n){r({status:"needs-recovery"}),i({status:"initial"});let m=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(f=(y=a.current)==null?void 0:y.onError)==null||f.call(y,m),m}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var oe=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function E(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}function z(s){return b(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:a}){try{let i;switch(e){case"google-drive":{let{url:l}=yield r.recovery.auth.generateURL(C.createURL(t||"/"));i=l;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ae.openAuthSessionAsync(i);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:p}=C.parse(c.url),o;switch(e){case"google-drive":{let{privy_oauth_state:l,privy_oauth_code:d}=p;if(!d||!l)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});o=yield B({oAuthCode:d,oAuthState:l,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return yield C.openURL(c.url.split("?")[0]),o}catch(i){throw a==null||a(E(i)),i}})}function B(a){return b(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}function ie(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var de=({client:e,user:t,wallet:r,setWallet:a,setRecoveryState:s,webViewState:i,createWalletCallbacks:c,recoverWalletCallbacks:p})=>{let o=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),l=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){var v;let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=c.current)==null?void 0:v.onError}),s({status:"storing"}),!w)?null:yield F({client:e,setWallet:a,createWalletCallbacks:c,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e]),d=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(o.recovery_method==="user-passcode")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_but_password_already_set",error:"Embedded wallet already has a recovery password"});if(o.recovery_method!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_password_error",error:`Embedded wallet recovery is managed by ${o.recovery_method}, a password cannot be set`});try{let m=yield e.embeddedWallet.setPassword(o,n);return a({status:"connected",provider:m}),m}catch(m){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_password_error",error:m instanceof Error?m.message:"Error setting password on embedded wallet"})}}),[e,o,r.status]),y=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){var v;if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=p.current)==null?void 0:v.onError}),s({status:"recovering"}),!w)?null:M({client:e,account:o,setWallet:a,recoverWalletCallbacks:p,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e,o]),f=_react.useCallback.call(void 0, ()=>b(void 0,null,function*(){if(!o)throw a({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(n=>n.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(o);return a({status:"connected",provider:n}),n}catch(n){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, n)?(a({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):n instanceof Error?(a({status:"error",error:n.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:n.message})):(a({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,o]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return a({status:"disconnected"});i==="loaded"&&f().catch(()=>{})},[i,t,o]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:l,recover:y,setPassword:d,getProvider:f}};var ne=({client:e,user:t,isUserInitialized:r,oAuthState:a,oAuthCallbacks:s,setOAuthState:i,recoveryState:c})=>{let p=R.useURL(),o=_react.useCallback.call(void 0, l=>{var y,f;let d=E(l);i({status:"error",error:d}),(f=(y=s.current).onError)==null||f.call(y,d)},[i]);return _react.useEffect.call(void 0, ()=>{function l(){return b(this,null,function*(){var n,m;if(!p||a.status!=="loading"||c.status!=="initial")return;let{queryParams:d}=R.parse(p),{privy_oauth_state:y,privy_oauth_code:f}=d;if(!f||!y){i({status:"done"});return}try{let u;return t?u=yield e.auth.oauth.linkWithCode(f,y):u=(yield e.auth.oauth.loginWithCode(f,y)).user,(m=(n=s.current).onSuccess)==null||m.call(n,u),i({status:"done"}),yield R.openURL(p.split("?")[0])}catch(u){o(u)}})}_reactnative.Platform.OS==="android"&&r&&l()},[p,r])};var le=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:a,recoveryState:s,oAuthState:i,setRecoveryState:c,setWallet:p,appStateVisible:o,webViewLoaded:l})=>{let d=O.useURL(),y=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, n=>{var u,w,v,S;let m=E(n);s.status==="storing"?(w=(u=r.current).onError)==null||w.call(u,E(m)):(S=(v=a.current).onError)==null||S.call(v,E(m)),c({status:"initial"})},[s]);return _react.useEffect.call(void 0, ()=>{function n(){return b(this,null,function*(){if(!d&&s.status!=="initial"&&o&&f(new Error("Recovery OAuth session failed")),!d||s.status==="initial"||i.status!=="initial"||!o||!l)return;let{queryParams:m}=O.parse(d),{privy_oauth_state:u,privy_oauth_code:w}=m;if(!(!w||!u)){yield O.openURL(d.split("?")[0]);try{let v=yield B({oAuthCode:w,oAuthState:u,client:e});s.status==="storing"?yield F({client:e,setWallet:p,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v}):yield M({client:e,account:y,setWallet:p,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v})}catch(v){f(v)}}})}_reactnative.Platform.OS==="android"&&n()},[d,s.status,o,l])};var ce=({client:e,isUserInitialized:t,setIsUserInitialized:r})=>{_react.useEffect.call(void 0, ()=>{t||(()=>b(void 0,null,function*(){try{yield e.user.get()}catch(s){}finally{r(!0)}}))()},[t])};var $=_react.createContext.call(void 0, {}),br= exports.j =e=>{let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let _=_reactnative.AppState.addEventListener("change",We=>{r(We==="active")});return()=>{_.remove()}},[]);let[a,s]=_react.useState.call(void 0, !1),[i,c]=_react.useState.call(void 0, "loading"),[p,o]=_react.useState.call(void 0, !1),[l,d]=_react.useState.call(void 0, null),[y,f]=_react.useState.call(void 0, {status:"disconnected"}),[n,m]=_react.useState.call(void 0, {status:"initial"}),[u,w]=_react.useState.call(void 0, {status:"initial"}),[v,S]=_react.useState.call(void 0, {status:"initial"}),[k,Q]=_react.useState.call(void 0, {status:"initial"}),[we,he]=_react.useState.call(void 0, {status:"initial"}),X=_react.useRef.call(void 0, {}),T=_react.useRef.call(void 0, {}),N=_react.useRef.call(void 0, {}),L=_react.useCallback.call(void 0, _=>{if(_)return oe(d)(_);d(null),m({status:"initial"}),w({status:"initial"}),f({status:"disconnected"})},[]),g=_react.useMemo.call(void 0, ()=>{let _=e.storage||be;return new (0, _jssdkcore2.default)({storage:ye(_),appId:e.appId,supportedChains:e.supportedChains,nativeAppIdentifier:me(),baseUrl:e.baseUrl,sdkVersion:`expo:${ee.version}`,callbacks:{setUser:L,setIsReady:o},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}})},[e.storage,e.appId,e.baseUrl,e.supportedChains,e.logLevel,L]),Se=_react.useCallback.call(void 0, ()=>(L(null),g.auth.logout()),[L,g]),ge=_react.useCallback.call(void 0, ()=>g.getAccessToken(),[g]);ce({client:g,isUserInitialized:a,setIsUserInitialized:s});let Ee=de({client:g,user:l,webViewState:i,createWalletCallbacks:T,recoverWalletCallbacks:N,setRecoveryState:S,wallet:y,setWallet:f});return ne({client:g,isUserInitialized:a,user:l,oAuthState:u,setOAuthState:w,oAuthCallbacks:X,recoveryState:v}),le({client:g,user:l,webViewLoaded:i==="loaded",createWalletCallbacks:T,recoverWalletCallbacks:N,recoveryState:v,oAuthState:u,setRecoveryState:S,setWallet:f,appStateVisible:t}),_react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement($.Provider,{value:{client:g,user:l,isReady:i!=="loading"&&a&&ue(u),logout:Se,getAccessToken:ge,wallet:A(A({},y),Ee),oAuthState:u,oAuthCallbacks:X,recoveryState:v,setRecoveryState:S,createWalletCallbacks:T,recoverWalletCallbacks:N,setOAuthState:w,siweState:k,setSiweState:Q,otpState:n,setOtpState:m,passkeyState:we,setPasskeyState:he}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(re,{client:g,isClientReady:p,setWebViewState:c,webViewState:i})))};var ue=e=>e.status!=="loading",J=(e={})=>{let{user:t,oAuthState:r,setOAuthState:a,oAuthCallbacks:s,client:i}=_react.useContext.call(void 0, $),c=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let p=_react.useCallback.call(void 0, l=>{var y;let d=E(l);return a({status:"error",error:d}),(y=e==null?void 0:e.onError)==null||y.call(e,d),d},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(f){return b(this,arguments,function*({provider:d,redirectUri:y}){var n;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:m}=yield i.auth.oauth.generateURL(d,P.createURL(y||"/")),u=yield fe.openAuthSessionAsync(m);if(_reactnative.Platform.OS==="android")return;if(u.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:c?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:w}=P.parse(u.url),{privy_oauth_state:v,privy_oauth_code:S}=w;if(!S||!v)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:c?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});let k;return c?k=(yield i.auth.oauth.loginWithCode(S,v)).user:k=yield i.auth.oauth.linkWithCode(S,v),(n=e==null?void 0:e.onSuccess)==null||n.call(e,k),yield P.openURL(u.url.split("?")[0]),a({status:"done"}),k!=null?k:void 0}catch(m){p(m)}})},[t,i,a,p]),state:r}};function kr(e){let{state:t,start:r}=J(H(A({},e),{action:"login"}));return{state:t,login:r}}function _r(e){let{state:t,start:r}=J(H(A({},e),{action:"link"}));return{state:t,link:r}}function Ar(e){return J(e)}var me=()=>_expoapplication.applicationId;function ye(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>b(this,null,function*(){return[]})}}var be={get(e){return x.getItemAsync(e)},put(e,t){return x.setItemAsync(e,t)},del(e){return x.deleteItemAsync(e)},getKeys:()=>b(void 0,null,function*(){return[]})};var Or=e=>e.status==="connected",Pr= exports.l =e=>e.status==="reconnecting",xr= exports.m =e=>e.status==="connecting",Ur= exports.n =e=>e.status==="disconnected",Ir= exports.o =e=>e.status==="not-created",Lr= exports.p =e=>e.status==="creating",Fr= exports.q =e=>e.status==="error",jr= exports.r =e=>e.status==="needs-recovery";exports.a = A; exports.b = H; exports.c = b; exports.d = E; exports.e = kr; exports.f = _r; exports.g = Ar; exports.h = be; exports.i = $; exports.j = br; exports.k = Or; exports.l = Pr; exports.m = xr; exports.n = Ur; exports.o = Ir; exports.p = Lr; exports.q = Fr; exports.r = jr;
|
|
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 ke=Object.defineProperty,_e=Object.defineProperties;var Ae=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var Ce=Object.prototype.hasOwnProperty,Re=Object.prototype.propertyIsEnumerable;var Z=(e,t,r)=>t in e?ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A= exports.a =(e,t)=>{for(var r in t||(t={}))Ce.call(t,r)&&Z(e,r,t[r]);if(Y)for(var r of Y(t))Re.call(t,r)&&Z(e,r,t[r]);return e},H= exports.b =(e,t)=>_e(e,Ae(t));var b=(e,t,r)=>new Promise((a,s)=>{var i=o=>{try{p(r.next(o))}catch(l){s(l)}},c=o=>{try{p(r.throw(o))}catch(l){s(l)}},p=o=>o.done?a(o.value):Promise.resolve(o.value).then(i,c);p((r=r.apply(e,t)).next())});var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var P = _interopRequireWildcard(_expolinking); var C = _interopRequireWildcard(_expolinking); var R = _interopRequireWildcard(_expolinking); var O = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var x = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var fe = _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 ee={name:"@privy-io/expo",version:"0.11.1",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/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-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.15.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:"^4.9.5"},author:"privy.io",publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var re=({client:e,isClientReady:t,setWebViewState:r,webViewState:a})=>{let s=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{s.current&&a==="loaded"&&e.setMessagePoster(s.current)},[e,s.current,a==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",p=>b(void 0,null,function*(){s.current&&p==="active"&&((yield e.embeddedWallet.ping(150))||(s.current.reload(),r("reloading")))})).remove,[]);let i=_react.useCallback.call(void 0, c=>b(void 0,null,function*(){let{data:p}=c.nativeEvent,o=e.embeddedWallet.getMessageHandler();o==null||o(JSON.parse(p))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:s,source:{uri:e.embeddedWallet.getURL()},onLoad:()=>r("loaded"),onError:console.error,onMessage:i}):null};function F(p){return b(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:a,setRecoveryState:s,password:i,recoveryToken:c}){var o,l;switch(a){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(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}t({status:"creating"});try{let d=yield e.embeddedWallet.create(i,a,c);return(l=(o=r.current)==null?void 0:o.onSuccess)==null||l.call(o,d),t({status:"connected",provider:d}),s({status:"initial"}),d}catch(d){let y=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:y}),s({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:y})}})}function M(o){return b(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:a,recoveryMethod:s,setRecoveryState:i,password:c,recoveryToken:p}){var l,d,y,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){case"user-passcode":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!p)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}r({status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(t,c,p);return r({status:"connected",provider:n}),i({status:"initial"}),(d=(l=a.current)==null?void 0:l.onSuccess)==null||d.call(l,n),n}catch(n){r({status:"needs-recovery"}),i({status:"initial"});let m=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(f=(y=a.current)==null?void 0:y.onError)==null||f.call(y,m),m}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var oe=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function E(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}function z(s){return b(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:a}){try{let i;switch(e){case"google-drive":{let{url:l}=yield r.recovery.auth.generateURL(C.createURL(t||"/"));i=l;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ae.openAuthSessionAsync(i);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:p}=C.parse(c.url),o;switch(e){case"google-drive":{let{privy_oauth_state:l,privy_oauth_code:d}=p;if(!d||!l)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});o=yield B({oAuthCode:d,oAuthState:l,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return yield C.openURL(c.url.split("?")[0]),o}catch(i){throw a==null||a(E(i)),i}})}function B(a){return b(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}function ie(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var de=({client:e,user:t,wallet:r,setWallet:a,setRecoveryState:s,webViewState:i,createWalletCallbacks:c,recoverWalletCallbacks:p})=>{let o=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),l=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){var v;let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=c.current)==null?void 0:v.onError}),s({status:"storing"}),!w)?null:yield F({client:e,setWallet:a,createWalletCallbacks:c,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e]),d=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(o.recovery_method==="user-passcode")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_but_password_already_set",error:"Embedded wallet already has a recovery password"});if(o.recovery_method!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_password_error",error:`Embedded wallet recovery is managed by ${o.recovery_method}, a password cannot be set`});try{let m=yield e.embeddedWallet.setPassword(o,n);return a({status:"connected",provider:m}),m}catch(m){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_password_error",error:m instanceof Error?m.message:"Error setting password on embedded wallet"})}}),[e,o,r.status]),y=_react.useCallback.call(void 0, n=>b(void 0,null,function*(){var v;if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=p.current)==null?void 0:v.onError}),s({status:"recovering"}),!w)?null:M({client:e,account:o,setWallet:a,recoverWalletCallbacks:p,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e,o]),f=_react.useCallback.call(void 0, ()=>b(void 0,null,function*(){if(!o)throw a({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(n=>n.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(o);return a({status:"connected",provider:n}),n}catch(n){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, n)?(a({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):n instanceof Error?(a({status:"error",error:n.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:n.message})):(a({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,o]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return a({status:"disconnected"});i==="loaded"&&f().catch(()=>{})},[i,t,o]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:l,recover:y,setPassword:d,getProvider:f}};var ne=({client:e,user:t,isUserInitialized:r,oAuthState:a,oAuthCallbacks:s,setOAuthState:i,recoveryState:c})=>{let p=R.useURL(),o=_react.useCallback.call(void 0, l=>{var y,f;let d=E(l);i({status:"error",error:d}),(f=(y=s.current).onError)==null||f.call(y,d)},[i]);return _react.useEffect.call(void 0, ()=>{function l(){return b(this,null,function*(){var n,m;if(!p||a.status!=="loading"||c.status!=="initial")return;let{queryParams:d}=R.parse(p),{privy_oauth_state:y,privy_oauth_code:f}=d;if(!f||!y){i({status:"done"});return}try{let u;return t?u=yield e.auth.oauth.linkWithCode(f,y):u=(yield e.auth.oauth.loginWithCode(f,y)).user,(m=(n=s.current).onSuccess)==null||m.call(n,u),i({status:"done"}),yield R.openURL(p.split("?")[0])}catch(u){o(u)}})}_reactnative.Platform.OS==="android"&&r&&l()},[p,r])};var le=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:a,recoveryState:s,oAuthState:i,setRecoveryState:c,setWallet:p,appStateVisible:o,webViewLoaded:l})=>{let d=O.useURL(),y=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, n=>{var u,w,v,S;let m=E(n);s.status==="storing"?(w=(u=r.current).onError)==null||w.call(u,E(m)):(S=(v=a.current).onError)==null||S.call(v,E(m)),c({status:"initial"})},[s]);return _react.useEffect.call(void 0, ()=>{function n(){return b(this,null,function*(){if(!d&&s.status!=="initial"&&o&&f(new Error("Recovery OAuth session failed")),!d||s.status==="initial"||i.status!=="initial"||!o||!l)return;let{queryParams:m}=O.parse(d),{privy_oauth_state:u,privy_oauth_code:w}=m;if(!(!w||!u)){yield O.openURL(d.split("?")[0]);try{let v=yield B({oAuthCode:w,oAuthState:u,client:e});s.status==="storing"?yield F({client:e,setWallet:p,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v}):yield M({client:e,account:y,setWallet:p,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v})}catch(v){f(v)}}})}_reactnative.Platform.OS==="android"&&n()},[d,s.status,o,l])};var ce=({client:e,isUserInitialized:t,setIsUserInitialized:r})=>{_react.useEffect.call(void 0, ()=>{t||(()=>b(void 0,null,function*(){try{yield e.user.get()}catch(s){}finally{r(!0)}}))()},[t])};var $=_react.createContext.call(void 0, {}),br= exports.j =e=>{let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let _=_reactnative.AppState.addEventListener("change",We=>{r(We==="active")});return()=>{_.remove()}},[]);let[a,s]=_react.useState.call(void 0, !1),[i,c]=_react.useState.call(void 0, "loading"),[p,o]=_react.useState.call(void 0, !1),[l,d]=_react.useState.call(void 0, null),[y,f]=_react.useState.call(void 0, {status:"disconnected"}),[n,m]=_react.useState.call(void 0, {status:"initial"}),[u,w]=_react.useState.call(void 0, {status:"initial"}),[v,S]=_react.useState.call(void 0, {status:"initial"}),[k,Q]=_react.useState.call(void 0, {status:"initial"}),[we,he]=_react.useState.call(void 0, {status:"initial"}),X=_react.useRef.call(void 0, {}),T=_react.useRef.call(void 0, {}),N=_react.useRef.call(void 0, {}),L=_react.useCallback.call(void 0, _=>{if(_)return oe(d)(_);d(null),m({status:"initial"}),w({status:"initial"}),f({status:"disconnected"})},[]),g=_react.useMemo.call(void 0, ()=>{let _=e.storage||be;return new (0, _jssdkcore2.default)({storage:ye(_),appId:e.appId,supportedChains:e.supportedChains,nativeAppIdentifier:me(),baseUrl:e.baseUrl,sdkVersion:`expo:${ee.version}`,callbacks:{setUser:L,setIsReady:o},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}})},[e.storage,e.appId,e.baseUrl,e.supportedChains,e.logLevel,L]),Se=_react.useCallback.call(void 0, ()=>(L(null),g.auth.logout()),[L,g]),ge=_react.useCallback.call(void 0, ()=>g.getAccessToken(),[g]);ce({client:g,isUserInitialized:a,setIsUserInitialized:s});let Ee=de({client:g,user:l,webViewState:i,createWalletCallbacks:T,recoverWalletCallbacks:N,setRecoveryState:S,wallet:y,setWallet:f});return ne({client:g,isUserInitialized:a,user:l,oAuthState:u,setOAuthState:w,oAuthCallbacks:X,recoveryState:v}),le({client:g,user:l,webViewLoaded:i==="loaded",createWalletCallbacks:T,recoverWalletCallbacks:N,recoveryState:v,oAuthState:u,setRecoveryState:S,setWallet:f,appStateVisible:t}),_react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement($.Provider,{value:{client:g,user:l,isReady:i!=="loading"&&a&&ue(u),logout:Se,getAccessToken:ge,wallet:A(A({},y),Ee),oAuthState:u,oAuthCallbacks:X,recoveryState:v,setRecoveryState:S,createWalletCallbacks:T,recoverWalletCallbacks:N,setOAuthState:w,siweState:k,setSiweState:Q,otpState:n,setOtpState:m,passkeyState:we,setPasskeyState:he}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(re,{client:g,isClientReady:p,setWebViewState:c,webViewState:i})))};var ue=e=>e.status!=="loading",J=(e={})=>{let{user:t,oAuthState:r,setOAuthState:a,oAuthCallbacks:s,client:i}=_react.useContext.call(void 0, $),c=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let p=_react.useCallback.call(void 0, l=>{var y;let d=E(l);return a({status:"error",error:d}),(y=e==null?void 0:e.onError)==null||y.call(e,d),d},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(f){return b(this,arguments,function*({provider:d,redirectUri:y}){var n;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:m}=yield i.auth.oauth.generateURL(d,P.createURL(y||"/")),u=yield fe.openAuthSessionAsync(m);if(_reactnative.Platform.OS==="android")return;if(u.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:c?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:w}=P.parse(u.url),{privy_oauth_state:v,privy_oauth_code:S}=w;if(!S||!v)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:c?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});let k;return c?k=(yield i.auth.oauth.loginWithCode(S,v)).user:k=yield i.auth.oauth.linkWithCode(S,v),(n=e==null?void 0:e.onSuccess)==null||n.call(e,k),yield P.openURL(u.url.split("?")[0]),a({status:"done"}),k!=null?k:void 0}catch(m){p(m)}})},[t,i,a,p]),state:r}};function kr(e){let{state:t,start:r}=J(H(A({},e),{action:"login"}));return{state:t,login:r}}function _r(e){let{state:t,start:r}=J(H(A({},e),{action:"link"}));return{state:t,link:r}}function Ar(e){return J(e)}var me=()=>_expoapplication.applicationId;function ye(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>b(this,null,function*(){return[]})}}var be={get(e){return x.getItemAsync(e)},put(e,t){return x.setItemAsync(e,t)},del(e){return x.deleteItemAsync(e)},getKeys:()=>b(void 0,null,function*(){return[]})};var Or=e=>e.status==="connected",Pr= exports.l =e=>e.status==="reconnecting",xr= exports.m =e=>e.status==="connecting",Ur= exports.n =e=>e.status==="disconnected",Ir= exports.o =e=>e.status==="not-created",Lr= exports.p =e=>e.status==="creating",Fr= exports.q =e=>e.status==="error",jr= exports.r =e=>e.status==="needs-recovery";exports.a = A; exports.b = H; exports.c = b; exports.d = E; exports.e = kr; exports.f = _r; exports.g = Ar; exports.h = be; exports.i = $; exports.j = br; exports.k = Or; exports.l = Pr; exports.m = xr; exports.n = Ur; exports.o = Ir; exports.p = Lr; exports.q = Fr; exports.r = jr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var ke=Object.defineProperty,_e=Object.defineProperties;var Ae=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var Ce=Object.prototype.hasOwnProperty,Re=Object.prototype.propertyIsEnumerable;var Z=(e,t,r)=>t in e?ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A=(e,t)=>{for(var r in t||(t={}))Ce.call(t,r)&&Z(e,r,t[r]);if(Y)for(var r of Y(t))Re.call(t,r)&&Z(e,r,t[r]);return e},H=(e,t)=>_e(e,Ae(t));var b=(e,t,r)=>new Promise((a,s)=>{var i=o=>{try{p(r.next(o))}catch(l){s(l)}},c=o=>{try{p(r.throw(o))}catch(l){s(l)}},p=o=>o.done?a(o.value):Promise.resolve(o.value).then(i,c);p((r=r.apply(e,t)).next())});import{applicationId as ot}from"expo-application";import*as P from"expo-linking";import*as x from"expo-secure-store";import*as fe from"expo-web-browser";import{useCallback as ve,useContext as at,useEffect as st}from"react";import{Platform as it}from"react-native";import{PrivyClientError as V}from"@privy-io/js-sdk-core";import{digest as Xe}from"expo-crypto";import I,{useState as h,useMemo as Ye,createContext as Ze,useCallback as G,useRef as K,useEffect as et}from"react";import{AppState as pe,View as tt}from"react-native";import rt from"@privy-io/js-sdk-core";var ee={name:"@privy-io/expo",version:"0.11.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"}},files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","generate-types":"npx tsup --dts-only",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",test:'jest --testMatch "**/test/**/*.test.ts"',"test:ci":"npm run test",lint:'eslint "src/**/*.{ts,tsx,js,jsx}" && npx tsc --noEmit',format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix'},peerDependencies:{react:"*","react-native":"*","react-native-passkeys":"^0.2.1","react-native-webview":"*","expo-constants":"*","expo-linking":"*","expo-crypto":"*","expo-secure-store":"*","expo-application":"*","expo-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.15.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:"^4.9.5"},author:"privy.io",publishConfig:{access:"public"}};import Pe from"react";import{useCallback as xe,useEffect as te,useRef as Ue}from"react";import{AppState as Ie}from"react-native";import Le from"react-native-webview";var re=({client:e,isClientReady:t,setWebViewState:r,webViewState:a})=>{let s=Ue(null);te(()=>{s.current&&a==="loaded"&&e.setMessagePoster(s.current)},[e,s.current,a==="loaded"]),te(()=>Ie.addEventListener("change",p=>b(void 0,null,function*(){s.current&&p==="active"&&((yield e.embeddedWallet.ping(150))||(s.current.reload(),r("reloading")))})).remove,[]);let i=xe(c=>b(void 0,null,function*(){let{data:p}=c.nativeEvent,o=e.embeddedWallet.getMessageHandler();o==null||o(JSON.parse(p))}),[e]);return t?Pe.createElement(Le,{style:{flex:1},ref:s,source:{uri:e.embeddedWallet.getURL()},onLoad:()=>r("loaded"),onError:console.error,onMessage:i}):null};import{useCallback as D,useEffect as se,useMemo as Ve}from"react";import{errorIndicatesRecoveryIsNeeded as Te,getUserEmbeddedWallet as Ne,PrivyClientError as W}from"@privy-io/js-sdk-core";import{PrivyClientError as q}from"@privy-io/js-sdk-core";function F(p){return b(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:a,setRecoveryState:s,password:i,recoveryToken:c}){var o,l;switch(a){case"user-passcode":if(!i)throw new q({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new q({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}t({status:"creating"});try{let d=yield e.embeddedWallet.create(i,a,c);return(l=(o=r.current)==null?void 0:o.onSuccess)==null||l.call(o,d),t({status:"connected",provider:d}),s({status:"initial"}),d}catch(d){let y=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:y}),s({status:"initial"}),new q({code:"embedded_wallet_creation_error",error:y})}})}import{PrivyClientError as j}from"@privy-io/js-sdk-core";function M(o){return b(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:a,recoveryMethod:s,setRecoveryState:i,password:c,recoveryToken:p}){var l,d,y,f;if(!t)throw new j({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){case"user-passcode":if(!c)throw new j({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!p)throw new j({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}r({status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(t,c,p);return r({status:"connected",provider:n}),i({status:"initial"}),(d=(l=a.current)==null?void 0:l.onSuccess)==null||d.call(l,n),n}catch(n){r({status:"needs-recovery"}),i({status:"initial"});let m=new j({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(f=(y=a.current)==null?void 0:y.onError)==null||f.call(y,m),m}})}import*as C from"expo-linking";import*as ae from"expo-web-browser";import{Platform as De}from"react-native";import{PrivyClientError as U}from"@privy-io/js-sdk-core";import Fe from"react-fast-compare";var oe=e=>t=>e(r=>Fe(r,t)?r:t);import{PrivyApiError as je,PrivyClientError as Me}from"@privy-io/js-sdk-core";function E(e){return e instanceof Error||e instanceof je||e instanceof Me?e:typeof e=="string"?new Error(e):new Error("Unknown error")}function z(s){return b(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:a}){try{let i;switch(e){case"google-drive":{let{url:l}=yield r.recovery.auth.generateURL(C.createURL(t||"/"));i=l;break}default:throw new U({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ae.openAuthSessionAsync(i);if(De.OS==="android")return;if(c.type!=="success")throw new U({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:p}=C.parse(c.url),o;switch(e){case"google-drive":{let{privy_oauth_state:l,privy_oauth_code:d}=p;if(!d||!l)throw new U({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});o=yield B({oAuthCode:d,oAuthState:l,client:r});break}default:throw new U({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return yield C.openURL(c.url.split("?")[0]),o}catch(i){throw a==null||a(E(i)),i}})}function B(a){return b(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new U({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}function ie(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var de=({client:e,user:t,wallet:r,setWallet:a,setRecoveryState:s,webViewState:i,createWalletCallbacks:c,recoverWalletCallbacks:p})=>{let o=Ve(()=>Ne(t),[t]),l=D(n=>b(void 0,null,function*(){var v;let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=c.current)==null?void 0:v.onError}),s({status:"storing"}),!w)?null:yield F({client:e,setWallet:a,createWalletCallbacks:c,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e]),d=D(n=>b(void 0,null,function*(){if(r.status!=="connected")throw new W({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!o)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(o.recovery_method==="user-passcode")throw new W({code:"attempted_to_set_password_but_password_already_set",error:"Embedded wallet already has a recovery password"});if(o.recovery_method!=="privy")throw new W({code:"embedded_wallet_set_password_error",error:`Embedded wallet recovery is managed by ${o.recovery_method}, a password cannot be set`});try{let m=yield e.embeddedWallet.setPassword(o,n);return a({status:"connected",provider:m}),m}catch(m){throw new W({code:"embedded_wallet_set_password_error",error:m instanceof Error?m.message:"Error setting password on embedded wallet"})}}),[e,o,r.status]),y=D(n=>b(void 0,null,function*(){var v;if(!o)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=p.current)==null?void 0:v.onError}),s({status:"recovering"}),!w)?null:M({client:e,account:o,setWallet:a,recoverWalletCallbacks:p,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e,o]),f=D(()=>b(void 0,null,function*(){if(!o)throw a({status:"not-created"}),new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(n=>n.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(o);return a({status:"connected",provider:n}),n}catch(n){throw Te(n)?(a({status:"needs-recovery"}),new W({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):n instanceof Error?(a({status:"error",error:n.message}),new W({code:"unknown_embedded_wallet_error",error:n.message})):(a({status:"error",error:"Error loading embedded wallet"}),new W({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,o]);return se(()=>{if(!t&&r.status!=="disconnected")return a({status:"disconnected"});i==="loaded"&&f().catch(()=>{})},[i,t,o]),se(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:l,recover:y,setPassword:d,getProvider:f}};import*as R from"expo-linking";import{useCallback as He,useEffect as qe}from"react";import{Platform as ze}from"react-native";var ne=({client:e,user:t,isUserInitialized:r,oAuthState:a,oAuthCallbacks:s,setOAuthState:i,recoveryState:c})=>{let p=R.useURL(),o=He(l=>{var y,f;let d=E(l);i({status:"error",error:d}),(f=(y=s.current).onError)==null||f.call(y,d)},[i]);return qe(()=>{function l(){return b(this,null,function*(){var n,m;if(!p||a.status!=="loading"||c.status!=="initial")return;let{queryParams:d}=R.parse(p),{privy_oauth_state:y,privy_oauth_code:f}=d;if(!f||!y){i({status:"done"});return}try{let u;return t?u=yield e.auth.oauth.linkWithCode(f,y):u=(yield e.auth.oauth.loginWithCode(f,y)).user,(m=(n=s.current).onSuccess)==null||m.call(n,u),i({status:"done"}),yield R.openURL(p.split("?")[0])}catch(u){o(u)}})}ze.OS==="android"&&r&&l()},[p,r])};import*as O from"expo-linking";import{useCallback as Be,useEffect as Ge,useMemo as Ke}from"react";import{Platform as $e}from"react-native";import{getUserEmbeddedWallet as Je}from"@privy-io/js-sdk-core";var le=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:a,recoveryState:s,oAuthState:i,setRecoveryState:c,setWallet:p,appStateVisible:o,webViewLoaded:l})=>{let d=O.useURL(),y=Ke(()=>Je(t),[t]),f=Be(n=>{var u,w,v,S;let m=E(n);s.status==="storing"?(w=(u=r.current).onError)==null||w.call(u,E(m)):(S=(v=a.current).onError)==null||S.call(v,E(m)),c({status:"initial"})},[s]);return Ge(()=>{function n(){return b(this,null,function*(){if(!d&&s.status!=="initial"&&o&&f(new Error("Recovery OAuth session failed")),!d||s.status==="initial"||i.status!=="initial"||!o||!l)return;let{queryParams:m}=O.parse(d),{privy_oauth_state:u,privy_oauth_code:w}=m;if(!(!w||!u)){yield O.openURL(d.split("?")[0]);try{let v=yield B({oAuthCode:w,oAuthState:u,client:e});s.status==="storing"?yield F({client:e,setWallet:p,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v}):yield M({client:e,account:y,setWallet:p,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v})}catch(v){f(v)}}})}$e.OS==="android"&&n()},[d,s.status,o,l])};import{useEffect as Qe}from"react";var ce=({client:e,isUserInitialized:t,setIsUserInitialized:r})=>{Qe(()=>{t||(()=>b(void 0,null,function*(){try{yield e.user.get()}catch(s){}finally{r(!0)}}))()},[t])};var $=Ze({}),br=e=>{let[t,r]=h(pe.currentState==="active");et(()=>{let _=pe.addEventListener("change",We=>{r(We==="active")});return()=>{_.remove()}},[]);let[a,s]=h(!1),[i,c]=h("loading"),[p,o]=h(!1),[l,d]=h(null),[y,f]=h({status:"disconnected"}),[n,m]=h({status:"initial"}),[u,w]=h({status:"initial"}),[v,S]=h({status:"initial"}),[k,Q]=h({status:"initial"}),[we,he]=h({status:"initial"}),X=K({}),T=K({}),N=K({}),L=G(_=>{if(_)return oe(d)(_);d(null),m({status:"initial"}),w({status:"initial"}),f({status:"disconnected"})},[]),g=Ye(()=>{let _=e.storage||be;return new rt({storage:ye(_),appId:e.appId,supportedChains:e.supportedChains,nativeAppIdentifier:me(),baseUrl:e.baseUrl,sdkVersion:`expo:${ee.version}`,callbacks:{setUser:L,setIsReady:o},logLevel:e.logLevel,crypto:{digest:Xe}})},[e.storage,e.appId,e.baseUrl,e.supportedChains,e.logLevel,L]),Se=G(()=>(L(null),g.auth.logout()),[L,g]),ge=G(()=>g.getAccessToken(),[g]);ce({client:g,isUserInitialized:a,setIsUserInitialized:s});let Ee=de({client:g,user:l,webViewState:i,createWalletCallbacks:T,recoverWalletCallbacks:N,setRecoveryState:S,wallet:y,setWallet:f});return ne({client:g,isUserInitialized:a,user:l,oAuthState:u,setOAuthState:w,oAuthCallbacks:X,recoveryState:v}),le({client:g,user:l,webViewLoaded:i==="loaded",createWalletCallbacks:T,recoverWalletCallbacks:N,recoveryState:v,oAuthState:u,setRecoveryState:S,setWallet:f,appStateVisible:t}),I.createElement(I.Fragment,null,I.createElement($.Provider,{value:{client:g,user:l,isReady:i!=="loading"&&a&&ue(u),logout:Se,getAccessToken:ge,wallet:A(A({},y),Ee),oAuthState:u,oAuthCallbacks:X,recoveryState:v,setRecoveryState:S,createWalletCallbacks:T,recoverWalletCallbacks:N,setOAuthState:w,siweState:k,setSiweState:Q,otpState:n,setOtpState:m,passkeyState:we,setPasskeyState:he}},e.children),I.createElement(tt,{style:{width:0,height:0,overflow:"hidden"}},I.createElement(re,{client:g,isClientReady:p,setWebViewState:c,webViewState:i})))};var ue=e=>e.status!=="loading",J=(e={})=>{let{user:t,oAuthState:r,setOAuthState:a,oAuthCallbacks:s,client:i}=at($),c=e.action?e.action==="login":!t;st(()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let p=ve(l=>{var y;let d=E(l);return a({status:"error",error:d}),(y=e==null?void 0:e.onError)==null||y.call(e,d),d},[e==null?void 0:e.onError]);return{start:ve(function(f){return b(this,arguments,function*({provider:d,redirectUri:y}){var n;a({status:"loading"});try{if(t&&e.action==="login")throw new V({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 V({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:m}=yield i.auth.oauth.generateURL(d,P.createURL(y||"/")),u=yield fe.openAuthSessionAsync(m);if(it.OS==="android")return;if(u.type!=="success")throw new V({error:"OAuth session failed",code:c?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:w}=P.parse(u.url),{privy_oauth_state:v,privy_oauth_code:S}=w;if(!S||!v)throw new V({error:"OAuth invalid credentials",code:c?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});let k;return c?k=(yield i.auth.oauth.loginWithCode(S,v)).user:k=yield i.auth.oauth.linkWithCode(S,v),(n=e==null?void 0:e.onSuccess)==null||n.call(e,k),yield P.openURL(u.url.split("?")[0]),a({status:"done"}),k!=null?k:void 0}catch(m){p(m)}})},[t,i,a,p]),state:r}};function kr(e){let{state:t,start:r}=J(H(A({},e),{action:"login"}));return{state:t,login:r}}function _r(e){let{state:t,start:r}=J(H(A({},e),{action:"link"}));return{state:t,link:r}}function Ar(e){return J(e)}var me=()=>ot;function ye(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>b(this,null,function*(){return[]})}}var be={get(e){return x.getItemAsync(e)},put(e,t){return x.setItemAsync(e,t)},del(e){return x.deleteItemAsync(e)},getKeys:()=>b(void 0,null,function*(){return[]})};var Or=e=>e.status==="connected",Pr=e=>e.status==="reconnecting",xr=e=>e.status==="connecting",Ur=e=>e.status==="disconnected",Ir=e=>e.status==="not-created",Lr=e=>e.status==="creating",Fr=e=>e.status==="error",jr=e=>e.status==="needs-recovery";export{A as a,H as b,b as c,E as d,kr as e,_r as f,Ar as g,be as h,$ as i,br as j,Or as k,Pr as l,xr as m,Ur as n,Ir as o,Lr as p,Fr as q,jr as r};
|
|
1
|
+
var ke=Object.defineProperty,_e=Object.defineProperties;var Ae=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var Ce=Object.prototype.hasOwnProperty,Re=Object.prototype.propertyIsEnumerable;var Z=(e,t,r)=>t in e?ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A=(e,t)=>{for(var r in t||(t={}))Ce.call(t,r)&&Z(e,r,t[r]);if(Y)for(var r of Y(t))Re.call(t,r)&&Z(e,r,t[r]);return e},H=(e,t)=>_e(e,Ae(t));var b=(e,t,r)=>new Promise((a,s)=>{var i=o=>{try{p(r.next(o))}catch(l){s(l)}},c=o=>{try{p(r.throw(o))}catch(l){s(l)}},p=o=>o.done?a(o.value):Promise.resolve(o.value).then(i,c);p((r=r.apply(e,t)).next())});import{applicationId as ot}from"expo-application";import*as P from"expo-linking";import*as x from"expo-secure-store";import*as fe from"expo-web-browser";import{useCallback as ve,useContext as at,useEffect as st}from"react";import{Platform as it}from"react-native";import{PrivyClientError as V}from"@privy-io/js-sdk-core";import{digest as Xe}from"expo-crypto";import I,{useState as h,useMemo as Ye,createContext as Ze,useCallback as G,useRef as K,useEffect as et}from"react";import{AppState as pe,View as tt}from"react-native";import rt from"@privy-io/js-sdk-core";var ee={name:"@privy-io/expo",version:"0.11.1",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",source:"./src/index.ts",main:"./dist/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-web-browser":"*"},dependencies:{"@privy-io/js-sdk-core":"0.15.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:"^4.9.5"},author:"privy.io",publishConfig:{access:"public"}};import Pe from"react";import{useCallback as xe,useEffect as te,useRef as Ue}from"react";import{AppState as Ie}from"react-native";import Le from"react-native-webview";var re=({client:e,isClientReady:t,setWebViewState:r,webViewState:a})=>{let s=Ue(null);te(()=>{s.current&&a==="loaded"&&e.setMessagePoster(s.current)},[e,s.current,a==="loaded"]),te(()=>Ie.addEventListener("change",p=>b(void 0,null,function*(){s.current&&p==="active"&&((yield e.embeddedWallet.ping(150))||(s.current.reload(),r("reloading")))})).remove,[]);let i=xe(c=>b(void 0,null,function*(){let{data:p}=c.nativeEvent,o=e.embeddedWallet.getMessageHandler();o==null||o(JSON.parse(p))}),[e]);return t?Pe.createElement(Le,{style:{flex:1},ref:s,source:{uri:e.embeddedWallet.getURL()},onLoad:()=>r("loaded"),onError:console.error,onMessage:i}):null};import{useCallback as D,useEffect as se,useMemo as Ve}from"react";import{errorIndicatesRecoveryIsNeeded as Te,getUserEmbeddedWallet as Ne,PrivyClientError as W}from"@privy-io/js-sdk-core";import{PrivyClientError as q}from"@privy-io/js-sdk-core";function F(p){return b(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:a,setRecoveryState:s,password:i,recoveryToken:c}){var o,l;switch(a){case"user-passcode":if(!i)throw new q({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new q({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}t({status:"creating"});try{let d=yield e.embeddedWallet.create(i,a,c);return(l=(o=r.current)==null?void 0:o.onSuccess)==null||l.call(o,d),t({status:"connected",provider:d}),s({status:"initial"}),d}catch(d){let y=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:y}),s({status:"initial"}),new q({code:"embedded_wallet_creation_error",error:y})}})}import{PrivyClientError as j}from"@privy-io/js-sdk-core";function M(o){return b(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:a,recoveryMethod:s,setRecoveryState:i,password:c,recoveryToken:p}){var l,d,y,f;if(!t)throw new j({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){case"user-passcode":if(!c)throw new j({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!p)throw new j({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break}r({status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(t,c,p);return r({status:"connected",provider:n}),i({status:"initial"}),(d=(l=a.current)==null?void 0:l.onSuccess)==null||d.call(l,n),n}catch(n){r({status:"needs-recovery"}),i({status:"initial"});let m=new j({code:"embedded_wallet_recovery_error",error:n instanceof Error?n.message:"Error recovering embedded wallet"});throw(f=(y=a.current)==null?void 0:y.onError)==null||f.call(y,m),m}})}import*as C from"expo-linking";import*as ae from"expo-web-browser";import{Platform as De}from"react-native";import{PrivyClientError as U}from"@privy-io/js-sdk-core";import Fe from"react-fast-compare";var oe=e=>t=>e(r=>Fe(r,t)?r:t);import{PrivyApiError as je,PrivyClientError as Me}from"@privy-io/js-sdk-core";function E(e){return e instanceof Error||e instanceof je||e instanceof Me?e:typeof e=="string"?new Error(e):new Error("Unknown error")}function z(s){return b(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:a}){try{let i;switch(e){case"google-drive":{let{url:l}=yield r.recovery.auth.generateURL(C.createURL(t||"/"));i=l;break}default:throw new U({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ae.openAuthSessionAsync(i);if(De.OS==="android")return;if(c.type!=="success")throw new U({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:p}=C.parse(c.url),o;switch(e){case"google-drive":{let{privy_oauth_state:l,privy_oauth_code:d}=p;if(!d||!l)throw new U({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});o=yield B({oAuthCode:d,oAuthState:l,client:r});break}default:throw new U({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return yield C.openURL(c.url.split("?")[0]),o}catch(i){throw a==null||a(E(i)),i}})}function B(a){return b(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new U({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}function ie(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var de=({client:e,user:t,wallet:r,setWallet:a,setRecoveryState:s,webViewState:i,createWalletCallbacks:c,recoverWalletCallbacks:p})=>{let o=Ve(()=>Ne(t),[t]),l=D(n=>b(void 0,null,function*(){var v;let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=c.current)==null?void 0:v.onError}),s({status:"storing"}),!w)?null:yield F({client:e,setWallet:a,createWalletCallbacks:c,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e]),d=D(n=>b(void 0,null,function*(){if(r.status!=="connected")throw new W({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!o)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(o.recovery_method==="user-passcode")throw new W({code:"attempted_to_set_password_but_password_already_set",error:"Embedded wallet already has a recovery password"});if(o.recovery_method!=="privy")throw new W({code:"embedded_wallet_set_password_error",error:`Embedded wallet recovery is managed by ${o.recovery_method}, a password cannot be set`});try{let m=yield e.embeddedWallet.setPassword(o,n);return a({status:"connected",provider:m}),m}catch(m){throw new W({code:"embedded_wallet_set_password_error",error:m instanceof Error?m.message:"Error setting password on embedded wallet"})}}),[e,o,r.status]),y=D(n=>b(void 0,null,function*(){var v;if(!o)throw new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:m,recoveryMethod:u}=ie(n),w;return["google-drive"].includes(u)&&(w=yield z({provider:u,client:e,onError:(v=p.current)==null?void 0:v.onError}),s({status:"recovering"}),!w)?null:M({client:e,account:o,setWallet:a,recoverWalletCallbacks:p,recoveryMethod:u,setRecoveryState:s,password:m,recoveryToken:w})}),[e,o]),f=D(()=>b(void 0,null,function*(){if(!o)throw a({status:"not-created"}),new W({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(n=>n.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let n=yield e.embeddedWallet.getProvider(o);return a({status:"connected",provider:n}),n}catch(n){throw Te(n)?(a({status:"needs-recovery"}),new W({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):n instanceof Error?(a({status:"error",error:n.message}),new W({code:"unknown_embedded_wallet_error",error:n.message})):(a({status:"error",error:"Error loading embedded wallet"}),new W({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,o]);return se(()=>{if(!t&&r.status!=="disconnected")return a({status:"disconnected"});i==="loaded"&&f().catch(()=>{})},[i,t,o]),se(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:l,recover:y,setPassword:d,getProvider:f}};import*as R from"expo-linking";import{useCallback as He,useEffect as qe}from"react";import{Platform as ze}from"react-native";var ne=({client:e,user:t,isUserInitialized:r,oAuthState:a,oAuthCallbacks:s,setOAuthState:i,recoveryState:c})=>{let p=R.useURL(),o=He(l=>{var y,f;let d=E(l);i({status:"error",error:d}),(f=(y=s.current).onError)==null||f.call(y,d)},[i]);return qe(()=>{function l(){return b(this,null,function*(){var n,m;if(!p||a.status!=="loading"||c.status!=="initial")return;let{queryParams:d}=R.parse(p),{privy_oauth_state:y,privy_oauth_code:f}=d;if(!f||!y){i({status:"done"});return}try{let u;return t?u=yield e.auth.oauth.linkWithCode(f,y):u=(yield e.auth.oauth.loginWithCode(f,y)).user,(m=(n=s.current).onSuccess)==null||m.call(n,u),i({status:"done"}),yield R.openURL(p.split("?")[0])}catch(u){o(u)}})}ze.OS==="android"&&r&&l()},[p,r])};import*as O from"expo-linking";import{useCallback as Be,useEffect as Ge,useMemo as Ke}from"react";import{Platform as $e}from"react-native";import{getUserEmbeddedWallet as Je}from"@privy-io/js-sdk-core";var le=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:a,recoveryState:s,oAuthState:i,setRecoveryState:c,setWallet:p,appStateVisible:o,webViewLoaded:l})=>{let d=O.useURL(),y=Ke(()=>Je(t),[t]),f=Be(n=>{var u,w,v,S;let m=E(n);s.status==="storing"?(w=(u=r.current).onError)==null||w.call(u,E(m)):(S=(v=a.current).onError)==null||S.call(v,E(m)),c({status:"initial"})},[s]);return Ge(()=>{function n(){return b(this,null,function*(){if(!d&&s.status!=="initial"&&o&&f(new Error("Recovery OAuth session failed")),!d||s.status==="initial"||i.status!=="initial"||!o||!l)return;let{queryParams:m}=O.parse(d),{privy_oauth_state:u,privy_oauth_code:w}=m;if(!(!w||!u)){yield O.openURL(d.split("?")[0]);try{let v=yield B({oAuthCode:w,oAuthState:u,client:e});s.status==="storing"?yield F({client:e,setWallet:p,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v}):yield M({client:e,account:y,setWallet:p,recoverWalletCallbacks:a,recoveryMethod:"google-drive",setRecoveryState:c,recoveryToken:v})}catch(v){f(v)}}})}$e.OS==="android"&&n()},[d,s.status,o,l])};import{useEffect as Qe}from"react";var ce=({client:e,isUserInitialized:t,setIsUserInitialized:r})=>{Qe(()=>{t||(()=>b(void 0,null,function*(){try{yield e.user.get()}catch(s){}finally{r(!0)}}))()},[t])};var $=Ze({}),br=e=>{let[t,r]=h(pe.currentState==="active");et(()=>{let _=pe.addEventListener("change",We=>{r(We==="active")});return()=>{_.remove()}},[]);let[a,s]=h(!1),[i,c]=h("loading"),[p,o]=h(!1),[l,d]=h(null),[y,f]=h({status:"disconnected"}),[n,m]=h({status:"initial"}),[u,w]=h({status:"initial"}),[v,S]=h({status:"initial"}),[k,Q]=h({status:"initial"}),[we,he]=h({status:"initial"}),X=K({}),T=K({}),N=K({}),L=G(_=>{if(_)return oe(d)(_);d(null),m({status:"initial"}),w({status:"initial"}),f({status:"disconnected"})},[]),g=Ye(()=>{let _=e.storage||be;return new rt({storage:ye(_),appId:e.appId,supportedChains:e.supportedChains,nativeAppIdentifier:me(),baseUrl:e.baseUrl,sdkVersion:`expo:${ee.version}`,callbacks:{setUser:L,setIsReady:o},logLevel:e.logLevel,crypto:{digest:Xe}})},[e.storage,e.appId,e.baseUrl,e.supportedChains,e.logLevel,L]),Se=G(()=>(L(null),g.auth.logout()),[L,g]),ge=G(()=>g.getAccessToken(),[g]);ce({client:g,isUserInitialized:a,setIsUserInitialized:s});let Ee=de({client:g,user:l,webViewState:i,createWalletCallbacks:T,recoverWalletCallbacks:N,setRecoveryState:S,wallet:y,setWallet:f});return ne({client:g,isUserInitialized:a,user:l,oAuthState:u,setOAuthState:w,oAuthCallbacks:X,recoveryState:v}),le({client:g,user:l,webViewLoaded:i==="loaded",createWalletCallbacks:T,recoverWalletCallbacks:N,recoveryState:v,oAuthState:u,setRecoveryState:S,setWallet:f,appStateVisible:t}),I.createElement(I.Fragment,null,I.createElement($.Provider,{value:{client:g,user:l,isReady:i!=="loading"&&a&&ue(u),logout:Se,getAccessToken:ge,wallet:A(A({},y),Ee),oAuthState:u,oAuthCallbacks:X,recoveryState:v,setRecoveryState:S,createWalletCallbacks:T,recoverWalletCallbacks:N,setOAuthState:w,siweState:k,setSiweState:Q,otpState:n,setOtpState:m,passkeyState:we,setPasskeyState:he}},e.children),I.createElement(tt,{style:{width:0,height:0,overflow:"hidden"}},I.createElement(re,{client:g,isClientReady:p,setWebViewState:c,webViewState:i})))};var ue=e=>e.status!=="loading",J=(e={})=>{let{user:t,oAuthState:r,setOAuthState:a,oAuthCallbacks:s,client:i}=at($),c=e.action?e.action==="login":!t;st(()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let p=ve(l=>{var y;let d=E(l);return a({status:"error",error:d}),(y=e==null?void 0:e.onError)==null||y.call(e,d),d},[e==null?void 0:e.onError]);return{start:ve(function(f){return b(this,arguments,function*({provider:d,redirectUri:y}){var n;a({status:"loading"});try{if(t&&e.action==="login")throw new V({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 V({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:m}=yield i.auth.oauth.generateURL(d,P.createURL(y||"/")),u=yield fe.openAuthSessionAsync(m);if(it.OS==="android")return;if(u.type!=="success")throw new V({error:"OAuth session failed",code:c?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:w}=P.parse(u.url),{privy_oauth_state:v,privy_oauth_code:S}=w;if(!S||!v)throw new V({error:"OAuth invalid credentials",code:c?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});let k;return c?k=(yield i.auth.oauth.loginWithCode(S,v)).user:k=yield i.auth.oauth.linkWithCode(S,v),(n=e==null?void 0:e.onSuccess)==null||n.call(e,k),yield P.openURL(u.url.split("?")[0]),a({status:"done"}),k!=null?k:void 0}catch(m){p(m)}})},[t,i,a,p]),state:r}};function kr(e){let{state:t,start:r}=J(H(A({},e),{action:"login"}));return{state:t,login:r}}function _r(e){let{state:t,start:r}=J(H(A({},e),{action:"link"}));return{state:t,link:r}}function Ar(e){return J(e)}var me=()=>ot;function ye(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>b(this,null,function*(){return[]})}}var be={get(e){return x.getItemAsync(e)},put(e,t){return x.setItemAsync(e,t)},del(e){return x.deleteItemAsync(e)},getKeys:()=>b(void 0,null,function*(){return[]})};var Or=e=>e.status==="connected",Pr=e=>e.status==="reconnecting",xr=e=>e.status==="connecting",Ur=e=>e.status==="disconnected",Ir=e=>e.status==="not-created",Lr=e=>e.status==="creating",Fr=e=>e.status==="error",jr=e=>e.status==="needs-recovery";export{A as a,H as b,b as c,E as d,kr as e,_r as f,Ar as g,be as h,$ as i,br as j,Or as k,Pr as l,xr as m,Ur as n,Ir as o,Lr as p,Fr as q,jr as r};
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as h,d as f,e as M,f as P,g as R,h as A,i as w,j as Z,k as $,l as ee,m as re,n as te,o as ne,p as ie,q as oe,r as ae}from"./chunk-
|
|
1
|
+
import{c as h,d as f,e as M,f as P,g as R,h as A,i as w,j as Z,k as $,l as ee,m as re,n as te,o as ne,p as ie,q as oe,r as ae}from"./chunk-HMZ5E67N.js";export*from"@privy-io/js-sdk-core";import{useCallback as y,useContext as G}from"react";import{PrivyClientError as U}from"@privy-io/js-sdk-core";var me=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=G(w),d=y(g=>{var r;let c=f(g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=y(i=>h(void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]),u=y(r=>h(void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(!l)throw new U({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let t=yield m.auth.siwe.linkWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t),t}catch(t){d(t)}}),[l,m,d]);return{generateSiweMessage:o,linkWithSiwe:u,state:s}};import{useCallback as C,useContext as F}from"react";import{PrivyClientError as p}from"@privy-io/js-sdk-core";var fe=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=F(w),d=C(g=>{var r;let c=f(g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=C(i=>h(void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]);return{loginWithSiwe:C(r=>h(void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(l)throw new p({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let t=yield m.auth.siwe.loginWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user),t.user}catch(t){d(t)}}),[l,m,d]),generateSiweMessage:o,state:s}};import{useCallback as W,useContext as j,useState as T}from"react";import{PrivyClientError as b}from"@privy-io/js-sdk-core";var be=e=>{let[l,m]=T(""),{user:a,client:s,otpState:d,setOtpState:o}=j(w),u=W(r=>{var t;let i=f(r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=W(i=>h(void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=W(t=>h(void 0,[t],function*({code:r,email:i}){var n;try{if(!a)throw new b({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let S=i||l;if(!S)throw new b({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.linkWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};import{useCallback as E,useContext as q,useState as z}from"react";import{PrivyClientError as L}from"@privy-io/js-sdk-core";var Re=e=>{let[l,m]=z(""),{user:a,client:s,otpState:d,setOtpState:o}=q(w),u=E(r=>{var t;let i=f(r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=E(i=>h(void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=E(t=>h(void 0,[t],function*({code:r,email:i}){var n;try{if(a)throw new L({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 S=i||l;if(!S)throw new L({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.loginWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};import{useCallback as x,useContext as B,useState as D}from"react";import{PrivyClientError as O}from"@privy-io/js-sdk-core";var Te=e=>{let[l,m]=D(""),{user:a,client:s,otpState:d,setOtpState:o}=B(w),u=x(r=>{var t;let i=f(r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=x(i=>h(void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=x(t=>h(void 0,[t],function*({code:r,phone:i}){var n;try{if(!a)throw new O({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(!(i||l))throw new O({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.linkWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};import{useCallback as _,useContext as I,useState as J}from"react";import{PrivyClientError as v}from"@privy-io/js-sdk-core";var Ke=e=>{let[l,m]=J(""),{user:a,client:s,otpState:d,setOtpState:o}=I(w),u=_(r=>{var t;let i=f(r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_(i=>h(void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_(t=>h(void 0,[t],function*({code:r,phone:i}){var n;try{if(a)throw new v({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(!(i||l))throw new v({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.loginWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};import{useContext as K,useEffect as H}from"react";var N=(e={})=>{let{wallet:l,createWalletCallbacks:m,recoverWalletCallbacks:a}=K(w),{onCreateWalletSuccess:s,onCreateWalletError:d,onRecoverWalletError:o,onRecoverWalletSuccess:u}=e;return H(()=>{m.current={onSuccess:s,onError:d}},[s,d]),H(()=>{a.current={onSuccess:u,onError:o}},[u,o]),l};import{useContext as Q}from"react";var V=()=>{let{client:e}=Q(w);return e};import{useContext as X}from"react";var Y=()=>{let{user:e,isReady:l,logout:m,getAccessToken:a}=X(w);return{user:e,isReady:l,logout:m,getAccessToken:a}};export{w as PrivyContext,Z as PrivyProvider,A as SecureStorageAdapter,oe as hasError,$ as isConnected,re as isConnecting,ie as isCreating,te as isDisconnected,ne as isNotCreated,ee as isReconnecting,ae as needsRecovery,N as useEmbeddedWallet,be as useLinkEmail,Te as useLinkSMS,P as useLinkWithOAuth,me as useLinkWithSiwe,Re as useLoginWithEmail,M as useLoginWithOAuth,Ke as useLoginWithSMS,fe as useLoginWithSiwe,R as useOAuthFlow,Y as usePrivy,V as usePrivyClient};
|
package/dist/esm/passkey.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as y,b as m,c,d as f,i as g,k as I,l as T,m as U,n as V,o as D,p as L,q as Y,r as j}from"./chunk-
|
|
1
|
+
import{a as y,b as m,c,d as f,i as g,k as I,l as T,m as U,n as V,o as D,p as L,q as Y,r as j}from"./chunk-HMZ5E67N.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 n;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 m(y({},r),{type:(n=r.type)!=null?n:"public-key",clientExtensionResults:{}})});import{PrivyClientError as v}from"@privy-io/js-sdk-core";var C=e=>c(void 0,null,function*(){var n;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 m(y({},r),{type:(n=r.type)!=null?n:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:n,setPasskeyState:i}=W(g),k=E(o=>{var a;let u=f(o);return i({status:"error",error:u}),(a=e==null?void 0:e.onError)==null||a.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:E(u=>c(void 0,[u],function*({relyingParty:o}){var a,p,d,h,s,_,P,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:(a=t.extensions)==null?void 0:a.hmac_create_secret,credProps:(d=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:d.rk,appid:(h=t.extensions)==null?void 0:h.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:(P=t.authenticator_selection)==null?void 0:P.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 k(t)}}),[l,r,k]),state:n}};import{useCallback as K,useContext as H}from"react";import{PrivyClientError as M}from"@privy-io/js-sdk-core";var pe=e=>{let{user:l,client:r,passkeyState:n,setPasskeyState:i}=H(g),k=K(o=>{var a;let u=f(o);return i({status:"error",error:u}),(a=e==null?void 0:e.onError)==null||a.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:K(u=>c(void 0,[u],function*({relyingParty:o}){var a,p,d,h;try{if(l)throw new M({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:(a=s.extensions)==null?void 0:a.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(d=s.extensions)==null?void 0:d.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let P=yield r.auth.passkey.loginWithPasskey(m(y({},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(h=e==null?void 0:e.onSuccess)==null||h.call(e,P.user),P.user}catch(s){throw k(s)}}),[r,k]),state:n}};export{Y as hasError,I as isConnected,U as isConnecting,L as isCreating,V as isDisconnected,D as isNotCreated,T as isReconnecting,j as needsRecovery,oe as useLinkWithPasskey,pe as useLoginWithPasskey};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkTA43OUVVjs = require('./chunk-TA43OUVV.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var me=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),d=_react.useCallback.call(void 0, g=>{var r;let c=_chunkTA43OUVVjs.d.call(void 0, g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]),u=_react.useCallback.call(void 0, r=>_chunkTA43OUVVjs.c.call(void 0, void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let t=yield m.auth.siwe.linkWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t),t}catch(t){d(t)}}),[l,m,d]);return{generateSiweMessage:o,linkWithSiwe:u,state:s}};var fe=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),d=_react.useCallback.call(void 0, g=>{var r;let c=_chunkTA43OUVVjs.d.call(void 0, g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]);return{loginWithSiwe:_react.useCallback.call(void 0, r=>_chunkTA43OUVVjs.c.call(void 0, void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let t=yield m.auth.siwe.loginWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user),t.user}catch(t){d(t)}}),[l,m,d]),generateSiweMessage:o,state:s}};var be=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkTA43OUVVjs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkTA43OUVVjs.c.call(void 0, void 0,[t],function*({code:r,email:i}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let S=i||l;if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.linkWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};var Re=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkTA43OUVVjs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkTA43OUVVjs.c.call(void 0, void 0,[t],function*({code:r,email:i}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=i||l;if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.loginWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};var Te=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkTA43OUVVjs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkTA43OUVVjs.c.call(void 0, void 0,[t],function*({code:r,phone:i}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(i||l))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.linkWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};var Ke=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkTA43OUVVjs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkTA43OUVVjs.c.call(void 0, void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkTA43OUVVjs.c.call(void 0, void 0,[t],function*({code:r,phone:i}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(i||l))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.loginWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};var N=(e={})=>{let{wallet:l,createWalletCallbacks:m,recoverWalletCallbacks:a}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i),{onCreateWalletSuccess:s,onCreateWalletError:d,onRecoverWalletError:o,onRecoverWalletSuccess:u}=e;return _react.useEffect.call(void 0, ()=>{m.current={onSuccess:s,onError:d}},[s,d]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:u,onError:o}},[u,o]),l};var V=()=>{let{client:e}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i);return e};var Y=()=>{let{user:e,isReady:l,logout:m,getAccessToken:a}=_react.useContext.call(void 0, _chunkTA43OUVVjs.i);return{user:e,isReady:l,logout:m,getAccessToken:a}};exports.PrivyContext = _chunkTA43OUVVjs.i; exports.PrivyProvider = _chunkTA43OUVVjs.j; exports.SecureStorageAdapter = _chunkTA43OUVVjs.h; exports.hasError = _chunkTA43OUVVjs.q; exports.isConnected = _chunkTA43OUVVjs.k; exports.isConnecting = _chunkTA43OUVVjs.m; exports.isCreating = _chunkTA43OUVVjs.p; exports.isDisconnected = _chunkTA43OUVVjs.n; exports.isNotCreated = _chunkTA43OUVVjs.o; exports.isReconnecting = _chunkTA43OUVVjs.l; exports.needsRecovery = _chunkTA43OUVVjs.r; exports.useEmbeddedWallet = N; exports.useLinkEmail = be; exports.useLinkSMS = Te; exports.useLinkWithOAuth = _chunkTA43OUVVjs.f; exports.useLinkWithSiwe = me; exports.useLoginWithEmail = Re; exports.useLoginWithOAuth = _chunkTA43OUVVjs.e; exports.useLoginWithSMS = Ke; exports.useLoginWithSiwe = fe; exports.useOAuthFlow = _chunkTA43OUVVjs.g; exports.usePrivy = Y; exports.usePrivyClient = V;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkHMZ5E67Njs = require('./chunk-HMZ5E67N.js');var _jssdkcore = require('@privy-io/js-sdk-core'); _createStarExport(_jssdkcore);var _react = require('react');var me=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),d=_react.useCallback.call(void 0, g=>{var r;let c=_chunkHMZ5E67Njs.d.call(void 0, g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]),u=_react.useCallback.call(void 0, r=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let t=yield m.auth.siwe.linkWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t),t}catch(t){d(t)}}),[l,m,d]);return{generateSiweMessage:o,linkWithSiwe:u,state:s}};var fe=e=>{let{user:l,client:m,setSiweState:a,siweState:s}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),d=_react.useCallback.call(void 0, g=>{var r;let c=_chunkHMZ5E67Njs.d.call(void 0, g);return a({status:"error",error:c}),(r=e==null?void 0:e.onError)==null||r.call(e,c),c},[e==null?void 0:e.onError]),o=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({wallet:g,from:{domain:c,uri:r}}){var t;try{a({status:"generating-message"});let n=yield m.auth.siwe.init(g,c,r);return a({status:"awaiting-signature"}),(t=e==null?void 0:e.onGenerateMessage)==null||t.call(e,n.message),n.message}catch(n){throw d(n)}}),[m,d]);return{loginWithSiwe:_react.useCallback.call(void 0, r=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[r],function*({signature:g,messageOverride:c}){var i;try{if(l)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let t=yield m.auth.siwe.loginWithSiwe(g,void 0,c);return a({status:"done"}),(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user),t.user}catch(t){d(t)}}),[l,m,d]),generateSiweMessage:o,state:s}};var be=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkHMZ5E67Njs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[t],function*({code:r,email:i}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let S=i||l;if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.linkWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};var Re=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkHMZ5E67Njs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({email:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.email.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{email:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[t],function*({code:r,email:i}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=i||l;if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.email.loginWithCode(S,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};var Te=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkHMZ5E67Njs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[t],function*({code:r,phone:i}){var n;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(i||l))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.linkWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLinkSuccess)==null||n.call(e,k),k}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,linkWithCode:c,state:d}};var Ke=e=>{let[l,m]=_react.useState.call(void 0, ""),{user:a,client:s,otpState:d,setOtpState:o}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),u=_react.useCallback.call(void 0, r=>{var t;let i=_chunkHMZ5E67Njs.d.call(void 0, r);return o({status:"error",error:i}),(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]),g=_react.useCallback.call(void 0, i=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[i],function*({phone:r}){var t;m(r);try{o({status:"sending-code"});let n=yield s.auth.phone.sendCode(r);return o({status:"awaiting-code-input"}),(t=e==null?void 0:e.onSendCodeSuccess)==null||t.call(e,{phone:r}),n}catch(n){return u(n),{success:!1}}}),[s,u]),c=_react.useCallback.call(void 0, t=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[t],function*({code:r,phone:i}){var n;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(i||l))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});o({status:"submitting-code"});let k=yield s.auth.phone.loginWithCode(i||l,r);return o({status:"done"}),(n=e==null?void 0:e.onLoginSuccess)==null||n.call(e,k.user),k==null?void 0:k.user}catch(S){u(S)}}),[a,s,l,u]);return{sendCode:g,loginWithCode:c,state:d}};var N=(e={})=>{let{wallet:l,createWalletCallbacks:m,recoverWalletCallbacks:a}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),{onCreateWalletSuccess:s,onCreateWalletError:d,onRecoverWalletError:o,onRecoverWalletSuccess:u}=e;return _react.useEffect.call(void 0, ()=>{m.current={onSuccess:s,onError:d}},[s,d]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:u,onError:o}},[u,o]),l};var V=()=>{let{client:e}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i);return e};var Y=()=>{let{user:e,isReady:l,logout:m,getAccessToken:a}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i);return{user:e,isReady:l,logout:m,getAccessToken:a}};exports.PrivyContext = _chunkHMZ5E67Njs.i; exports.PrivyProvider = _chunkHMZ5E67Njs.j; exports.SecureStorageAdapter = _chunkHMZ5E67Njs.h; exports.hasError = _chunkHMZ5E67Njs.q; exports.isConnected = _chunkHMZ5E67Njs.k; exports.isConnecting = _chunkHMZ5E67Njs.m; exports.isCreating = _chunkHMZ5E67Njs.p; exports.isDisconnected = _chunkHMZ5E67Njs.n; exports.isNotCreated = _chunkHMZ5E67Njs.o; exports.isReconnecting = _chunkHMZ5E67Njs.l; exports.needsRecovery = _chunkHMZ5E67Njs.r; exports.useEmbeddedWallet = N; exports.useLinkEmail = be; exports.useLinkSMS = Te; exports.useLinkWithOAuth = _chunkHMZ5E67Njs.f; exports.useLinkWithSiwe = me; exports.useLoginWithEmail = Re; exports.useLoginWithOAuth = _chunkHMZ5E67Njs.e; exports.useLoginWithSMS = Ke; exports.useLoginWithSiwe = fe; exports.useOAuthFlow = _chunkHMZ5E67Njs.g; exports.usePrivy = Y; exports.usePrivyClient = V;
|
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 _chunkHMZ5E67Njs = require('./chunk-HMZ5E67N.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var w=e=>_chunkHMZ5E67Njs.c.call(void 0, void 0,null,function*(){var n;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 _chunkHMZ5E67Njs.b.call(void 0, _chunkHMZ5E67Njs.a.call(void 0, {},r),{type:(n=r.type)!=null?n:"public-key",clientExtensionResults:{}})});var C=e=>_chunkHMZ5E67Njs.c.call(void 0, void 0,null,function*(){var n;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 _chunkHMZ5E67Njs.b.call(void 0, _chunkHMZ5E67Njs.a.call(void 0, {},r),{type:(n=r.type)!=null?n:"public-key",clientExtensionResults:{}})});var oe=e=>{let{user:l,client:r,passkeyState:n,setPasskeyState:i}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),k=_react.useCallback.call(void 0, o=>{var a;let u=_chunkHMZ5E67Njs.d.call(void 0, o);return i({status:"error",error:u}),(a=e==null?void 0:e.onError)==null||a.call(e,u),u},[e==null?void 0:e.onError]);return{linkWithPasskey:_react.useCallback.call(void 0, u=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var a,p,d,h,s,_,P,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:(a=t.extensions)==null?void 0:a.hmac_create_secret,credProps:(d=(p=t.extensions)==null?void 0:p.cred_props)==null?void 0:d.rk,appid:(h=t.extensions)==null?void 0:h.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:(P=t.authenticator_selection)==null?void 0:P.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 k(t)}}),[l,r,k]),state:n}};var pe=e=>{let{user:l,client:r,passkeyState:n,setPasskeyState:i}=_react.useContext.call(void 0, _chunkHMZ5E67Njs.i),k=_react.useCallback.call(void 0, o=>{var a;let u=_chunkHMZ5E67Njs.d.call(void 0, o);return i({status:"error",error:u}),(a=e==null?void 0:e.onError)==null||a.call(e,u),u},[e==null?void 0:e.onError]);return{loginWithPasskey:_react.useCallback.call(void 0, u=>_chunkHMZ5E67Njs.c.call(void 0, void 0,[u],function*({relyingParty:o}){var a,p,d,h;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:(a=s.extensions)==null?void 0:a.app_id,credProps:(p=s.extensions)==null?void 0:p.cred_props,hmacCreateSecret:(d=s.extensions)==null?void 0:d.hmac_create_secret},timeout:s.timeout,allowCredentials:s.allow_credentials,userVerification:s.user_verification});i({status:"submitting-response"});let P=yield r.auth.passkey.loginWithPasskey(_chunkHMZ5E67Njs.b.call(void 0, _chunkHMZ5E67Njs.a.call(void 0, {},_),{clientExtensionResults:{}}),s.challenge,o);return i({status:"done"}),(h=e==null?void 0:e.onSuccess)==null||h.call(e,P.user),P.user}catch(s){throw k(s)}}),[r,k]),state:n}};exports.hasError = _chunkHMZ5E67Njs.q; exports.isConnected = _chunkHMZ5E67Njs.k; exports.isConnecting = _chunkHMZ5E67Njs.m; exports.isCreating = _chunkHMZ5E67Njs.p; exports.isDisconnected = _chunkHMZ5E67Njs.n; exports.isNotCreated = _chunkHMZ5E67Njs.o; exports.isReconnecting = _chunkHMZ5E67Njs.l; exports.needsRecovery = _chunkHMZ5E67Njs.r; exports.useLinkWithPasskey = oe; exports.useLoginWithPasskey = pe;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privy-io/expo",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Expo client for the Privy Auth API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"expo-web-browser": "*"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@privy-io/js-sdk-core": "0.15.
|
|
61
|
+
"@privy-io/js-sdk-core": "0.15.2",
|
|
62
62
|
"react-fast-compare": "^3.2.2"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|