@crossmint/client-sdk-react-native-ui 0.4.20 → 0.5.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.
Files changed (67) hide show
  1. package/dist/chunk-6R7OYJL5.cjs +1 -0
  2. package/dist/{chunk-SYFNPOWZ.js → chunk-BWWCPHLC.js} +1 -1
  3. package/dist/chunk-DUTPQ56Q.js +1 -0
  4. package/dist/chunk-EE7T3ACX.js +1 -0
  5. package/dist/chunk-FGMMPFQ2.cjs +1 -0
  6. package/dist/chunk-IETKPTNG.js +1 -0
  7. package/dist/chunk-QM2JVAWV.cjs +1 -0
  8. package/dist/chunk-UM4IINI3.cjs +1 -0
  9. package/dist/chunk-WYLNTYVI.js +1 -0
  10. package/dist/{chunk-R3KSNRO2.cjs → chunk-ZPIV7DVZ.cjs} +1 -1
  11. package/dist/hooks/index.cjs +1 -1
  12. package/dist/hooks/index.d.cts +6 -7
  13. package/dist/hooks/index.d.ts +6 -7
  14. package/dist/hooks/index.js +1 -1
  15. package/dist/hooks/useCrossmintAuth.cjs +1 -1
  16. package/dist/hooks/useCrossmintAuth.d.cts +7 -22
  17. package/dist/hooks/useCrossmintAuth.d.ts +7 -22
  18. package/dist/hooks/useCrossmintAuth.js +1 -1
  19. package/dist/hooks/useWalletEmailSigner.cjs +1 -0
  20. package/dist/hooks/useWalletEmailSigner.d.cts +9 -0
  21. package/dist/hooks/useWalletEmailSigner.d.ts +9 -0
  22. package/dist/hooks/useWalletEmailSigner.js +1 -0
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.d.cts +4 -7
  25. package/dist/index.d.ts +4 -7
  26. package/dist/index.js +1 -1
  27. package/dist/providers/CrossmintAuthProvider.cjs +1 -1
  28. package/dist/providers/CrossmintAuthProvider.d.cts +12 -12
  29. package/dist/providers/CrossmintAuthProvider.d.ts +12 -12
  30. package/dist/providers/CrossmintAuthProvider.js +1 -1
  31. package/dist/providers/CrossmintProvider.cjs +1 -1
  32. package/dist/providers/CrossmintProvider.js +1 -1
  33. package/dist/providers/CrossmintWalletProvider.cjs +1 -1
  34. package/dist/providers/CrossmintWalletProvider.d.cts +2 -5
  35. package/dist/providers/CrossmintWalletProvider.d.ts +2 -5
  36. package/dist/providers/CrossmintWalletProvider.js +1 -1
  37. package/dist/providers/index.cjs +1 -1
  38. package/dist/providers/index.d.cts +0 -2
  39. package/dist/providers/index.d.ts +0 -2
  40. package/dist/providers/index.js +1 -1
  41. package/dist/testUtils.cjs +1 -1
  42. package/dist/testUtils.js +1 -1
  43. package/dist/utils/SecureStorage.cjs +1 -1
  44. package/dist/utils/SecureStorage.js +1 -1
  45. package/package.json +7 -7
  46. package/dist/chunk-22GIA4MK.js +0 -1
  47. package/dist/chunk-CK4JCQY6.cjs +0 -1
  48. package/dist/chunk-CTP7RCPJ.cjs +0 -1
  49. package/dist/chunk-HFKH3XVQ.js +0 -17
  50. package/dist/chunk-KWIO2XXJ.cjs +0 -1
  51. package/dist/chunk-KZMAEKSM.js +0 -1
  52. package/dist/chunk-MMOOXJQF.js +0 -1
  53. package/dist/chunk-OCM4UKCZ.cjs +0 -1
  54. package/dist/chunk-PIEHDVJR.cjs +0 -17
  55. package/dist/chunk-XA3CJXOO.js +0 -1
  56. package/dist/hooks/useWallet.cjs +0 -1
  57. package/dist/hooks/useWallet.d.cts +0 -11
  58. package/dist/hooks/useWallet.d.ts +0 -11
  59. package/dist/hooks/useWallet.js +0 -1
  60. package/dist/hooks/useWalletsAuth.cjs +0 -1
  61. package/dist/hooks/useWalletsAuth.d.cts +0 -8
  62. package/dist/hooks/useWalletsAuth.d.ts +0 -8
  63. package/dist/hooks/useWalletsAuth.js +0 -1
  64. package/dist/providers/CrossmintRecoveryKeyProvider.cjs +0 -1
  65. package/dist/providers/CrossmintRecoveryKeyProvider.d.cts +0 -33
  66. package/dist/providers/CrossmintRecoveryKeyProvider.d.ts +0 -33
  67. package/dist/providers/CrossmintRecoveryKeyProvider.js +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var k=(f,g,b)=>new Promise((h,e)=>{var i=a=>{try{c(b.next(a))}catch(d){e(d)}},j=a=>{try{c(b.throw(a))}catch(d){e(d)}},c=a=>a.done?h(a.value):Promise.resolve(a.value).then(i,j);c((b=b.apply(f,g)).next())});exports.a = k;
@@ -1 +1 @@
1
- import{c as n}from"./chunk-22GIA4MK.js";import*as e from"expo-secure-store";var i=class{get(t){return n(this,null,function*(){try{let r=yield e.getItemAsync(t);if(!r)return;try{let o=JSON.parse(r);if(o.expiresAt&&new Date(o.expiresAt)<new Date){yield this.remove(t);return}return o.value}catch(o){return r}}catch(r){console.error("Error reading from SecureStore:",r);return}})}set(t,r,o){return n(this,null,function*(){try{if(o){let s=JSON.stringify({value:r,expiresAt:o});yield e.setItemAsync(t,s)}else yield e.setItemAsync(t,r)}catch(s){console.error("Error writing to SecureStore:",s)}})}remove(t){return n(this,null,function*(){try{yield e.deleteItemAsync(t)}catch(r){console.error("Error removing from SecureStore:",r)}})}isAvailable(){return n(this,null,function*(){try{return yield e.isAvailableAsync()}catch(t){return!1}})}};export{i as a};
1
+ import{a as n}from"./chunk-DUTPQ56Q.js";import*as e from"expo-secure-store";var i=class{get(t){return n(this,null,function*(){try{let r=yield e.getItemAsync(t);if(!r)return;try{let o=JSON.parse(r);if(o.expiresAt&&new Date(o.expiresAt)<new Date){yield this.remove(t);return}return o.value}catch(o){return r}}catch(r){console.error("Error reading from SecureStore:",r);return}})}set(t,r,o){return n(this,null,function*(){try{if(o){let s=JSON.stringify({value:r,expiresAt:o});yield e.setItemAsync(t,s)}else yield e.setItemAsync(t,r)}catch(s){console.error("Error writing to SecureStore:",s)}})}remove(t){return n(this,null,function*(){try{yield e.deleteItemAsync(t)}catch(r){console.error("Error removing from SecureStore:",r)}})}isAvailable(){return n(this,null,function*(){try{return yield e.isAvailableAsync()}catch(t){return!1}})}};export{i as a};
@@ -0,0 +1 @@
1
+ var k=(f,g,b)=>new Promise((h,e)=>{var i=a=>{try{c(b.next(a))}catch(d){e(d)}},j=a=>{try{c(b.throw(a))}catch(d){e(d)}},c=a=>a.done?h(a.value):Promise.resolve(a.value).then(i,j);c((b=b.apply(f,g)).next())});export{k as a};
@@ -0,0 +1 @@
1
+ import{e as w}from"./chunk-IETKPTNG.js";import{a as f}from"./chunk-DUTPQ56Q.js";import{useCallback as u,useEffect as R,useRef as v,useState as I,useMemo as M}from"react";import{View as L}from"react-native";import{RNWebView as N,WebViewParent as O}from"@crossmint/client-sdk-rn-window";import{signerInboundEvents as U,signerOutboundEvents as A}from"@crossmint/client-signers";import{CrossmintWalletProvider as H}from"@crossmint/client-sdk-react-base";import{validateAPIKey as $}from"@crossmint/common-sdk-base";import{jsx as W,jsxs as S}from"react/jsx-runtime";var b="https://signers.crossmint.com";function z({children:h}){let{crossmint:g}=w("CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:P,appId:l}=g,p=$(P);if(!p.isValid)throw new Error("Invalid API key");let E=`${b}/?environment=${p.environment}`,c=v(null),r=v(null),[m,s]=I(!1),y=M(()=>l!=null?`window.crossmintAppId = '${l}';`:"",[l]);R(()=>{c.current!=null&&r.current==null&&(r.current=new O(c,{incomingEvents:A,outgoingEvents:U}))},[]);let C=u(()=>f(this,null,function*(){let e=r.current;if(e!=null)try{yield e.handshakeWithChild(),s(!0)}catch(i){console.error("[CrossmintWalletProvider] Handshake error:",i),s(!1)}}),[]),V=u(e=>{console.log("[CrossmintWalletProvider] Received message:",e.nativeEvent.data);let i=r.current;if(i!=null){try{let o=JSON.parse(e.nativeEvent.data);if(o&&typeof o.type=="string"&&o.type.startsWith("console.")){let d=o.type.split(".")[1],n=(o.data||[]).map(t=>{try{return t==="[Function]"||t==="[Circular Reference]"||t==="[Unserializable Object]"?t:JSON.parse(t)}catch(T){return t}}),a=`[WebView:${d.toUpperCase()}]`;switch(d){case"log":console.log(a,...n);break;case"error":console.error(a,...n);break;case"warn":console.warn(a,...n);break;case"info":console.info(a,...n);break;default:console.log(`[WebView Unknown:${d}]`,...n)}return}}catch(o){}i.handleMessage(e)}},[]),k=u(()=>{if(!m||r.current==null)throw new Error("WebView not ready or handshake incomplete");return r.current},[m]);return S(H,{getHandshakeParent:k,children:[h,W(L,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:W(N,{ref:c,source:{uri:E},injectedGlobals:y,onLoadStart:e=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",e.nativeEvent.url)},onLoadEnd:C,onLoadProgress:({nativeEvent:e})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",e.progress)},onMessage:V,onError:e=>{console.error("[CrossmintWalletProvider] WebView error:",e.nativeEvent),s(!1)},onHttpError:e=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",e.nativeEvent),s(!1)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[b]})})]})}export{z as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUM4IINI3cjs = require('./chunk-UM4IINI3.cjs');var _chunk6R7OYJL5cjs = require('./chunk-6R7OYJL5.cjs');var _react = require('react');var _reactnative = require('react-native');var _clientsdkrnwindow = require('@crossmint/client-sdk-rn-window');var _clientsigners = require('@crossmint/client-signers');var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');var _commonsdkbase = require('@crossmint/common-sdk-base');var _jsxruntime = require('react/jsx-runtime');var b="https://signers.crossmint.com";function J({children:h}){let{crossmint:g}=_chunkUM4IINI3cjs.e.call(void 0, "CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:P,appId:l}=g,p=_commonsdkbase.validateAPIKey.call(void 0, P);if(!p.isValid)throw new Error("Invalid API key");let E=`${b}/?environment=${p.environment}`,c=_react.useRef.call(void 0, null),r=_react.useRef.call(void 0, null),[m,s]=_react.useState.call(void 0, !1),y=_react.useMemo.call(void 0, ()=>l!=null?`window.crossmintAppId = '${l}';`:"",[l]);_react.useEffect.call(void 0, ()=>{c.current!=null&&r.current==null&&(r.current=new (0, _clientsdkrnwindow.WebViewParent)(c,{incomingEvents:_clientsigners.signerOutboundEvents,outgoingEvents:_clientsigners.signerInboundEvents}))},[]);let C=_react.useCallback.call(void 0, ()=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){let e=r.current;if(e!=null)try{yield e.handshakeWithChild(),s(!0)}catch(i){console.error("[CrossmintWalletProvider] Handshake error:",i),s(!1)}}),[]),V=_react.useCallback.call(void 0, e=>{console.log("[CrossmintWalletProvider] Received message:",e.nativeEvent.data);let i=r.current;if(i!=null){try{let o=JSON.parse(e.nativeEvent.data);if(o&&typeof o.type=="string"&&o.type.startsWith("console.")){let d=o.type.split(".")[1],n=(o.data||[]).map(t=>{try{return t==="[Function]"||t==="[Circular Reference]"||t==="[Unserializable Object]"?t:JSON.parse(t)}catch(T){return t}}),a=`[WebView:${d.toUpperCase()}]`;switch(d){case"log":console.log(a,...n);break;case"error":console.error(a,...n);break;case"warn":console.warn(a,...n);break;case"info":console.info(a,...n);break;default:console.log(`[WebView Unknown:${d}]`,...n)}return}}catch(o){}i.handleMessage(e)}},[]),k=_react.useCallback.call(void 0, ()=>{if(!m||r.current==null)throw new Error("WebView not ready or handshake incomplete");return r.current},[m]);return _jsxruntime.jsxs.call(void 0, _clientsdkreactbase.CrossmintWalletProvider,{getHandshakeParent:k,children:[h,_jsxruntime.jsx.call(void 0, _reactnative.View,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:_jsxruntime.jsx.call(void 0, _clientsdkrnwindow.RNWebView,{ref:c,source:{uri:E},injectedGlobals:y,onLoadStart:e=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",e.nativeEvent.url)},onLoadEnd:C,onLoadProgress:({nativeEvent:e})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",e.progress)},onMessage:V,onError:e=>{console.error("[CrossmintWalletProvider] WebView error:",e.nativeEvent),s(!1)},onHttpError:e=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",e.nativeEvent),s(!1)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[b]})})]})}exports.a = J;
@@ -0,0 +1 @@
1
+ import{a as W}from"./chunk-BWWCPHLC.js";import{a as c}from"./chunk-DUTPQ56Q.js";import{createContext as q,useEffect as U,useMemo as k,useRef as L,useState as A,useCallback as P}from"react";import*as i from"expo-web-browser";import{CrossmintAuth as Q}from"@crossmint/client-sdk-auth";import{SESSION_PREFIX as Y}from"@crossmint/common-sdk-auth";import{useCrossmint as z,useWallet as pt}from"@crossmint/client-sdk-react-base";import{useContext as B}from"react";function st(){let o=B(d);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function it(){let o=B(d);if(!o)throw new Error("useAuth must be used within a CrossmintAuthProvider");return o}import{Platform as Z}from"react-native";import v from"expo-constants";import{jsx as et}from"react/jsx-runtime";var D={google:null,twitter:null},$={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},d=q($);function Ut({children:o,onLoginSuccess:u,refreshRoute:h,logoutRoute:O,customStorageProvider:p,appSchema:g}){let[f,w]=A(void 0),{crossmint:n,setJwt:S,experimental_setAuth:y}=z("CrossmintAuthProvider must be used within CrossmintProvider"),[_,F]=A(D),x=L(null),a=k(()=>p!=null?p:new W,[p]),[K,b]=A(!1),[N,C]=A(!1),G=Array.isArray(g)?g[0]:g,R=v.executionEnvironment==="storeClient"||v.appOwnership==="expo"||!!v.expoVersion?"exp://127.0.0.1:8081":G,r=k(()=>{if(!x.current){let t={callbacks:{onLogout:()=>{y(void 0),w(void 0)},onTokenRefresh:e=>{w(e.user),y({email:e.user.email,jwt:e.jwt})}},refreshRoute:h,logoutRoute:O,storageProvider:a};x.current=Q.from(n,t)}return x.current},[a]),M=P(()=>{u==null||u()},[u]);U(()=>{n.jwt==null?a==null||a.get(Y).then(t=>{t!=null&&S(t)}).finally(()=>{b(!0)}):b(!0)},[n.jwt,S,a]),U(()=>{n.jwt!=null&&M()},[n.jwt,M]);let J=()=>{r.logout()},j=P(()=>c(this,null,function*(){try{let e=Object.keys(D).map(l=>c(this,null,function*(){let m=yield r==null?void 0:r.getOAuthUrl(l,{appSchema:R});return{[l]:m}})),s=Object.assign({},...yield Promise.all(e));F(s)}catch(t){console.error(t)}}),[r]);U(()=>{f==null&&j()},[j,f]);let V=()=>K?N?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",H=()=>c(this,null,function*(){if(n.jwt==null){console.log("User not logged in");return}let t=yield r.getUser();return w(t),y(t),t}),X=t=>c(this,null,function*(){var e;try{C(!0);let s=(e=_[t])!=null?e:yield r.getOAuthUrl(t,{appSchema:R});yield i.warmUpAsync();let l=new URL(s);if(t==="google"&&l.searchParams.append("provider_prompt","select_account"),Z.OS==="android")yield i.openBrowserAsync(l.toString());else{let m=yield i.openAuthSessionAsync(l.toString());m.type==="success"&&(yield E(m.url))}yield i.coolDownAsync()}catch(s){console.error("[CrossmintAuthProvider] Error during OAuth login:",s)}}),E=P(t=>c(this,null,function*(){let e=t.includes("://")?tt(t):t;if(e!=null)try{return C(!0),yield r.handleRefreshAuthMaterial(e)}catch(s){throw s}finally{C(!1)}return null}),[r]);return et(d.Provider,{value:{crossmintAuth:r,logout:J,jwt:n.jwt,user:f,status:V(),getUser:H,loginWithOAuth:X,createAuthSession:E},children:o})}var tt=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,h=o.match(u);return h?decodeURIComponent(h[1]):void 0};export{d as a,Ut as b,st as c,it as d,z as e,pt as f};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');var _react = require('react');function l(){let e=_react.useContext.call(void 0, _clientsdkreactbase.WalletContext);if(e==null)throw new Error("useWalletEmailSigner must be used within CrossmintWalletProvider");if(!e.sendEmailWithOtp||!e.verifyOtp||!e.reject)throw new Error("Email signer functions are not available. Make sure you're using an email signer wallet.");return{needsAuth:e.needsAuth,sendEmailWithOtp:e.sendEmailWithOtp,verifyOtp:e.verifyOtp,reject:e.reject}}exports.a = l;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkZPIV7DVZcjs = require('./chunk-ZPIV7DVZ.cjs');var _chunk6R7OYJL5cjs = require('./chunk-6R7OYJL5.cjs');var _react = require('react');var _expowebbrowser = require('expo-web-browser'); var i = _interopRequireWildcard(_expowebbrowser);var _clientsdkauth = require('@crossmint/client-sdk-auth');var _commonsdkauth = require('@crossmint/common-sdk-auth');var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');function nt(){let o=_react.useContext.call(void 0, d);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function st(){let o=_react.useContext.call(void 0, d);if(!o)throw new Error("useAuth must be used within a CrossmintAuthProvider");return o}var _reactnative = require('react-native');var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);var _jsxruntime = require('react/jsx-runtime');var k={google:null,twitter:null},Z={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},d= exports.a =_react.createContext.call(void 0, Z);function Ct({children:o,onLoginSuccess:u,refreshRoute:h,logoutRoute:O,customStorageProvider:p,appSchema:g}){let[f,w]=_react.useState.call(void 0, void 0),{crossmint:n,setJwt:S,experimental_setAuth:y}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[D,_]=_react.useState.call(void 0, k),x=_react.useRef.call(void 0, null),a=_react.useMemo.call(void 0, ()=>p!=null?p:new _chunkZPIV7DVZcjs.a,[p]),[F,b]=_react.useState.call(void 0, !1),[K,C]=_react.useState.call(void 0, !1),N=Array.isArray(g)?g[0]:g,R=_expoconstants2.default.executionEnvironment==="storeClient"||_expoconstants2.default.appOwnership==="expo"||!!_expoconstants2.default.expoVersion?"exp://127.0.0.1:8081":N,r=_react.useMemo.call(void 0, ()=>{if(!x.current){let t={callbacks:{onLogout:()=>{y(void 0),w(void 0)},onTokenRefresh:e=>{w(e.user),y({email:e.user.email,jwt:e.jwt})}},refreshRoute:h,logoutRoute:O,storageProvider:a};x.current=_clientsdkauth.CrossmintAuth.from(n,t)}return x.current},[a]),M=_react.useCallback.call(void 0, ()=>{u==null||u()},[u]);_react.useEffect.call(void 0, ()=>{n.jwt==null?a==null||a.get(_commonsdkauth.SESSION_PREFIX).then(t=>{t!=null&&S(t)}).finally(()=>{b(!0)}):b(!0)},[n.jwt,S,a]),_react.useEffect.call(void 0, ()=>{n.jwt!=null&&M()},[n.jwt,M]);let G=()=>{r.logout()},j=_react.useCallback.call(void 0, ()=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{let e=Object.keys(k).map(l=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){let m=yield r==null?void 0:r.getOAuthUrl(l,{appSchema:R});return{[l]:m}})),s=Object.assign({},...yield Promise.all(e));_(s)}catch(t){console.error(t)}}),[r]);_react.useEffect.call(void 0, ()=>{f==null&&j()},[j,f]);let J=()=>F?K?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",V=()=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){if(n.jwt==null){console.log("User not logged in");return}let t=yield r.getUser();return w(t),y(t),t}),H=t=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){var e;try{C(!0);let s=(e=D[t])!=null?e:yield r.getOAuthUrl(t,{appSchema:R});yield i.warmUpAsync();let l=new URL(s);if(t==="google"&&l.searchParams.append("provider_prompt","select_account"),_reactnative.Platform.OS==="android")yield i.openBrowserAsync(l.toString());else{let m=yield i.openAuthSessionAsync(l.toString());m.type==="success"&&(yield E(m.url))}yield i.coolDownAsync()}catch(s){console.error("[CrossmintAuthProvider] Error during OAuth login:",s)}}),E=_react.useCallback.call(void 0, t=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){let e=t.includes("://")?$(t):t;if(e!=null)try{return C(!0),yield r.handleRefreshAuthMaterial(e)}catch(s){throw s}finally{C(!1)}return null}),[r]);return _jsxruntime.jsx.call(void 0, d.Provider,{value:{crossmintAuth:r,logout:G,jwt:n.jwt,user:f,status:J(),getUser:V,loginWithOAuth:H,createAuthSession:E},children:o})}var $=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,h=o.match(u);return h?decodeURIComponent(h[1]):void 0};exports.a = d; exports.b = Ct; exports.c = nt; exports.d = st; exports.e = _clientsdkreactbase.useCrossmint; exports.f = _clientsdkreactbase.useWallet;
@@ -0,0 +1 @@
1
+ import{WalletContext as t}from"@crossmint/client-sdk-react-base";import{useContext as r}from"react";function s(){let e=r(t);if(e==null)throw new Error("useWalletEmailSigner must be used within CrossmintWalletProvider");if(!e.sendEmailWithOtp||!e.verifyOtp||!e.reject)throw new Error("Email signer functions are not available. Make sure you're using an email signer wallet.");return{needsAuth:e.needsAuth,sendEmailWithOtp:e.sendEmailWithOtp,verifyOtp:e.verifyOtp,reject:e.reject}}export{s as a};
@@ -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 _chunkCK4JCQY6cjs = require('./chunk-CK4JCQY6.cjs');var _exposecurestore = require('expo-secure-store'); var e = _interopRequireWildcard(_exposecurestore);var i=class{get(t){return _chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){try{let r=yield e.getItemAsync(t);if(!r)return;try{let o=JSON.parse(r);if(o.expiresAt&&new Date(o.expiresAt)<new Date){yield this.remove(t);return}return o.value}catch(o){return r}}catch(r){console.error("Error reading from SecureStore:",r);return}})}set(t,r,o){return _chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){try{if(o){let s=JSON.stringify({value:r,expiresAt:o});yield e.setItemAsync(t,s)}else yield e.setItemAsync(t,r)}catch(s){console.error("Error writing to SecureStore:",s)}})}remove(t){return _chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){try{yield e.deleteItemAsync(t)}catch(r){console.error("Error removing from SecureStore:",r)}})}isAvailable(){return _chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){try{return yield e.isAvailableAsync()}catch(t){return!1}})}};exports.a = i;
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 _chunk6R7OYJL5cjs = require('./chunk-6R7OYJL5.cjs');var _exposecurestore = require('expo-secure-store'); var e = _interopRequireWildcard(_exposecurestore);var i=class{get(t){return _chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{let r=yield e.getItemAsync(t);if(!r)return;try{let o=JSON.parse(r);if(o.expiresAt&&new Date(o.expiresAt)<new Date){yield this.remove(t);return}return o.value}catch(o){return r}}catch(r){console.error("Error reading from SecureStore:",r);return}})}set(t,r,o){return _chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{if(o){let s=JSON.stringify({value:r,expiresAt:o});yield e.setItemAsync(t,s)}else yield e.setItemAsync(t,r)}catch(s){console.error("Error writing to SecureStore:",s)}})}remove(t){return _chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{yield e.deleteItemAsync(t)}catch(r){console.error("Error removing from SecureStore:",r)}})}isAvailable(){return _chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{return yield e.isAvailableAsync()}catch(t){return!1}})}};exports.a = i;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOCM4UKCZcjs = require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');var _chunkKWIO2XXJcjs = require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.WalletContext = _chunkKWIO2XXJcjs.a; exports.useAuth = _chunkOCM4UKCZcjs.d; exports.useCrossmint = _chunkOCM4UKCZcjs.e; exports.useCrossmintAuth = _chunkOCM4UKCZcjs.c; exports.useWallet = _chunkKWIO2XXJcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUM4IINI3cjs = require('../chunk-UM4IINI3.cjs');require('../chunk-ZPIV7DVZ.cjs');var _chunkQM2JVAWVcjs = require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useAuth = _chunkUM4IINI3cjs.d; exports.useCrossmint = _chunkUM4IINI3cjs.e; exports.useCrossmintAuth = _chunkUM4IINI3cjs.c; exports.useWallet = _chunkUM4IINI3cjs.f; exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
@@ -1,9 +1,8 @@
1
- export { useCrossmint } from '@crossmint/client-sdk-react-base';
1
+ export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './useCrossmintAuth.cjs';
3
- export { ReactNativeWalletContextState, WalletContext, useWallet } from './useWallet.cjs';
4
- import '@crossmint/common-sdk-auth';
5
- import '@crossmint/client-sdk-auth';
6
- import 'react';
7
- import '../providers/CrossmintRecoveryKeyProvider.cjs';
3
+ export { EmailSignerFunctions, useWalletEmailSigner } from './useWalletEmailSigner.cjs';
4
+ import '../providers/CrossmintAuthProvider.cjs';
8
5
  import 'react/jsx-runtime';
9
- import '@solana/web3.js';
6
+ import 'react';
7
+ import '@crossmint/client-sdk-auth';
8
+ import '@crossmint/common-sdk-auth';
@@ -1,9 +1,8 @@
1
- export { useCrossmint } from '@crossmint/client-sdk-react-base';
1
+ export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './useCrossmintAuth.js';
3
- export { ReactNativeWalletContextState, WalletContext, useWallet } from './useWallet.js';
4
- import '@crossmint/common-sdk-auth';
5
- import '@crossmint/client-sdk-auth';
6
- import 'react';
7
- import '../providers/CrossmintRecoveryKeyProvider.js';
3
+ export { EmailSignerFunctions, useWalletEmailSigner } from './useWalletEmailSigner.js';
4
+ import '../providers/CrossmintAuthProvider.js';
8
5
  import 'react/jsx-runtime';
9
- import '@solana/web3.js';
6
+ import 'react';
7
+ import '@crossmint/client-sdk-auth';
8
+ import '@crossmint/common-sdk-auth';
@@ -1 +1 @@
1
- import{c as a,d as b,e}from"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import{a as c,b as d}from"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{c as WalletContext,b as useAuth,e as useCrossmint,a as useCrossmintAuth,d as useWallet};
1
+ import{c as a,d as b,e as d,f as e}from"../chunk-IETKPTNG.js";import"../chunk-BWWCPHLC.js";import{a as c}from"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{b as useAuth,d as useCrossmint,a as useCrossmintAuth,e as useWallet,c as useWalletEmailSigner};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOCM4UKCZcjs = require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.useAuth = _chunkOCM4UKCZcjs.d; exports.useCrossmintAuth = _chunkOCM4UKCZcjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUM4IINI3cjs = require('../chunk-UM4IINI3.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useAuth = _chunkUM4IINI3cjs.d; exports.useCrossmintAuth = _chunkUM4IINI3cjs.c;
@@ -1,25 +1,10 @@
1
- import * as _crossmint_common_sdk_auth from '@crossmint/common-sdk-auth';
2
- import * as _crossmint_client_sdk_auth from '@crossmint/client-sdk-auth';
1
+ import { AuthContextType } from '../providers/CrossmintAuthProvider.cjs';
2
+ import 'react/jsx-runtime';
3
+ import 'react';
4
+ import '@crossmint/client-sdk-auth';
5
+ import '@crossmint/common-sdk-auth';
3
6
 
4
- declare function useCrossmintAuth(): {
5
- crossmintAuth?: _crossmint_client_sdk_auth.CrossmintAuth;
6
- logout: () => void;
7
- jwt?: string;
8
- user?: _crossmint_common_sdk_auth.SDKExternalUser;
9
- status: "logged-in" | "logged-out" | "in-progress" | "initializing";
10
- getUser: () => void;
11
- loginWithOAuth: (provider: _crossmint_common_sdk_auth.OAuthProvider) => Promise<void>;
12
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<_crossmint_common_sdk_auth.AuthMaterialWithUser | null>;
13
- };
14
- declare function useAuth(): {
15
- crossmintAuth?: _crossmint_client_sdk_auth.CrossmintAuth;
16
- logout: () => void;
17
- jwt?: string;
18
- user?: _crossmint_common_sdk_auth.SDKExternalUser;
19
- status: "logged-in" | "logged-out" | "in-progress" | "initializing";
20
- getUser: () => void;
21
- loginWithOAuth: (provider: _crossmint_common_sdk_auth.OAuthProvider) => Promise<void>;
22
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<_crossmint_common_sdk_auth.AuthMaterialWithUser | null>;
23
- };
7
+ declare function useCrossmintAuth(): AuthContextType;
8
+ declare function useAuth(): AuthContextType;
24
9
 
25
10
  export { useAuth, useCrossmintAuth };
@@ -1,25 +1,10 @@
1
- import * as _crossmint_common_sdk_auth from '@crossmint/common-sdk-auth';
2
- import * as _crossmint_client_sdk_auth from '@crossmint/client-sdk-auth';
1
+ import { AuthContextType } from '../providers/CrossmintAuthProvider.js';
2
+ import 'react/jsx-runtime';
3
+ import 'react';
4
+ import '@crossmint/client-sdk-auth';
5
+ import '@crossmint/common-sdk-auth';
3
6
 
4
- declare function useCrossmintAuth(): {
5
- crossmintAuth?: _crossmint_client_sdk_auth.CrossmintAuth;
6
- logout: () => void;
7
- jwt?: string;
8
- user?: _crossmint_common_sdk_auth.SDKExternalUser;
9
- status: "logged-in" | "logged-out" | "in-progress" | "initializing";
10
- getUser: () => void;
11
- loginWithOAuth: (provider: _crossmint_common_sdk_auth.OAuthProvider) => Promise<void>;
12
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<_crossmint_common_sdk_auth.AuthMaterialWithUser | null>;
13
- };
14
- declare function useAuth(): {
15
- crossmintAuth?: _crossmint_client_sdk_auth.CrossmintAuth;
16
- logout: () => void;
17
- jwt?: string;
18
- user?: _crossmint_common_sdk_auth.SDKExternalUser;
19
- status: "logged-in" | "logged-out" | "in-progress" | "initializing";
20
- getUser: () => void;
21
- loginWithOAuth: (provider: _crossmint_common_sdk_auth.OAuthProvider) => Promise<void>;
22
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<_crossmint_common_sdk_auth.AuthMaterialWithUser | null>;
23
- };
7
+ declare function useCrossmintAuth(): AuthContextType;
8
+ declare function useAuth(): AuthContextType;
24
9
 
25
10
  export { useAuth, useCrossmintAuth };
@@ -1 +1 @@
1
- import{c as a,d as b}from"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{b as useAuth,a as useCrossmintAuth};
1
+ import{c as a,d as b}from"../chunk-IETKPTNG.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{b as useAuth,a as useCrossmintAuth};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQM2JVAWVcjs = require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
@@ -0,0 +1,9 @@
1
+ type EmailSignerFunctions = {
2
+ needsAuth: boolean;
3
+ sendEmailWithOtp: () => Promise<void>;
4
+ verifyOtp: (otp: string) => Promise<void>;
5
+ reject: (error: Error) => void;
6
+ };
7
+ declare function useWalletEmailSigner(): EmailSignerFunctions;
8
+
9
+ export { type EmailSignerFunctions, useWalletEmailSigner };
@@ -0,0 +1,9 @@
1
+ type EmailSignerFunctions = {
2
+ needsAuth: boolean;
3
+ sendEmailWithOtp: () => Promise<void>;
4
+ verifyOtp: (otp: string) => Promise<void>;
5
+ reject: (error: Error) => void;
6
+ };
7
+ declare function useWalletEmailSigner(): EmailSignerFunctions;
8
+
9
+ export { type EmailSignerFunctions, useWalletEmailSigner };
@@ -0,0 +1 @@
1
+ import{a}from"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as useWalletEmailSigner};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-ZR6BLDCD.cjs');var _chunkCTP7RCPJcjs = require('./chunk-CTP7RCPJ.cjs');require('./chunk-PIEHDVJR.cjs');var _chunkOCM4UKCZcjs = require('./chunk-OCM4UKCZ.cjs');require('./chunk-R3KSNRO2.cjs');var _chunkKWIO2XXJcjs = require('./chunk-KWIO2XXJ.cjs');var _chunk4L2OHRE5cjs = require('./chunk-4L2OHRE5.cjs');require('./chunk-CK4JCQY6.cjs');exports.CrossmintAuthProvider = _chunkOCM4UKCZcjs.b; exports.CrossmintProvider = _chunk4L2OHRE5cjs.a; exports.CrossmintWalletProvider = _chunkCTP7RCPJcjs.a; exports.WalletContext = _chunkKWIO2XXJcjs.a; exports.useAuth = _chunkOCM4UKCZcjs.d; exports.useCrossmint = _chunkOCM4UKCZcjs.e; exports.useCrossmintAuth = _chunkOCM4UKCZcjs.c; exports.useWallet = _chunkKWIO2XXJcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-ZR6BLDCD.cjs');var _chunk4L2OHRE5cjs = require('./chunk-4L2OHRE5.cjs');var _chunkFGMMPFQ2cjs = require('./chunk-FGMMPFQ2.cjs');var _chunkUM4IINI3cjs = require('./chunk-UM4IINI3.cjs');require('./chunk-ZPIV7DVZ.cjs');var _chunkQM2JVAWVcjs = require('./chunk-QM2JVAWV.cjs');require('./chunk-6R7OYJL5.cjs');exports.CrossmintAuthProvider = _chunkUM4IINI3cjs.b; exports.CrossmintProvider = _chunk4L2OHRE5cjs.a; exports.CrossmintWalletProvider = _chunkFGMMPFQ2cjs.a; exports.useAuth = _chunkUM4IINI3cjs.d; exports.useCrossmint = _chunkUM4IINI3cjs.e; exports.useCrossmintAuth = _chunkUM4IINI3cjs.c; exports.useWallet = _chunkUM4IINI3cjs.f; exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
package/dist/index.d.cts CHANGED
@@ -1,15 +1,12 @@
1
- export { useCrossmint } from '@crossmint/client-sdk-react-base';
1
+ export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './hooks/useCrossmintAuth.cjs';
3
- export { ReactNativeWalletContextState, WalletContext, useWallet } from './hooks/useWallet.cjs';
3
+ export { EmailSignerFunctions, useWalletEmailSigner } from './hooks/useWalletEmailSigner.cjs';
4
4
  export { CrossmintProvider } from './providers/CrossmintProvider.cjs';
5
5
  export { CrossmintAuthProvider } from './providers/CrossmintAuthProvider.cjs';
6
6
  export { CrossmintWalletProvider } from './providers/CrossmintWalletProvider.cjs';
7
- export { DelegatedSigner, EVMSmartWallet, SolanaSmartWallet, WalletBalance } from '@crossmint/wallets-sdk';
8
7
  export { CrossmintEvent, CrossmintEventMap } from '@crossmint/client-sdk-base';
9
8
  export { OAuthProvider, SDKExternalUser } from '@crossmint/common-sdk-auth';
10
- import '@crossmint/client-sdk-auth';
11
- import 'react';
12
- import './providers/CrossmintRecoveryKeyProvider.cjs';
13
9
  import 'react/jsx-runtime';
14
- import '@solana/web3.js';
10
+ import 'react';
15
11
  import '@crossmint/common-sdk-base';
12
+ import '@crossmint/client-sdk-auth';
package/dist/index.d.ts CHANGED
@@ -1,15 +1,12 @@
1
- export { useCrossmint } from '@crossmint/client-sdk-react-base';
1
+ export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './hooks/useCrossmintAuth.js';
3
- export { ReactNativeWalletContextState, WalletContext, useWallet } from './hooks/useWallet.js';
3
+ export { EmailSignerFunctions, useWalletEmailSigner } from './hooks/useWalletEmailSigner.js';
4
4
  export { CrossmintProvider } from './providers/CrossmintProvider.js';
5
5
  export { CrossmintAuthProvider } from './providers/CrossmintAuthProvider.js';
6
6
  export { CrossmintWalletProvider } from './providers/CrossmintWalletProvider.js';
7
- export { DelegatedSigner, EVMSmartWallet, SolanaSmartWallet, WalletBalance } from '@crossmint/wallets-sdk';
8
7
  export { CrossmintEvent, CrossmintEventMap } from '@crossmint/client-sdk-base';
9
8
  export { OAuthProvider, SDKExternalUser } from '@crossmint/common-sdk-auth';
10
- import '@crossmint/client-sdk-auth';
11
- import 'react';
12
- import './providers/CrossmintRecoveryKeyProvider.js';
13
9
  import 'react/jsx-runtime';
14
- import '@solana/web3.js';
10
+ import 'react';
15
11
  import '@crossmint/common-sdk-base';
12
+ import '@crossmint/client-sdk-auth';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-C62HRWJA.js";import{a as l}from"./chunk-MMOOXJQF.js";import"./chunk-HFKH3XVQ.js";import{b as t,c as e,d as r,e as a}from"./chunk-XA3CJXOO.js";import"./chunk-SYFNPOWZ.js";import{a as o,b as s}from"./chunk-KZMAEKSM.js";import{a as m}from"./chunk-I52CP62R.js";import"./chunk-22GIA4MK.js";export{t as CrossmintAuthProvider,m as CrossmintProvider,l as CrossmintWalletProvider,o as WalletContext,r as useAuth,a as useCrossmint,e as useCrossmintAuth,s as useWallet};
1
+ import"./chunk-C62HRWJA.js";import{a as n}from"./chunk-I52CP62R.js";import{a as p}from"./chunk-EE7T3ACX.js";import{b as r,c as t,d as o,e as s,f as m}from"./chunk-IETKPTNG.js";import"./chunk-BWWCPHLC.js";import{a as e}from"./chunk-WYLNTYVI.js";import"./chunk-DUTPQ56Q.js";export{r as CrossmintAuthProvider,n as CrossmintProvider,p as CrossmintWalletProvider,o as useAuth,s as useCrossmint,t as useCrossmintAuth,m as useWallet,e as useWalletEmailSigner};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOCM4UKCZcjs = require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.AuthContext = _chunkOCM4UKCZcjs.a; exports.CrossmintAuthProvider = _chunkOCM4UKCZcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUM4IINI3cjs = require('../chunk-UM4IINI3.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.AuthContext = _chunkUM4IINI3cjs.a; exports.CrossmintAuthProvider = _chunkUM4IINI3cjs.b;
@@ -1,20 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
- import { StorageProvider, CrossmintAuth } from '@crossmint/client-sdk-auth';
4
+ import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
5
  import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
6
6
 
7
7
  type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
- type CrossmintAuthProviderProps = {
9
- prefetchOAuthUrls?: boolean;
10
- onLoginSuccess?: () => void;
11
- authModalTitle?: string;
12
- children: ReactNode;
13
- refreshRoute?: string;
14
- logoutRoute?: string;
15
- customStorageProvider?: StorageProvider;
16
- appSchema?: string | string[];
17
- };
18
8
  type AuthContextType = {
19
9
  crossmintAuth?: CrossmintAuth;
20
10
  logout: () => void;
@@ -25,7 +15,17 @@ type AuthContextType = {
25
15
  loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
26
16
  createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
27
17
  };
18
+ type CrossmintAuthProviderProps = {
19
+ prefetchOAuthUrls?: boolean;
20
+ onLoginSuccess?: () => void;
21
+ authModalTitle?: string;
22
+ children: ReactNode;
23
+ refreshRoute?: string;
24
+ logoutRoute?: string;
25
+ customStorageProvider?: StorageProvider;
26
+ appSchema?: string | string[];
27
+ };
28
28
  declare const AuthContext: react.Context<AuthContextType>;
29
29
  declare function CrossmintAuthProvider({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
30
 
31
- export { AuthContext, CrossmintAuthProvider };
31
+ export { AuthContext, type AuthContextType, CrossmintAuthProvider };
@@ -1,20 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
- import { StorageProvider, CrossmintAuth } from '@crossmint/client-sdk-auth';
4
+ import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
5
  import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
6
6
 
7
7
  type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
- type CrossmintAuthProviderProps = {
9
- prefetchOAuthUrls?: boolean;
10
- onLoginSuccess?: () => void;
11
- authModalTitle?: string;
12
- children: ReactNode;
13
- refreshRoute?: string;
14
- logoutRoute?: string;
15
- customStorageProvider?: StorageProvider;
16
- appSchema?: string | string[];
17
- };
18
8
  type AuthContextType = {
19
9
  crossmintAuth?: CrossmintAuth;
20
10
  logout: () => void;
@@ -25,7 +15,17 @@ type AuthContextType = {
25
15
  loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
26
16
  createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
27
17
  };
18
+ type CrossmintAuthProviderProps = {
19
+ prefetchOAuthUrls?: boolean;
20
+ onLoginSuccess?: () => void;
21
+ authModalTitle?: string;
22
+ children: ReactNode;
23
+ refreshRoute?: string;
24
+ logoutRoute?: string;
25
+ customStorageProvider?: StorageProvider;
26
+ appSchema?: string | string[];
27
+ };
28
28
  declare const AuthContext: react.Context<AuthContextType>;
29
29
  declare function CrossmintAuthProvider({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
30
 
31
- export { AuthContext, CrossmintAuthProvider };
31
+ export { AuthContext, type AuthContextType, CrossmintAuthProvider };
@@ -1 +1 @@
1
- import{a,b}from"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{a as AuthContext,b as CrossmintAuthProvider};
1
+ import{a,b}from"../chunk-IETKPTNG.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as AuthContext,b as CrossmintAuthProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk4L2OHRE5cjs = require('../chunk-4L2OHRE5.cjs');require('../chunk-CK4JCQY6.cjs');exports.CrossmintProvider = _chunk4L2OHRE5cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk4L2OHRE5cjs = require('../chunk-4L2OHRE5.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintProvider = _chunk4L2OHRE5cjs.a;
@@ -1 +1 @@
1
- import{a}from"../chunk-I52CP62R.js";import"../chunk-22GIA4MK.js";export{a as CrossmintProvider};
1
+ import{a}from"../chunk-I52CP62R.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkCTP7RCPJcjs = require('../chunk-CTP7RCPJ.cjs');require('../chunk-PIEHDVJR.cjs');require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.CrossmintWalletProvider = _chunkCTP7RCPJcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkFGMMPFQ2cjs = require('../chunk-FGMMPFQ2.cjs');require('../chunk-UM4IINI3.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintWalletProvider = _chunkFGMMPFQ2cjs.a;
@@ -1,12 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { CrossmintRecoveryKeyProviderProps } from './CrossmintRecoveryKeyProvider.cjs';
4
- import '@solana/web3.js';
5
3
 
6
- interface CrossmintWalletProviderProps extends Omit<CrossmintRecoveryKeyProviderProps, "children"> {
4
+ interface CrossmintWalletProviderProps {
7
5
  children: ReactNode;
8
- experimental_enableRecoveryKeys?: boolean;
9
6
  }
10
- declare function CrossmintWalletProvider({ children, experimental_enableRecoveryKeys, experimental_secureEndpointUrl, }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
7
+ declare function CrossmintWalletProvider({ children }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
11
8
 
12
9
  export { CrossmintWalletProvider, type CrossmintWalletProviderProps };
@@ -1,12 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { CrossmintRecoveryKeyProviderProps } from './CrossmintRecoveryKeyProvider.js';
4
- import '@solana/web3.js';
5
3
 
6
- interface CrossmintWalletProviderProps extends Omit<CrossmintRecoveryKeyProviderProps, "children"> {
4
+ interface CrossmintWalletProviderProps {
7
5
  children: ReactNode;
8
- experimental_enableRecoveryKeys?: boolean;
9
6
  }
10
- declare function CrossmintWalletProvider({ children, experimental_enableRecoveryKeys, experimental_secureEndpointUrl, }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
7
+ declare function CrossmintWalletProvider({ children }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
11
8
 
12
9
  export { CrossmintWalletProvider, type CrossmintWalletProviderProps };
@@ -1 +1 @@
1
- import{a}from"../chunk-MMOOXJQF.js";import"../chunk-HFKH3XVQ.js";import"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{a as CrossmintWalletProvider};
1
+ import{a}from"../chunk-EE7T3ACX.js";import"../chunk-IETKPTNG.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintWalletProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var _chunkCTP7RCPJcjs = require('../chunk-CTP7RCPJ.cjs');require('../chunk-PIEHDVJR.cjs');var _chunkOCM4UKCZcjs = require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');var _chunk4L2OHRE5cjs = require('../chunk-4L2OHRE5.cjs');require('../chunk-CK4JCQY6.cjs');exports.CrossmintAuthProvider = _chunkOCM4UKCZcjs.b; exports.CrossmintProvider = _chunk4L2OHRE5cjs.a; exports.CrossmintWalletProvider = _chunkCTP7RCPJcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var _chunk4L2OHRE5cjs = require('../chunk-4L2OHRE5.cjs');var _chunkFGMMPFQ2cjs = require('../chunk-FGMMPFQ2.cjs');var _chunkUM4IINI3cjs = require('../chunk-UM4IINI3.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintAuthProvider = _chunkUM4IINI3cjs.b; exports.CrossmintProvider = _chunk4L2OHRE5cjs.a; exports.CrossmintWalletProvider = _chunkFGMMPFQ2cjs.a;
@@ -6,5 +6,3 @@ import 'react';
6
6
  import '@crossmint/common-sdk-base';
7
7
  import '@crossmint/client-sdk-auth';
8
8
  import '@crossmint/common-sdk-auth';
9
- import './CrossmintRecoveryKeyProvider.cjs';
10
- import '@solana/web3.js';
@@ -6,5 +6,3 @@ import 'react';
6
6
  import '@crossmint/common-sdk-base';
7
7
  import '@crossmint/client-sdk-auth';
8
8
  import '@crossmint/common-sdk-auth';
9
- import './CrossmintRecoveryKeyProvider.js';
10
- import '@solana/web3.js';
@@ -1 +1 @@
1
- import"../chunk-C62HRWJA.js";import{a as c}from"../chunk-MMOOXJQF.js";import"../chunk-HFKH3XVQ.js";import{b as a}from"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import{a as b}from"../chunk-I52CP62R.js";import"../chunk-22GIA4MK.js";export{a as CrossmintAuthProvider,b as CrossmintProvider,c as CrossmintWalletProvider};
1
+ import"../chunk-C62HRWJA.js";import{a as b}from"../chunk-I52CP62R.js";import{a as c}from"../chunk-EE7T3ACX.js";import{b as a}from"../chunk-IETKPTNG.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintAuthProvider,b as CrossmintProvider,c as CrossmintWalletProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-CK4JCQY6.cjs');var _="sk_development_12341234",e= exports.MOCK_APP_ID ="com.app.id";exports.MOCK_API_KEY = _; exports.MOCK_APP_ID = e;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-6R7OYJL5.cjs');var _="sk_development_12341234",e= exports.MOCK_APP_ID ="com.app.id";exports.MOCK_API_KEY = _; exports.MOCK_APP_ID = e;
package/dist/testUtils.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-22GIA4MK.js";var e="sk_development_12341234",p="com.app.id";export{e as MOCK_API_KEY,p as MOCK_APP_ID};
1
+ import"./chunk-DUTPQ56Q.js";var e="sk_development_12341234",p="com.app.id";export{e as MOCK_API_KEY,p as MOCK_APP_ID};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR3KSNRO2cjs = require('../chunk-R3KSNRO2.cjs');require('../chunk-CK4JCQY6.cjs');exports.SecureStorage = _chunkR3KSNRO2cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkZPIV7DVZcjs = require('../chunk-ZPIV7DVZ.cjs');require('../chunk-6R7OYJL5.cjs');exports.SecureStorage = _chunkZPIV7DVZcjs.a;
@@ -1 +1 @@
1
- import{a}from"../chunk-SYFNPOWZ.js";import"../chunk-22GIA4MK.js";export{a as SecureStorage};
1
+ import{a}from"../chunk-BWWCPHLC.js";import"../chunk-DUTPQ56Q.js";export{a as SecureStorage};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossmint/client-sdk-react-native-ui",
3
- "version": "0.4.20",
3
+ "version": "0.5.1",
4
4
  "repository": "https://github.com/Crossmint/crossmint-sdk",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Paella Labs Inc",
@@ -24,14 +24,14 @@
24
24
  "expo-secure-store": "14.0.1",
25
25
  "expo-web-browser": "~14.0.2",
26
26
  "react-native-webview": "13.12.5",
27
- "@crossmint/client-sdk-auth": "1.2.9",
28
- "@crossmint/client-sdk-base": "1.5.1",
29
- "@crossmint/client-sdk-react-base": "0.2.16",
27
+ "@crossmint/client-sdk-auth": "1.2.11",
28
+ "@crossmint/client-sdk-base": "1.5.3",
29
+ "@crossmint/client-sdk-react-base": "0.4.0",
30
30
  "@crossmint/client-sdk-rn-window": "0.2.2",
31
31
  "@crossmint/client-signers": "0.0.16",
32
- "@crossmint/common-sdk-auth": "1.0.32",
33
- "@crossmint/wallets-sdk": "0.8.1",
34
- "@crossmint/common-sdk-base": "0.5.1"
32
+ "@crossmint/common-sdk-auth": "1.0.34",
33
+ "@crossmint/common-sdk-base": "0.7.0",
34
+ "@crossmint/wallets-sdk": "0.9.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/react": "19.0.12"
@@ -1 +0,0 @@
1
- var m=Object.defineProperty,n=Object.defineProperties;var o=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var p=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var i=(c,b,a)=>b in c?m(c,b,{enumerable:!0,configurable:!0,writable:!0,value:a}):c[b]=a,r=(c,b)=>{for(var a in b||(b={}))p.call(b,a)&&i(c,a,b[a]);if(h)for(var a of h(b))q.call(b,a)&&i(c,a,b[a]);return c},s=(c,b)=>n(c,o(b));var t=(c,b,a)=>new Promise((j,g)=>{var k=d=>{try{e(a.next(d))}catch(f){g(f)}},l=d=>{try{e(a.throw(d))}catch(f){g(f)}},e=d=>d.done?j(d.value):Promise.resolve(d.value).then(k,l);e((a=a.apply(c,b)).next())});export{r as a,s as b,t as c};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var m=Object.defineProperty,n=Object.defineProperties;var o=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var p=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var i=(c,b,a)=>b in c?m(c,b,{enumerable:!0,configurable:!0,writable:!0,value:a}):c[b]=a,r= exports.a =(c,b)=>{for(var a in b||(b={}))p.call(b,a)&&i(c,a,b[a]);if(h)for(var a of h(b))q.call(b,a)&&i(c,a,b[a]);return c},s= exports.b =(c,b)=>n(c,o(b));var t=(c,b,a)=>new Promise((j,g)=>{var k=d=>{try{e(a.next(d))}catch(f){g(f)}},l=d=>{try{e(a.throw(d))}catch(f){g(f)}},e=d=>d.done?j(d.value):Promise.resolve(d.value).then(k,l);e((a=a.apply(c,b)).next())});exports.a = r; exports.b = s; exports.c = t;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPIEHDVJRcjs = require('./chunk-PIEHDVJR.cjs');var _chunkKWIO2XXJcjs = require('./chunk-KWIO2XXJ.cjs');var _chunkCK4JCQY6cjs = require('./chunk-CK4JCQY6.cjs');var _react = require('react');var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');var _jsxruntime = require('react/jsx-runtime');var C=["experimental_needsAuth","experimental_createRecoveryKeySigner","experimental_sendEmailWithOtp","experimental_verifyOtp"];function u({children:n}){let r=_react.useContext.call(void 0, _clientsdkreactbase.WalletContext),o=_react.useContext.call(void 0, _chunkPIEHDVJRcjs.a);if(r==null)throw new Error("BaseWalletContext not found. Ensure CrossmintWalletProvider structure is correct.");let s=_react.useMemo.call(void 0, ()=>{let e=_chunkCK4JCQY6cjs.a.call(void 0, {},r);if(o!=null)Object.assign(e,o);else for(let a of C)Object.defineProperty(e,a,{get(){throw new Error(`Cannot access '${a}'. Ensure 'experimental_enableRecoveryKeys={true}' is set on CrossmintWalletProvider.`)},enumerable:!0,configurable:!0});return e},[r,o]);return _jsxruntime.jsx.call(void 0, _chunkKWIO2XXJcjs.a.Provider,{value:s,children:n})}function b({children:n,experimental_enableRecoveryKeys:r=!1,experimental_secureEndpointUrl:o}){return _jsxruntime.jsx.call(void 0, _clientsdkreactbase.CrossmintWalletProvider,{children:_jsxruntime.jsx.call(void 0, ({children:e})=>r?_jsxruntime.jsx.call(void 0, _chunkPIEHDVJRcjs.c,{experimental_secureEndpointUrl:o,children:e}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}),{children:_jsxruntime.jsx.call(void 0, u,{children:n})})})}exports.a = b;
@@ -1,17 +0,0 @@
1
- import{e as U}from"./chunk-XA3CJXOO.js";import{a as D,b as N,c as g}from"./chunk-22GIA4MK.js";import re,{useCallback as u,useContext as F,useEffect as A,useRef as m,useState as T,useMemo as j}from"react";import k from"bs58";import{PublicKey as te}from"@solana/web3.js";import{RNWebView as ne}from"@crossmint/client-sdk-rn-window";import{WebViewParent as oe}from"@crossmint/client-sdk-rn-window";import{signerInboundEvents as se,signerOutboundEvents as ie}from"@crossmint/client-signers";import{View as ae}from"react-native";import{validateApiKeyAndGetCrossmintBaseUrl as ce}from"@crossmint/common-sdk-base";import{WalletContext as le}from"@crossmint/client-sdk-react-base";import{jsx as J,jsxs as ue}from"react/jsx-runtime";var $=re.createContext(null);function ke(){let b=F($);if(b==null)throw new Error("useCrossmintRecoveryKey must be used within a CrossmintRecoveryKeyProvider");return b}var v={timeoutMs:1e4,intervalMs:5e3},I="https://crossmint-signer-frames.onrender.com";function Oe({children:b,experimental_secureEndpointUrl:B=I}){let{crossmint:{apiKey:a,jwt:i,appId:h}}=U(),{getOrCreateWallet:E,clearWallet:G}=F(le),w=m(null),d=m(null),[p,P]=T(!1),[de,O]=T(null),[y,c]=T(!1),W=m(!1),S=m(!1),f=m(null),L=j(()=>h!=null?`window.crossmintAppId = '${h}';`:"",[h]);A(()=>{w.current!=null&&d.current==null&&(d.current=new oe(w,{incomingEvents:ie,outgoingEvents:se}))},[]),A(()=>{i==null&&!W.current?(c(!1),O(null),G(),W.current=!0):i!=null&&(W.current=!1,p&&Q())},[i,p]),A(()=>{S.current=y},[y]);let x=u(()=>g(this,null,function*(){if(console.log("handleAuthRequired needsAuth",S.current),!S.current)return;let t,s,n=new Promise((e,r)=>{t=e,s=r});f.current={promise:n,resolve:t,reject:s};try{console.log("Waiting for auth promise"),yield f.current.promise,console.log("Auth promise resolved")}catch(e){throw e}}),[]),C=u(t=>g(this,null,function*(){var e;let s=d.current;if(s==null||!p)throw new Error("[sendEmailWithOtp] WebViewParent not ready or handshake incomplete.");if(i==null||a==null)throw new Error("[sendEmailWithOtp] Missing authentication credentials (JWT or API Key).");if(!y)throw new Error("OTP email request is not applicable in the current state.");O(t);let n=`email:${t}`;try{let r=yield s.sendAction({event:"request:start-onboarding",responseEvent:"response:start-onboarding",data:{authData:{jwt:i,apiKey:a},data:{authId:n}},options:v});if((r==null?void 0:r.status)==="success"&&r.signerStatus==="ready"){c(!1);return}if((r==null?void 0:r.status)==="error")throw console.error("[sendEmailWithOtp] Failed to send OTP:",r),new Error(r.error||"Failed to initiate OTP process.");console.log("[sendEmailWithOtp] OTP process likely initiated. Waiting for verification.")}catch(r){throw console.error("[sendEmailWithOtp] Error sending start-onboarding request:",r),(e=f.current)==null||e.reject(r),r}}),[p,i,a,y]),K=u(t=>g(this,null,function*(){var n,e,r;let s=d.current;if(s==null||!p)throw new Error("[verifyOtp] WebViewParent not ready or handshake incomplete.");if(i==null||a==null)throw new Error("[verifyOtp] Missing authentication credentials (JWT or API Key).");if(!y)throw new Error("Not currently awaiting OTP validation.");try{let o=yield s.sendAction({event:"request:complete-onboarding",responseEvent:"response:complete-onboarding",data:{authData:{jwt:i,apiKey:a},data:{onboardingAuthentication:{encryptedOtp:t}}},options:v});if((o==null?void 0:o.status)==="success"){console.log("[verifyOtp] OTP validation successful"),c(!1),(n=f.current)==null||n.resolve();return}else{console.error("[verifyOtp] Failed to validate OTP:",o),c(!0);let l=o&&o.status==="error"?o.error:"Failed to validate encrypted OTP";throw(e=f.current)==null||e.reject(new Error(l)),new Error(l)}}catch(o){throw console.error("[verifyOtp] Error sending OTP validation request:",o),c(!0),(r=f.current)==null||r.reject(o),o}}),[p,i,a,y]),z=m(null),V=u(t=>{z.current=t},[]),H=t=>{if(t.encoding!=="base58"||t.keyType!=="ed25519")throw new Error("Unsupported key type and encoding: "+t.keyType+" "+t.encoding)},R=u(t=>{let s=d.current;if(s==null||i==null||a==null)throw new Error("Cannot build signer: Missing prerequisites (parent, jwt, apiKey).");return{type:"solana-keypair",address:t,signer:{signMessage:n=>g(this,null,function*(){yield x();try{let e=yield s.sendAction({event:"request:sign",responseEvent:"response:sign",data:{authData:{jwt:i,apiKey:a},data:{bytes:k.encode(n),keyType:"ed25519",encoding:"base58"}},options:v});if(e==null||e.status==="error"||e.signature==null)throw console.error("Failed signMessage response:",e),new Error("Failed to sign message");if(e.signature.encoding==="base58"&&e.signature.bytes)return k.decode(e.signature.bytes);throw new Error("Unsupported encoding: "+e.signature.encoding)}catch(e){throw console.error("Error during signMessage:",e),e}}),signTransaction:n=>g(this,null,function*(){yield x();try{let e=n.message.serialize(),r=yield s.sendAction({event:"request:sign",responseEvent:"response:sign",data:{authData:{jwt:i,apiKey:a},data:{bytes:k.encode(e),keyType:"ed25519",encoding:"base58"}},options:v});if(r==null||r.status==="error"||r.signature==null)throw new Error("Failed to sign transaction: No signature returned");if(r.signature.encoding==="base58"&&r.signature.bytes)n.addSignature(new te(t),k.decode(r.signature.bytes));else throw new Error("Unsupported encoding: "+r.signature.encoding);return n}catch(e){throw console.error("Error during signTransaction:",e),e}})}}},[i,a,x]),Q=u(()=>g(this,null,function*(){var s;let t=d.current;if(t==null||!p||i==null||a==null){console.warn("[checkSignerExists] Prerequisites not met (WebView, JWT, API Key). Status:",{isWebViewReady:p,hasJwt:i!=null,hasApiKey:a!=null}),c(!1);return}try{let n=yield t.sendAction({event:"request:get-status",responseEvent:"response:get-status",data:{authData:{jwt:i,apiKey:a}},options:v});if((n==null?void 0:n.status)==="success"&&n.signerStatus==="ready"){let e=(s=n.publicKeys)==null?void 0:s.ed25519;if(e==null||e.bytes==null||e.encoding==null)throw new Error("No public key found");H(N(D({},e),{keyType:"ed25519"}));let r=R(e.bytes);c(!1),yield E({type:"solana-smart-wallet",args:{adminSigner:r}})}else console.log("checkSignerExists needsAuth true",y),c(!0)}catch(n){console.error("[checkSignerExists] Error checking for signer:",n),c(!0)}}),[p,i,a,R,E]),X=u(()=>g(this,null,function*(){let t=d.current;if(t!=null)try{yield t.handshakeWithChild(),P(!0)}catch(s){console.error("[RN] handshakeWithChild error:",s),P(!1)}}),[]),Y=u(t=>{let s=d.current;if(s!=null){try{let n=JSON.parse(t.nativeEvent.data);if(n&&typeof n.type=="string"&&n.type.startsWith("console.")){let e=n.type.split(".")[1],r=(n.data||[]).map(l=>{try{return l==="[Function]"||l==="[Circular Reference]"||l==="[Unserializable Object]"?l:JSON.parse(l)}catch(_){return l}}),o=`[WebView:${e.toUpperCase()}]`;switch(e){case"log":console.log(o,...r);break;case"error":console.error(o,...r);break;case"warn":console.warn(o,...r);break;case"info":console.info(o,...r);break;default:console.log(`[WebView Unknown:${e}]`,...r)}return}}catch(n){}s.handleMessage(t)}},[]),q=u(t=>g(this,null,function*(){if(i==null||a==null||h==null)return console.warn("[createRecoveryKeySigner] Prerequisites not met (WebView ready, JWT, API Key, App ID). Cannot proceed."),c(!1),null;if(O(t),d.current==null)return console.error("[createRecoveryKeySigner] WebView parent disappeared unexpectedly."),c(!1),null;try{let n=ce(a),e=yield fetch(`${n}api/v1/signers/derive-public-key`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`,"x-api-key":a,"x-app-identifier":h},body:JSON.stringify({authId:`email:${t}`,keyType:"ed25519"})});if(!e.ok){let ee=yield e.text();throw new Error(`Failed to fetch public key: ${e.status} ${ee}`)}let o=(yield e.json()).publicKey;if(o==null)throw new Error("No public key found");if(o.encoding!=="base58"||o.keyType!=="ed25519"||o.bytes==null)throw new Error("Not supported. Expected public key to be in base58 encoding and ed25519 key type. Got: "+JSON.stringify(o));let l=o.bytes,_=R(l);return yield E({type:"solana-smart-wallet",args:{adminSigner:_}}),c(!0),null}catch(n){return console.error("[createRecoveryKeySigner] Error during public key fetch or processing:",n),c(!0),null}}),[i,a,h,R,E]),M=u(()=>{if(w.current==null)return;w.current.injectJavaScript(`
2
- try {
3
- localStorage.clear();
4
- sessionStorage.clear();
5
- const cookies = document.cookie.split(';');
6
- for (let i = 0; i < cookies.length; i++) {
7
- const cookie = cookies[i];
8
- const eqPos = cookie.indexOf('=');
9
- const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10
- document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
11
- }
12
- indexedDB.deleteDatabase('crossmint');
13
- indexedDB.deleteDatabase('crossmint-signer');
14
- } catch (error) {
15
- console.error('Error clearing storage:', error);
16
- }
17
- `)},[]),Z=j(()=>({experimental_needsAuth:y,experimental_createRecoveryKeySigner:q,experimental_sendEmailWithOtp:C,experimental_verifyOtp:K,onAuthRequired:V,experimental_clearStorage:M}),[y,q,C,K,V,M]);return ue($.Provider,{value:Z,children:[b,J(ae,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:J(ne,{ref:w,source:{uri:B},injectedGlobals:L,onLoadEnd:X,onMessage:Y,onError:t=>{console.error("WebView onError:",t.nativeEvent),P(!1),c(!1)},onHttpError:t=>{console.error("WebView onHttpError:",t.nativeEvent),P(!1),c(!1)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[I]})})]})}export{$ as a,ke as b,Oe as c};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var r=_react.createContext.call(void 0, null);function a(){let t=_react.useContext.call(void 0, r);if(t==null)throw new Error("useWallet must be used within the CrossmintWalletProvider");return t}exports.a = r; exports.b = a;
@@ -1 +0,0 @@
1
- import{createContext as e,useContext as o}from"react";var r=e(null);function s(){let t=o(r);if(t==null)throw new Error("useWallet must be used within the CrossmintWalletProvider");return t}export{r as a,s as b};
@@ -1 +0,0 @@
1
- import{a as c,c as m}from"./chunk-HFKH3XVQ.js";import{a as l}from"./chunk-KZMAEKSM.js";import{a as i}from"./chunk-22GIA4MK.js";import{useContext as v,useMemo as y}from"react";import{CrossmintWalletProvider as p,WalletContext as d}from"@crossmint/client-sdk-react-base";import{Fragment as W,jsx as t}from"react/jsx-runtime";var C=["experimental_needsAuth","experimental_createRecoveryKeySigner","experimental_sendEmailWithOtp","experimental_verifyOtp"];function u({children:n}){let r=v(d),o=v(c);if(r==null)throw new Error("BaseWalletContext not found. Ensure CrossmintWalletProvider structure is correct.");let s=y(()=>{let e=i({},r);if(o!=null)Object.assign(e,o);else for(let a of C)Object.defineProperty(e,a,{get(){throw new Error(`Cannot access '${a}'. Ensure 'experimental_enableRecoveryKeys={true}' is set on CrossmintWalletProvider.`)},enumerable:!0,configurable:!0});return e},[r,o]);return t(l.Provider,{value:s,children:n})}function h({children:n,experimental_enableRecoveryKeys:r=!1,experimental_secureEndpointUrl:o}){return t(p,{children:t(({children:e})=>r?t(m,{experimental_secureEndpointUrl:o,children:e}):t(W,{children:e}),{children:t(u,{children:n})})})}export{h as a};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkR3KSNRO2cjs = require('./chunk-R3KSNRO2.cjs');var _chunkCK4JCQY6cjs = require('./chunk-CK4JCQY6.cjs');var _react = require('react');var _expowebbrowser = require('expo-web-browser'); var i = _interopRequireWildcard(_expowebbrowser);var _clientsdkauth = require('@crossmint/client-sdk-auth');var _commonsdkauth = require('@crossmint/common-sdk-auth');var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');function ot(){let o=_react.useContext.call(void 0, A);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function nt(){let o=_react.useContext.call(void 0, A);if(!o)throw new Error("useAuth must be used within a CrossmintAuthProvider");return o}var _reactnative = require('react-native');var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);var _jsxruntime = require('react/jsx-runtime');var z={google:null,twitter:null},Y={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},A= exports.a =_react.createContext.call(void 0, Y);function yt({children:o,onLoginSuccess:u,refreshRoute:h,logoutRoute:O,customStorageProvider:p,appSchema:f}){let[w,y]=_react.useState.call(void 0, void 0),{crossmint:n,setJwt:d}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[k,D]=_react.useState.call(void 0, z),U=_react.useRef.call(void 0, null),a=_react.useMemo.call(void 0, ()=>p!=null?p:new _chunkR3KSNRO2cjs.a,[p]),[F,S]=_react.useState.call(void 0, !1),[K,x]=_react.useState.call(void 0, !1),N=Array.isArray(f)?f[0]:f,b=_expoconstants2.default.executionEnvironment==="storeClient"||_expoconstants2.default.appOwnership==="expo"||!!_expoconstants2.default.expoVersion?"exp://127.0.0.1:8081":N,e=_react.useMemo.call(void 0, ()=>{if(!U.current){let t={callbacks:{onLogout:()=>{d(void 0),y(void 0)},onTokenRefresh:r=>{d(r.jwt),y(r.user)}},refreshRoute:h,logoutRoute:O,storageProvider:a};U.current=_clientsdkauth.CrossmintAuth.from(n,t)}return U.current},[a]),M=_react.useCallback.call(void 0, ()=>{u==null||u()},[u]);_react.useEffect.call(void 0, ()=>{n.jwt==null?a==null||a.get(_commonsdkauth.SESSION_PREFIX).then(t=>{t!=null&&d(t)}).finally(()=>{S(!0)}):S(!0)},[n.jwt,d,a]),_react.useEffect.call(void 0, ()=>{n.jwt!=null&&M()},[n.jwt,M]);let _=()=>{e.logout()},R=_react.useCallback.call(void 0, ()=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){try{let r=Object.keys(z).map(l=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){let m=yield e==null?void 0:e.getOAuthUrl(l,{appSchema:b});return{[l]:m}})),s=Object.assign({},...yield Promise.all(r));D(s)}catch(t){console.error(t)}}),[e]);_react.useEffect.call(void 0, ()=>{w==null&&R()},[R,w]);let G=()=>F?K?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",J=()=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){if(n.jwt==null){console.log("User not logged in");return}let t=yield e.getUser();y(t)}),V=t=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){var r;try{x(!0);let s=(r=k[t])!=null?r:yield e.getOAuthUrl(t,{appSchema:b});yield i.warmUpAsync();let l=new URL(s);if(t==="google"&&l.searchParams.append("provider_prompt","select_account"),_reactnative.Platform.OS==="android")yield i.openBrowserAsync(l.toString());else{let m=yield i.openAuthSessionAsync(l.toString());m.type==="success"&&(yield E(m.url))}yield i.coolDownAsync()}catch(s){console.error("[CrossmintAuthProvider] Error during OAuth login:",s)}}),E=_react.useCallback.call(void 0, t=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){let r=t.includes("://")?Z(t):t;if(r!=null)try{return x(!0),yield e.handleRefreshAuthMaterial(r)}catch(s){throw s}finally{x(!1)}return null}),[e]);return _jsxruntime.jsx.call(void 0, A.Provider,{value:{crossmintAuth:e,logout:_,jwt:n.jwt,user:w,status:G(),getUser:J,loginWithOAuth:V,createAuthSession:E},children:o})}var Z=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,h=o.match(u);return h?decodeURIComponent(h[1]):void 0};exports.a = A; exports.b = yt; exports.c = ot; exports.d = nt; exports.e = _clientsdkreactbase.useCrossmint;
@@ -1,17 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkOCM4UKCZcjs = require('./chunk-OCM4UKCZ.cjs');var _chunkCK4JCQY6cjs = require('./chunk-CK4JCQY6.cjs');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58);var _web3js = require('@solana/web3.js');var _clientsdkrnwindow = require('@crossmint/client-sdk-rn-window');var _clientsigners = require('@crossmint/client-signers');var _reactnative = require('react-native');var _commonsdkbase = require('@crossmint/common-sdk-base');var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');var _jsxruntime = require('react/jsx-runtime');var $=_react2.default.createContext(null);function Re(){let b=_react.useContext.call(void 0, $);if(b==null)throw new Error("useCrossmintRecoveryKey must be used within a CrossmintRecoveryKeyProvider");return b}var v={timeoutMs:1e4,intervalMs:5e3},I="https://crossmint-signer-frames.onrender.com";function ke({children:b,experimental_secureEndpointUrl:B=I}){let{crossmint:{apiKey:a,jwt:i,appId:h}}=_chunkOCM4UKCZcjs.e.call(void 0, ),{getOrCreateWallet:E,clearWallet:G}=_react.useContext.call(void 0, _clientsdkreactbase.WalletContext),w=_react.useRef.call(void 0, null),d=_react.useRef.call(void 0, null),[p,P]=_react.useState.call(void 0, !1),[de,O]=_react.useState.call(void 0, null),[y,c]=_react.useState.call(void 0, !1),W=_react.useRef.call(void 0, !1),S=_react.useRef.call(void 0, !1),f=_react.useRef.call(void 0, null),L=_react.useMemo.call(void 0, ()=>h!=null?`window.crossmintAppId = '${h}';`:"",[h]);_react.useEffect.call(void 0, ()=>{w.current!=null&&d.current==null&&(d.current=new (0, _clientsdkrnwindow.WebViewParent)(w,{incomingEvents:_clientsigners.signerOutboundEvents,outgoingEvents:_clientsigners.signerInboundEvents}))},[]),_react.useEffect.call(void 0, ()=>{i==null&&!W.current?(c(!1),O(null),G(),W.current=!0):i!=null&&(W.current=!1,p&&Q())},[i,p]),_react.useEffect.call(void 0, ()=>{S.current=y},[y]);let x=_react.useCallback.call(void 0, ()=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){if(console.log("handleAuthRequired needsAuth",S.current),!S.current)return;let t,s,n=new Promise((e,r)=>{t=e,s=r});f.current={promise:n,resolve:t,reject:s};try{console.log("Waiting for auth promise"),yield f.current.promise,console.log("Auth promise resolved")}catch(e){throw e}}),[]),C=_react.useCallback.call(void 0, t=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){var e;let s=d.current;if(s==null||!p)throw new Error("[sendEmailWithOtp] WebViewParent not ready or handshake incomplete.");if(i==null||a==null)throw new Error("[sendEmailWithOtp] Missing authentication credentials (JWT or API Key).");if(!y)throw new Error("OTP email request is not applicable in the current state.");O(t);let n=`email:${t}`;try{let r=yield s.sendAction({event:"request:start-onboarding",responseEvent:"response:start-onboarding",data:{authData:{jwt:i,apiKey:a},data:{authId:n}},options:v});if((r==null?void 0:r.status)==="success"&&r.signerStatus==="ready"){c(!1);return}if((r==null?void 0:r.status)==="error")throw console.error("[sendEmailWithOtp] Failed to send OTP:",r),new Error(r.error||"Failed to initiate OTP process.");console.log("[sendEmailWithOtp] OTP process likely initiated. Waiting for verification.")}catch(r){throw console.error("[sendEmailWithOtp] Error sending start-onboarding request:",r),(e=f.current)==null||e.reject(r),r}}),[p,i,a,y]),K=_react.useCallback.call(void 0, t=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){var n,e,r;let s=d.current;if(s==null||!p)throw new Error("[verifyOtp] WebViewParent not ready or handshake incomplete.");if(i==null||a==null)throw new Error("[verifyOtp] Missing authentication credentials (JWT or API Key).");if(!y)throw new Error("Not currently awaiting OTP validation.");try{let o=yield s.sendAction({event:"request:complete-onboarding",responseEvent:"response:complete-onboarding",data:{authData:{jwt:i,apiKey:a},data:{onboardingAuthentication:{encryptedOtp:t}}},options:v});if((o==null?void 0:o.status)==="success"){console.log("[verifyOtp] OTP validation successful"),c(!1),(n=f.current)==null||n.resolve();return}else{console.error("[verifyOtp] Failed to validate OTP:",o),c(!0);let l=o&&o.status==="error"?o.error:"Failed to validate encrypted OTP";throw(e=f.current)==null||e.reject(new Error(l)),new Error(l)}}catch(o){throw console.error("[verifyOtp] Error sending OTP validation request:",o),c(!0),(r=f.current)==null||r.reject(o),o}}),[p,i,a,y]),z=_react.useRef.call(void 0, null),V=_react.useCallback.call(void 0, t=>{z.current=t},[]),H=t=>{if(t.encoding!=="base58"||t.keyType!=="ed25519")throw new Error("Unsupported key type and encoding: "+t.keyType+" "+t.encoding)},R=_react.useCallback.call(void 0, t=>{let s=d.current;if(s==null||i==null||a==null)throw new Error("Cannot build signer: Missing prerequisites (parent, jwt, apiKey).");return{type:"solana-keypair",address:t,signer:{signMessage:n=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){yield x();try{let e=yield s.sendAction({event:"request:sign",responseEvent:"response:sign",data:{authData:{jwt:i,apiKey:a},data:{bytes:_bs582.default.encode(n),keyType:"ed25519",encoding:"base58"}},options:v});if(e==null||e.status==="error"||e.signature==null)throw console.error("Failed signMessage response:",e),new Error("Failed to sign message");if(e.signature.encoding==="base58"&&e.signature.bytes)return _bs582.default.decode(e.signature.bytes);throw new Error("Unsupported encoding: "+e.signature.encoding)}catch(e){throw console.error("Error during signMessage:",e),e}}),signTransaction:n=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){yield x();try{let e=n.message.serialize(),r=yield s.sendAction({event:"request:sign",responseEvent:"response:sign",data:{authData:{jwt:i,apiKey:a},data:{bytes:_bs582.default.encode(e),keyType:"ed25519",encoding:"base58"}},options:v});if(r==null||r.status==="error"||r.signature==null)throw new Error("Failed to sign transaction: No signature returned");if(r.signature.encoding==="base58"&&r.signature.bytes)n.addSignature(new (0, _web3js.PublicKey)(t),_bs582.default.decode(r.signature.bytes));else throw new Error("Unsupported encoding: "+r.signature.encoding);return n}catch(e){throw console.error("Error during signTransaction:",e),e}})}}},[i,a,x]),Q=_react.useCallback.call(void 0, ()=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){var s;let t=d.current;if(t==null||!p||i==null||a==null){console.warn("[checkSignerExists] Prerequisites not met (WebView, JWT, API Key). Status:",{isWebViewReady:p,hasJwt:i!=null,hasApiKey:a!=null}),c(!1);return}try{let n=yield t.sendAction({event:"request:get-status",responseEvent:"response:get-status",data:{authData:{jwt:i,apiKey:a}},options:v});if((n==null?void 0:n.status)==="success"&&n.signerStatus==="ready"){let e=(s=n.publicKeys)==null?void 0:s.ed25519;if(e==null||e.bytes==null||e.encoding==null)throw new Error("No public key found");H(_chunkCK4JCQY6cjs.b.call(void 0, _chunkCK4JCQY6cjs.a.call(void 0, {},e),{keyType:"ed25519"}));let r=R(e.bytes);c(!1),yield E({type:"solana-smart-wallet",args:{adminSigner:r}})}else console.log("checkSignerExists needsAuth true",y),c(!0)}catch(n){console.error("[checkSignerExists] Error checking for signer:",n),c(!0)}}),[p,i,a,R,E]),X=_react.useCallback.call(void 0, ()=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){let t=d.current;if(t!=null)try{yield t.handshakeWithChild(),P(!0)}catch(s){console.error("[RN] handshakeWithChild error:",s),P(!1)}}),[]),Y=_react.useCallback.call(void 0, t=>{let s=d.current;if(s!=null){try{let n=JSON.parse(t.nativeEvent.data);if(n&&typeof n.type=="string"&&n.type.startsWith("console.")){let e=n.type.split(".")[1],r=(n.data||[]).map(l=>{try{return l==="[Function]"||l==="[Circular Reference]"||l==="[Unserializable Object]"?l:JSON.parse(l)}catch(_){return l}}),o=`[WebView:${e.toUpperCase()}]`;switch(e){case"log":console.log(o,...r);break;case"error":console.error(o,...r);break;case"warn":console.warn(o,...r);break;case"info":console.info(o,...r);break;default:console.log(`[WebView Unknown:${e}]`,...r)}return}}catch(n){}s.handleMessage(t)}},[]),q=_react.useCallback.call(void 0, t=>_chunkCK4JCQY6cjs.c.call(void 0, this,null,function*(){if(i==null||a==null||h==null)return console.warn("[createRecoveryKeySigner] Prerequisites not met (WebView ready, JWT, API Key, App ID). Cannot proceed."),c(!1),null;if(O(t),d.current==null)return console.error("[createRecoveryKeySigner] WebView parent disappeared unexpectedly."),c(!1),null;try{let n=_commonsdkbase.validateApiKeyAndGetCrossmintBaseUrl.call(void 0, a),e=yield fetch(`${n}api/v1/signers/derive-public-key`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`,"x-api-key":a,"x-app-identifier":h},body:JSON.stringify({authId:`email:${t}`,keyType:"ed25519"})});if(!e.ok){let ee=yield e.text();throw new Error(`Failed to fetch public key: ${e.status} ${ee}`)}let o=(yield e.json()).publicKey;if(o==null)throw new Error("No public key found");if(o.encoding!=="base58"||o.keyType!=="ed25519"||o.bytes==null)throw new Error("Not supported. Expected public key to be in base58 encoding and ed25519 key type. Got: "+JSON.stringify(o));let l=o.bytes,_=R(l);return yield E({type:"solana-smart-wallet",args:{adminSigner:_}}),c(!0),null}catch(n){return console.error("[createRecoveryKeySigner] Error during public key fetch or processing:",n),c(!0),null}}),[i,a,h,R,E]),M=_react.useCallback.call(void 0, ()=>{if(w.current==null)return;w.current.injectJavaScript(`
2
- try {
3
- localStorage.clear();
4
- sessionStorage.clear();
5
- const cookies = document.cookie.split(';');
6
- for (let i = 0; i < cookies.length; i++) {
7
- const cookie = cookies[i];
8
- const eqPos = cookie.indexOf('=');
9
- const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10
- document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
11
- }
12
- indexedDB.deleteDatabase('crossmint');
13
- indexedDB.deleteDatabase('crossmint-signer');
14
- } catch (error) {
15
- console.error('Error clearing storage:', error);
16
- }
17
- `)},[]),Z=_react.useMemo.call(void 0, ()=>({experimental_needsAuth:y,experimental_createRecoveryKeySigner:q,experimental_sendEmailWithOtp:C,experimental_verifyOtp:K,onAuthRequired:V,experimental_clearStorage:M}),[y,q,C,K,V,M]);return _jsxruntime.jsxs.call(void 0, $.Provider,{value:Z,children:[b,_jsxruntime.jsx.call(void 0, _reactnative.View,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:_jsxruntime.jsx.call(void 0, _clientsdkrnwindow.RNWebView,{ref:w,source:{uri:B},injectedGlobals:L,onLoadEnd:X,onMessage:Y,onError:t=>{console.error("WebView onError:",t.nativeEvent),P(!1),c(!1)},onHttpError:t=>{console.error("WebView onHttpError:",t.nativeEvent),P(!1),c(!1)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[I]})})]})}exports.a = $; exports.b = Re; exports.c = ke;
@@ -1 +0,0 @@
1
- import{a as j}from"./chunk-SYFNPOWZ.js";import{c}from"./chunk-22GIA4MK.js";import{createContext as X,useEffect as C,useMemo as z,useRef as q,useState as g,useCallback as P}from"react";import*as i from"expo-web-browser";import{CrossmintAuth as L}from"@crossmint/client-sdk-auth";import{SESSION_PREFIX as Q}from"@crossmint/common-sdk-auth";import{useCrossmint as B}from"@crossmint/client-sdk-react-base";import{useContext as T}from"react";function nt(){let o=T(A);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function st(){let o=T(A);if(!o)throw new Error("useAuth must be used within a CrossmintAuthProvider");return o}import{Platform as Y}from"react-native";import v from"expo-constants";import{jsx as tt}from"react/jsx-runtime";var k={google:null,twitter:null},Z={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},A=X(Z);function Ut({children:o,onLoginSuccess:u,refreshRoute:h,logoutRoute:O,customStorageProvider:p,appSchema:f}){let[w,y]=g(void 0),{crossmint:n,setJwt:d}=B("CrossmintAuthProvider must be used within CrossmintProvider"),[D,F]=g(k),U=q(null),a=z(()=>p!=null?p:new j,[p]),[K,S]=g(!1),[N,x]=g(!1),_=Array.isArray(f)?f[0]:f,b=v.executionEnvironment==="storeClient"||v.appOwnership==="expo"||!!v.expoVersion?"exp://127.0.0.1:8081":_,e=z(()=>{if(!U.current){let t={callbacks:{onLogout:()=>{d(void 0),y(void 0)},onTokenRefresh:r=>{d(r.jwt),y(r.user)}},refreshRoute:h,logoutRoute:O,storageProvider:a};U.current=L.from(n,t)}return U.current},[a]),M=P(()=>{u==null||u()},[u]);C(()=>{n.jwt==null?a==null||a.get(Q).then(t=>{t!=null&&d(t)}).finally(()=>{S(!0)}):S(!0)},[n.jwt,d,a]),C(()=>{n.jwt!=null&&M()},[n.jwt,M]);let G=()=>{e.logout()},R=P(()=>c(this,null,function*(){try{let r=Object.keys(k).map(l=>c(this,null,function*(){let m=yield e==null?void 0:e.getOAuthUrl(l,{appSchema:b});return{[l]:m}})),s=Object.assign({},...yield Promise.all(r));F(s)}catch(t){console.error(t)}}),[e]);C(()=>{w==null&&R()},[R,w]);let J=()=>K?N?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",V=()=>c(this,null,function*(){if(n.jwt==null){console.log("User not logged in");return}let t=yield e.getUser();y(t)}),H=t=>c(this,null,function*(){var r;try{x(!0);let s=(r=D[t])!=null?r:yield e.getOAuthUrl(t,{appSchema:b});yield i.warmUpAsync();let l=new URL(s);if(t==="google"&&l.searchParams.append("provider_prompt","select_account"),Y.OS==="android")yield i.openBrowserAsync(l.toString());else{let m=yield i.openAuthSessionAsync(l.toString());m.type==="success"&&(yield E(m.url))}yield i.coolDownAsync()}catch(s){console.error("[CrossmintAuthProvider] Error during OAuth login:",s)}}),E=P(t=>c(this,null,function*(){let r=t.includes("://")?$(t):t;if(r!=null)try{return x(!0),yield e.handleRefreshAuthMaterial(r)}catch(s){throw s}finally{x(!1)}return null}),[e]);return tt(A.Provider,{value:{crossmintAuth:e,logout:G,jwt:n.jwt,user:w,status:J(),getUser:V,loginWithOAuth:H,createAuthSession:E},children:o})}var $=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,h=o.match(u);return h?decodeURIComponent(h[1]):void 0};export{A as a,Ut as b,nt as c,st as d,B as e};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKWIO2XXJcjs = require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.WalletContext = _chunkKWIO2XXJcjs.a; exports.useWallet = _chunkKWIO2XXJcjs.b;
@@ -1,11 +0,0 @@
1
- import * as react from 'react';
2
- import { CrossmintRecoveryKeyContextState } from '../providers/CrossmintRecoveryKeyProvider.cjs';
3
- import { WalletContext as WalletContext$1 } from '@crossmint/client-sdk-react-base';
4
- import 'react/jsx-runtime';
5
- import '@solana/web3.js';
6
-
7
- type ReactNativeWalletContextState = WalletContext$1 & CrossmintRecoveryKeyContextState;
8
- declare const WalletContext: react.Context<ReactNativeWalletContextState | null>;
9
- declare function useWallet(): ReactNativeWalletContextState;
10
-
11
- export { type ReactNativeWalletContextState, WalletContext, useWallet };
@@ -1,11 +0,0 @@
1
- import * as react from 'react';
2
- import { CrossmintRecoveryKeyContextState } from '../providers/CrossmintRecoveryKeyProvider.js';
3
- import { WalletContext as WalletContext$1 } from '@crossmint/client-sdk-react-base';
4
- import 'react/jsx-runtime';
5
- import '@solana/web3.js';
6
-
7
- type ReactNativeWalletContextState = WalletContext$1 & CrossmintRecoveryKeyContextState;
8
- declare const WalletContext: react.Context<ReactNativeWalletContextState | null>;
9
- declare function useWallet(): ReactNativeWalletContextState;
10
-
11
- export { type ReactNativeWalletContextState, WalletContext, useWallet };
@@ -1 +0,0 @@
1
- import{a,b}from"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{a as WalletContext,b as useWallet};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPIEHDVJRcjs = require('../chunk-PIEHDVJR.cjs');require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');var _react = require('react');function a(){let e=_react.useContext.call(void 0, _chunkPIEHDVJRcjs.a);if(e==null)throw new Error("useWalletsAuth must be used within a CrossmintWalletProvider with experimental_enableRecoveryKeys enabled.");return{experimental_needsAuth:e.experimental_needsAuth,experimental_createRecoveryKeySigner:e.experimental_createRecoveryKeySigner,experimental_sendEmailWithOtp:e.experimental_sendEmailWithOtp,experimental_verifyOtp:e.experimental_verifyOtp,experimental_clearStorage:e.experimental_clearStorage,onAuthRequired:e.onAuthRequired}}exports.useWalletsAuth = a;
@@ -1,8 +0,0 @@
1
- import { CrossmintRecoveryKeyContextState } from '../providers/CrossmintRecoveryKeyProvider.cjs';
2
- import 'react/jsx-runtime';
3
- import 'react';
4
- import '@solana/web3.js';
5
-
6
- declare function useWalletsAuth(): CrossmintRecoveryKeyContextState;
7
-
8
- export { useWalletsAuth };
@@ -1,8 +0,0 @@
1
- import { CrossmintRecoveryKeyContextState } from '../providers/CrossmintRecoveryKeyProvider.js';
2
- import 'react/jsx-runtime';
3
- import 'react';
4
- import '@solana/web3.js';
5
-
6
- declare function useWalletsAuth(): CrossmintRecoveryKeyContextState;
7
-
8
- export { useWalletsAuth };
@@ -1 +0,0 @@
1
- import{a as t}from"../chunk-HFKH3XVQ.js";import"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";import{useContext as r}from"react";function l(){let e=r(t);if(e==null)throw new Error("useWalletsAuth must be used within a CrossmintWalletProvider with experimental_enableRecoveryKeys enabled.");return{experimental_needsAuth:e.experimental_needsAuth,experimental_createRecoveryKeySigner:e.experimental_createRecoveryKeySigner,experimental_sendEmailWithOtp:e.experimental_sendEmailWithOtp,experimental_verifyOtp:e.experimental_verifyOtp,experimental_clearStorage:e.experimental_clearStorage,onAuthRequired:e.onAuthRequired}}export{l as useWalletsAuth};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPIEHDVJRcjs = require('../chunk-PIEHDVJR.cjs');require('../chunk-OCM4UKCZ.cjs');require('../chunk-R3KSNRO2.cjs');require('../chunk-KWIO2XXJ.cjs');require('../chunk-CK4JCQY6.cjs');exports.CrossmintRecoveryKeyContext = _chunkPIEHDVJRcjs.a; exports.CrossmintRecoveryKeyProvider = _chunkPIEHDVJRcjs.c; exports.useCrossmintRecoveryKey = _chunkPIEHDVJRcjs.b;
@@ -1,33 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import react__default, { ReactNode } from 'react';
3
- import { VersionedTransaction } from '@solana/web3.js';
4
-
5
- interface RecoverySigner {
6
- type: "solana-keypair";
7
- address: string;
8
- signer: {
9
- signMessage: (message: Uint8Array) => Promise<Uint8Array>;
10
- signTransaction: (transaction: VersionedTransaction) => Promise<VersionedTransaction>;
11
- };
12
- }
13
- type OnAuthRequiredOptions = {
14
- sendEmailWithOtp: (email: string) => Promise<void>;
15
- verifyOtp: (otp: string) => Promise<RecoverySigner | undefined>;
16
- };
17
- interface CrossmintRecoveryKeyContextState {
18
- experimental_needsAuth: boolean;
19
- experimental_createRecoveryKeySigner: (email: string) => Promise<RecoverySigner | null>;
20
- experimental_sendEmailWithOtp: (email: string) => Promise<void>;
21
- experimental_verifyOtp: (otp: string) => Promise<RecoverySigner | undefined>;
22
- onAuthRequired: (handler: (opts: OnAuthRequiredOptions) => Promise<void>) => void;
23
- experimental_clearStorage: () => void;
24
- }
25
- declare const CrossmintRecoveryKeyContext: react__default.Context<CrossmintRecoveryKeyContextState | null>;
26
- declare function useCrossmintRecoveryKey(): CrossmintRecoveryKeyContextState;
27
- interface CrossmintRecoveryKeyProviderProps {
28
- children: ReactNode;
29
- experimental_secureEndpointUrl?: string;
30
- }
31
- declare function CrossmintRecoveryKeyProvider({ children, experimental_secureEndpointUrl, }: CrossmintRecoveryKeyProviderProps): react_jsx_runtime.JSX.Element;
32
-
33
- export { CrossmintRecoveryKeyContext, type CrossmintRecoveryKeyContextState, CrossmintRecoveryKeyProvider, type CrossmintRecoveryKeyProviderProps, type OnAuthRequiredOptions, type RecoverySigner, useCrossmintRecoveryKey };
@@ -1,33 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import react__default, { ReactNode } from 'react';
3
- import { VersionedTransaction } from '@solana/web3.js';
4
-
5
- interface RecoverySigner {
6
- type: "solana-keypair";
7
- address: string;
8
- signer: {
9
- signMessage: (message: Uint8Array) => Promise<Uint8Array>;
10
- signTransaction: (transaction: VersionedTransaction) => Promise<VersionedTransaction>;
11
- };
12
- }
13
- type OnAuthRequiredOptions = {
14
- sendEmailWithOtp: (email: string) => Promise<void>;
15
- verifyOtp: (otp: string) => Promise<RecoverySigner | undefined>;
16
- };
17
- interface CrossmintRecoveryKeyContextState {
18
- experimental_needsAuth: boolean;
19
- experimental_createRecoveryKeySigner: (email: string) => Promise<RecoverySigner | null>;
20
- experimental_sendEmailWithOtp: (email: string) => Promise<void>;
21
- experimental_verifyOtp: (otp: string) => Promise<RecoverySigner | undefined>;
22
- onAuthRequired: (handler: (opts: OnAuthRequiredOptions) => Promise<void>) => void;
23
- experimental_clearStorage: () => void;
24
- }
25
- declare const CrossmintRecoveryKeyContext: react__default.Context<CrossmintRecoveryKeyContextState | null>;
26
- declare function useCrossmintRecoveryKey(): CrossmintRecoveryKeyContextState;
27
- interface CrossmintRecoveryKeyProviderProps {
28
- children: ReactNode;
29
- experimental_secureEndpointUrl?: string;
30
- }
31
- declare function CrossmintRecoveryKeyProvider({ children, experimental_secureEndpointUrl, }: CrossmintRecoveryKeyProviderProps): react_jsx_runtime.JSX.Element;
32
-
33
- export { CrossmintRecoveryKeyContext, type CrossmintRecoveryKeyContextState, CrossmintRecoveryKeyProvider, type CrossmintRecoveryKeyProviderProps, type OnAuthRequiredOptions, type RecoverySigner, useCrossmintRecoveryKey };
@@ -1 +0,0 @@
1
- import{a,b,c}from"../chunk-HFKH3XVQ.js";import"../chunk-XA3CJXOO.js";import"../chunk-SYFNPOWZ.js";import"../chunk-KZMAEKSM.js";import"../chunk-22GIA4MK.js";export{a as CrossmintRecoveryKeyContext,c as CrossmintRecoveryKeyProvider,b as useCrossmintRecoveryKey};