@crossmint/client-sdk-react-native-ui 0.5.6 → 0.6.0

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 (53) hide show
  1. package/dist/chunk-2WSEHVNP.cjs +1 -0
  2. package/dist/chunk-CY6IQ54O.js +1 -0
  3. package/dist/{chunk-BWWCPHLC.js → chunk-GDMV4TA2.js} +1 -1
  4. package/dist/chunk-IFRONN73.cjs +1 -0
  5. package/dist/{chunk-ZPIV7DVZ.cjs → chunk-K754GXKD.cjs} +1 -1
  6. package/dist/chunk-LA7LM24F.js +1 -0
  7. package/dist/chunk-PXDN3KFO.js +1 -0
  8. package/dist/chunk-XWQOPCUS.cjs +1 -0
  9. package/dist/hooks/index.cjs +1 -1
  10. package/dist/hooks/index.d.cts +1 -1
  11. package/dist/hooks/index.d.ts +1 -1
  12. package/dist/hooks/index.js +1 -1
  13. package/dist/hooks/useCrossmintAuth.cjs +1 -1
  14. package/dist/hooks/useCrossmintAuth.d.cts +1 -1
  15. package/dist/hooks/useCrossmintAuth.d.ts +1 -1
  16. package/dist/hooks/useCrossmintAuth.js +1 -1
  17. package/dist/hooks/useWalletEmailSigner.cjs +1 -1
  18. package/dist/hooks/useWalletEmailSigner.js +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.cts +4 -2
  21. package/dist/index.d.ts +4 -2
  22. package/dist/index.js +1 -1
  23. package/dist/providers/CrossmintAuthProvider.cjs +1 -1
  24. package/dist/providers/CrossmintAuthProvider.d.cts +3 -17
  25. package/dist/providers/CrossmintAuthProvider.d.ts +3 -17
  26. package/dist/providers/CrossmintAuthProvider.js +1 -1
  27. package/dist/providers/CrossmintAuthProviderInternal.cjs +1 -0
  28. package/dist/providers/CrossmintAuthProviderInternal.d.cts +31 -0
  29. package/dist/providers/CrossmintAuthProviderInternal.d.ts +31 -0
  30. package/dist/providers/CrossmintAuthProviderInternal.js +1 -0
  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 +9 -1
  35. package/dist/providers/CrossmintWalletProvider.d.ts +9 -1
  36. package/dist/providers/CrossmintWalletProvider.js +1 -1
  37. package/dist/providers/index.cjs +1 -1
  38. package/dist/providers/index.d.cts +0 -1
  39. package/dist/providers/index.d.ts +0 -1
  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-6R7OYJL5.cjs +0 -1
  47. package/dist/chunk-7FUTPEOI.js +0 -1
  48. package/dist/chunk-DUTPQ56Q.js +0 -1
  49. package/dist/chunk-IGVX4KAM.cjs +0 -1
  50. package/dist/chunk-KAGVZXHC.cjs +0 -1
  51. package/dist/chunk-QM2JVAWV.cjs +0 -1
  52. package/dist/chunk-VAYO3TTH.js +0 -1
  53. package/dist/chunk-WYLNTYVI.js +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var o=Object.defineProperty,p=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable;var j=(a,c,b)=>c in a?o(a,c,{enumerable:!0,configurable:!0,writable:!0,value:b}):a[c]=b,r= exports.a =(a,c)=>{for(var b in c||(c={}))k.call(c,b)&&j(a,b,c[b]);if(f)for(var b of f(c))l.call(c,b)&&j(a,b,c[b]);return a},s= exports.b =(a,c)=>p(a,q(c));var t=(a,c)=>{var b={};for(var d in a)k.call(a,d)&&c.indexOf(d)<0&&(b[d]=a[d]);if(a!=null&&f)for(var d of f(a))c.indexOf(d)<0&&l.call(a,d)&&(b[d]=a[d]);return b};var u=(a,c,b)=>new Promise((d,i)=>{var m=e=>{try{g(b.next(e))}catch(h){i(h)}},n=e=>{try{g(b.throw(e))}catch(h){i(h)}},g=e=>e.done?d(e.value):Promise.resolve(e.value).then(m,n);g((b=b.apply(a,c)).next())});exports.a = r; exports.b = s; exports.c = t; exports.d = u;
@@ -0,0 +1 @@
1
+ import{b as m,d,h as l}from"./chunk-LA7LM24F.js";import{a as n,b as s,c as u}from"./chunk-PXDN3KFO.js";import{useEffect as h}from"react";import{jsx as c}from"react/jsx-runtime";function a({children:i}){let{experimental_setCustomAuth:r,experimental_customAuth:o}=l(),{user:t,jwt:e}=d();return h(()=>{e==null&&(o==null?void 0:o.jwt)!=null&&r(void 0),e!=null&&r({jwt:e,email:t==null?void 0:t.email})},[r,e,t]),i}function A(o){var t=o,{children:i}=t,r=u(t,["children"]);return c(m,s(n({},r),{children:c(a,{children:i})}))}export{A as a};
@@ -1 +1 @@
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};
1
+ import{d as n}from"./chunk-PXDN3KFO.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
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('./chunk-XWQOPCUS.cjs');var _chunk2WSEHVNPcjs = require('./chunk-2WSEHVNP.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function a({children:i}){let{experimental_setCustomAuth:r,experimental_customAuth:o}=_chunkXWQOPCUScjs.h.call(void 0, ),{user:t,jwt:e}=_chunkXWQOPCUScjs.d.call(void 0, );return _react.useEffect.call(void 0, ()=>{e==null&&(o==null?void 0:o.jwt)!=null&&r(void 0),e!=null&&r({jwt:e,email:t==null?void 0:t.email})},[r,e,t]),i}function v(o){var t=o,{children:i}=t,r=_chunk2WSEHVNPcjs.c.call(void 0, t,["children"]);return _jsxruntime.jsx.call(void 0, _chunkXWQOPCUScjs.b,_chunk2WSEHVNPcjs.b.call(void 0, _chunk2WSEHVNPcjs.a.call(void 0, {},r),{children:_jsxruntime.jsx.call(void 0, a,{children:i})}))}exports.a = v;
@@ -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 _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
+ "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 _chunk2WSEHVNPcjs = require('./chunk-2WSEHVNP.cjs');var _exposecurestore = require('expo-secure-store'); var e = _interopRequireWildcard(_exposecurestore);var i=class{get(t){return _chunk2WSEHVNPcjs.d.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 _chunk2WSEHVNPcjs.d.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 _chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){try{yield e.deleteItemAsync(t)}catch(r){console.error("Error removing from SecureStore:",r)}})}isAvailable(){return _chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){try{return yield e.isAvailableAsync()}catch(t){return!1}})}};exports.a = i;
@@ -0,0 +1 @@
1
+ import{a as H}from"./chunk-GDMV4TA2.js";import{d as c}from"./chunk-PXDN3KFO.js";import{createContext as pe,useEffect as L,useMemo as Y,useRef as fe,useState as U,useCallback as $}from"react";import*as p from"expo-web-browser";import{CrossmintAuth as ge}from"@crossmint/client-sdk-auth";import{SESSION_PREFIX as ve}from"@crossmint/common-sdk-auth";import{useCrossmint as N,useWallet as Je}from"@crossmint/client-sdk-react-base";import{useContext as J}from"react";function We(){let e=J(T);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function be(){let e=J(T);if(!e)throw new Error("useAuth must be used within a CrossmintAuthProvider");return e}import{useCallback as q,useEffect as re,useRef as S,useState as oe,useMemo as X,createContext as ne}from"react";import{View as se}from"react-native";import{RNWebView as ie,WebViewParent as ae}from"@crossmint/client-sdk-rn-window";import{signerInboundEvents as le,signerOutboundEvents as ue}from"@crossmint/client-signers";import{validateAPIKey as ce}from"@crossmint/common-sdk-base";import{CrossmintWalletBaseProvider as de}from"@crossmint/client-sdk-react-base";import{jsx as D,jsxs as me}from"react/jsx-runtime";var Q="https://signers.crossmint.com",P=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},F=ne({needsAuth:!1,sendEmailWithOtp:P("sendEmailWithOtp"),verifyOtp:P("verifyOtp"),reject:P("reject")});function je({children:e}){let{crossmint:d}=N("CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:v,appId:w}=d,f=ce(v);if(!f.isValid)throw new Error("Invalid API key");let W=`${Q}/?environment=${f.environment}`,b=S(null),s=S(null),[A,a]=oe(!1),y=S(P("sendEmailWithOtp")),R=S(P("verifyOtp")),M=S(P("reject")),O=X(()=>w!=null?`window.crossmintAppId = '${w}';`:"",[w]);re(()=>{b.current!=null&&s.current==null&&(s.current=new ae(b,{incomingEvents:ue,outgoingEvents:le}))},[]);let m=q(()=>c(this,null,function*(){let t=s.current;if(t!=null)try{yield t.handshakeWithChild()}catch(g){console.error("[CrossmintWalletProvider] Handshake error:",g)}}),[]),_=q(t=>{console.log("[CrossmintWalletProvider] Received message:",t.nativeEvent.data);let g=s.current;if(g!=null){try{let n=JSON.parse(t.nativeEvent.data);if(n&&typeof n.type=="string"&&n.type.startsWith("console.")){let o=n.type.split(".")[1],h=(n.data||[]).map(l=>{try{return l==="[Function]"||l==="[Circular Reference]"||l==="[Unserializable Object]"?l:JSON.parse(l)}catch(K){return l}}),E=`[WebView:${o.toUpperCase()}]`;switch(o){case"log":console.log(E,...h);break;case"error":console.error(E,...h);break;case"warn":console.warn(E,...h);break;case"info":console.info(E,...h);break;default:console.log(`[WebView Unknown:${o}]`,...h)}return}}catch(n){}g.handleMessage(t)}},[]),I=()=>{if(s.current==null)throw new Error("WebView not ready or handshake incomplete");return s.current},B=(t,g,n,o)=>c(this,null,function*(){a(t),y.current=g,R.current=n,M.current=o}),x=X(()=>({needsAuth:A,sendEmailWithOtp:y.current,verifyOtp:R.current,reject:M.current}),[A]);return me(de,{onAuthRequired:B,_getEmailSignerIframe:I,children:[D(F.Provider,{value:x,children:e}),D(se,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:D(ie,{ref:b,source:{uri:W},injectedGlobals:O,onLoadStart:t=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",t.nativeEvent.url)},onLoadEnd:m,onLoadProgress:({nativeEvent:t})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",t.progress)},onMessage:_,onError:t=>{console.error("[CrossmintWalletProvider] WebView error:",t.nativeEvent)},onHttpError:t=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",t.nativeEvent)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[Q]})})]})}import{useContext as he}from"react";function Le(){let e=he(F);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}}import{Platform as we}from"react-native";import z from"expo-constants";import{jsx as Ee}from"react/jsx-runtime";var Z={google:null,twitter:null},Ae={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},T=pe(Ae);function nt({children:e,onLoginSuccess:d,refreshRoute:v,logoutRoute:w,customStorageProvider:f,appSchema:W}){let{crossmint:b}=N("CrossmintAuthProvider must be used within CrossmintProvider"),[s,A]=U(void 0),[a,y]=U(void 0),[R,M]=U(Z),O=fe(null),m=Y(()=>f!=null?f:new H,[f]),[_,I]=U(!1),[B,x]=U(!1),t=Array.isArray(W)?W[0]:W,n=z.executionEnvironment==="storeClient"||z.appOwnership==="expo"||!!z.expoVersion?"exp://127.0.0.1:8081":t,o=Y(()=>{if(!O.current){let r={callbacks:{onLogout:()=>{A(void 0),y(void 0)},onTokenRefresh:i=>{A(i.user),y(i.jwt)}},refreshRoute:v,logoutRoute:w,storageProvider:m};O.current=ge.from(b,r)}return O.current},[m]),h=$(()=>{d==null||d()},[d]);L(()=>{a==null?m==null||m.get(ve).then(r=>{r!=null&&y(r)}).finally(()=>{I(!0)}):I(!0)},[a,m]),L(()=>{a!=null&&h()},[a,h]);let E=()=>{o.logout()},l=$(()=>c(this,null,function*(){try{let i=Object.keys(Z).map(C=>c(this,null,function*(){let V=yield o==null?void 0:o.getOAuthUrl(C,{appSchema:n});return{[C]:V}})),u=Object.assign({},...yield Promise.all(i));M(u)}catch(r){console.error(r)}}),[o]);L(()=>{s==null&&l()},[l,s]);let K=()=>_?B?"in-progress":a!=null?"logged-in":"logged-out":"initializing",ee=()=>c(this,null,function*(){if(a==null){console.log("User not logged in");return}let r=yield o.getUser();return A(r),r}),te=r=>c(this,null,function*(){var i;try{x(!0);let u=(i=R[r])!=null?i:yield o.getOAuthUrl(r,{appSchema:n});yield p.warmUpAsync();let C=new URL(u);if(r==="google"&&C.searchParams.append("provider_prompt","select_account"),we.OS==="android")yield p.openBrowserAsync(C.toString());else{let V=yield p.openAuthSessionAsync(C.toString());V.type==="success"&&(yield G(V.url))}yield p.coolDownAsync()}catch(u){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",u),new Error(`Error during OAuth login: ${u}`)}}),G=$(r=>c(this,null,function*(){let i=r.includes("://")?ye(r):r;if(i!=null)try{return x(!0),yield o.handleRefreshAuthMaterial(i)}catch(u){throw u}finally{x(!1)}return null}),[o]);return Ee(T.Provider,{value:{crossmintAuth:o,logout:E,jwt:a,user:s,status:K(),getUser:ee,loginWithOAuth:te,createAuthSession:G},children:e})}var ye=e=>{let d=/[?&]oneTimeSecret=([^&#]+)/,v=e.match(d);return v?decodeURIComponent(v[1]):void 0};export{T as a,nt as b,We as c,be as d,F as e,je as f,Le as g,N as h,Je as i};
@@ -0,0 +1 @@
1
+ var o=Object.defineProperty,p=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable;var j=(a,c,b)=>c in a?o(a,c,{enumerable:!0,configurable:!0,writable:!0,value:b}):a[c]=b,r=(a,c)=>{for(var b in c||(c={}))k.call(c,b)&&j(a,b,c[b]);if(f)for(var b of f(c))l.call(c,b)&&j(a,b,c[b]);return a},s=(a,c)=>p(a,q(c));var t=(a,c)=>{var b={};for(var d in a)k.call(a,d)&&c.indexOf(d)<0&&(b[d]=a[d]);if(a!=null&&f)for(var d of f(a))c.indexOf(d)<0&&l.call(a,d)&&(b[d]=a[d]);return b};var u=(a,c,b)=>new Promise((d,i)=>{var m=e=>{try{g(b.next(e))}catch(h){i(h)}},n=e=>{try{g(b.throw(e))}catch(h){i(h)}},g=e=>e.done?d(e.value):Promise.resolve(e.value).then(m,n);g((b=b.apply(a,c)).next())});export{r as a,s as b,t as c,u as d};
@@ -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 _chunkK754GXKDcjs = require('./chunk-K754GXKD.cjs');var _chunk2WSEHVNPcjs = require('./chunk-2WSEHVNP.cjs');var _react = require('react');var _expowebbrowser = require('expo-web-browser'); var p = _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 Pe(){let e=_react.useContext.call(void 0, j);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function We(){let e=_react.useContext.call(void 0, j);if(!e)throw new Error("useAuth must be used within a CrossmintAuthProvider");return e}var _reactnative = require('react-native');var _clientsdkrnwindow = require('@crossmint/client-sdk-rn-window');var _clientsigners = require('@crossmint/client-signers');var _commonsdkbase = require('@crossmint/common-sdk-base');var _jsxruntime = require('react/jsx-runtime');var X="https://signers.crossmint.com",P=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},D= exports.e =_react.createContext.call(void 0, {needsAuth:!1,sendEmailWithOtp:P("sendEmailWithOtp"),verifyOtp:P("verifyOtp"),reject:P("reject")});function ke({children:e}){let{crossmint:d}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:v,appId:w}=d,f=_commonsdkbase.validateAPIKey.call(void 0, v);if(!f.isValid)throw new Error("Invalid API key");let W=`${X}/?environment=${f.environment}`,b=_react.useRef.call(void 0, null),s=_react.useRef.call(void 0, null),[A,a]=_react.useState.call(void 0, !1),y=_react.useRef.call(void 0, P("sendEmailWithOtp")),R=_react.useRef.call(void 0, P("verifyOtp")),M=_react.useRef.call(void 0, P("reject")),O=_react.useMemo.call(void 0, ()=>w!=null?`window.crossmintAppId = '${w}';`:"",[w]);_react.useEffect.call(void 0, ()=>{b.current!=null&&s.current==null&&(s.current=new (0, _clientsdkrnwindow.WebViewParent)(b,{incomingEvents:_clientsigners.signerOutboundEvents,outgoingEvents:_clientsigners.signerInboundEvents}))},[]);let m=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let t=s.current;if(t!=null)try{yield t.handshakeWithChild()}catch(g){console.error("[CrossmintWalletProvider] Handshake error:",g)}}),[]),N=_react.useCallback.call(void 0, t=>{console.log("[CrossmintWalletProvider] Received message:",t.nativeEvent.data);let g=s.current;if(g!=null){try{let n=JSON.parse(t.nativeEvent.data);if(n&&typeof n.type=="string"&&n.type.startsWith("console.")){let o=n.type.split(".")[1],h=(n.data||[]).map(l=>{try{return l==="[Function]"||l==="[Circular Reference]"||l==="[Unserializable Object]"?l:JSON.parse(l)}catch(z){return l}}),E=`[WebView:${o.toUpperCase()}]`;switch(o){case"log":console.log(E,...h);break;case"error":console.error(E,...h);break;case"warn":console.warn(E,...h);break;case"info":console.info(E,...h);break;default:console.log(`[WebView Unknown:${o}]`,...h)}return}}catch(n){}g.handleMessage(t)}},[]),I=()=>{if(s.current==null)throw new Error("WebView not ready or handshake incomplete");return s.current},_=(t,g,n,o)=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){a(t),y.current=g,R.current=n,M.current=o}),x=_react.useMemo.call(void 0, ()=>({needsAuth:A,sendEmailWithOtp:y.current,verifyOtp:R.current,reject:M.current}),[A]);return _jsxruntime.jsxs.call(void 0, _clientsdkreactbase.CrossmintWalletBaseProvider,{onAuthRequired:_,_getEmailSignerIframe:I,children:[_jsxruntime.jsx.call(void 0, D.Provider,{value:x,children:e}),_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:b,source:{uri:W},injectedGlobals:O,onLoadStart:t=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",t.nativeEvent.url)},onLoadEnd:m,onLoadProgress:({nativeEvent:t})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",t.progress)},onMessage:N,onError:t=>{console.error("[CrossmintWalletProvider] WebView error:",t.nativeEvent)},onHttpError:t=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",t.nativeEvent)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[X]})})]})}function Fe(){let e=_react.useContext.call(void 0, D);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}}var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);var Y={google:null,twitter:null},we={crossmintAuth:void 0,logout:()=>{},jwt:void 0,user:void 0,status:"initializing",getUser:()=>{},loginWithOAuth:()=>Promise.resolve(),createAuthSession:()=>Promise.resolve(null)},j= exports.a =_react.createContext.call(void 0, we);function ot({children:e,onLoginSuccess:d,refreshRoute:v,logoutRoute:w,customStorageProvider:f,appSchema:W}){let{crossmint:b}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[s,A]=_react.useState.call(void 0, void 0),[a,y]=_react.useState.call(void 0, void 0),[R,M]=_react.useState.call(void 0, Y),O=_react.useRef.call(void 0, null),m=_react.useMemo.call(void 0, ()=>f!=null?f:new _chunkK754GXKDcjs.a,[f]),[N,I]=_react.useState.call(void 0, !1),[_,x]=_react.useState.call(void 0, !1),t=Array.isArray(W)?W[0]:W,n=_expoconstants2.default.executionEnvironment==="storeClient"||_expoconstants2.default.appOwnership==="expo"||!!_expoconstants2.default.expoVersion?"exp://127.0.0.1:8081":t,o=_react.useMemo.call(void 0, ()=>{if(!O.current){let r={callbacks:{onLogout:()=>{A(void 0),y(void 0)},onTokenRefresh:i=>{A(i.user),y(i.jwt)}},refreshRoute:v,logoutRoute:w,storageProvider:m};O.current=_clientsdkauth.CrossmintAuth.from(b,r)}return O.current},[m]),h=_react.useCallback.call(void 0, ()=>{d==null||d()},[d]);_react.useEffect.call(void 0, ()=>{a==null?m==null||m.get(_commonsdkauth.SESSION_PREFIX).then(r=>{r!=null&&y(r)}).finally(()=>{I(!0)}):I(!0)},[a,m]),_react.useEffect.call(void 0, ()=>{a!=null&&h()},[a,h]);let E=()=>{o.logout()},l=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){try{let i=Object.keys(Y).map(C=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let V=yield o==null?void 0:o.getOAuthUrl(C,{appSchema:n});return{[C]:V}})),u=Object.assign({},...yield Promise.all(i));M(u)}catch(r){console.error(r)}}),[o]);_react.useEffect.call(void 0, ()=>{s==null&&l()},[l,s]);let z=()=>N?_?"in-progress":a!=null?"logged-in":"logged-out":"initializing",Z=()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){if(a==null){console.log("User not logged in");return}let r=yield o.getUser();return A(r),r}),ee=r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){var i;try{x(!0);let u=(i=R[r])!=null?i:yield o.getOAuthUrl(r,{appSchema:n});yield p.warmUpAsync();let C=new URL(u);if(r==="google"&&C.searchParams.append("provider_prompt","select_account"),_reactnative.Platform.OS==="android")yield p.openBrowserAsync(C.toString());else{let V=yield p.openAuthSessionAsync(C.toString());V.type==="success"&&(yield K(V.url))}yield p.coolDownAsync()}catch(u){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",u),new Error(`Error during OAuth login: ${u}`)}}),K=_react.useCallback.call(void 0, r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let i=r.includes("://")?Ae(r):r;if(i!=null)try{return x(!0),yield o.handleRefreshAuthMaterial(i)}catch(u){throw u}finally{x(!1)}return null}),[o]);return _jsxruntime.jsx.call(void 0, j.Provider,{value:{crossmintAuth:o,logout:E,jwt:a,user:s,status:z(),getUser:Z,loginWithOAuth:ee,createAuthSession:K},children:e})}var Ae=e=>{let d=/[?&]oneTimeSecret=([^&#]+)/,v=e.match(d);return v?decodeURIComponent(v[1]):void 0};exports.a = j; exports.b = ot; exports.c = Pe; exports.d = We; exports.e = D; exports.f = ke; exports.g = Fe; exports.h = _clientsdkreactbase.useCrossmint; exports.i = _clientsdkreactbase.useWallet;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKAGVZXHCcjs = require('../chunk-KAGVZXHC.cjs');require('../chunk-ZPIV7DVZ.cjs');var _chunkQM2JVAWVcjs = require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useAuth = _chunkKAGVZXHCcjs.d; exports.useCrossmint = _chunkKAGVZXHCcjs.e; exports.useCrossmintAuth = _chunkKAGVZXHCcjs.c; exports.useWallet = _chunkKAGVZXHCcjs.f; exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useAuth = _chunkXWQOPCUScjs.d; exports.useCrossmint = _chunkXWQOPCUScjs.h; exports.useCrossmintAuth = _chunkXWQOPCUScjs.c; exports.useWallet = _chunkXWQOPCUScjs.i; exports.useWalletEmailSigner = _chunkXWQOPCUScjs.g;
@@ -1,7 +1,7 @@
1
1
  export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './useCrossmintAuth.cjs';
3
3
  export { EmailSignerFunctions, useWalletEmailSigner } from './useWalletEmailSigner.cjs';
4
- import '../providers/CrossmintAuthProvider.cjs';
4
+ import '../providers/CrossmintAuthProviderInternal.cjs';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
7
  import '@crossmint/client-sdk-auth';
@@ -1,7 +1,7 @@
1
1
  export { useCrossmint, useWallet } from '@crossmint/client-sdk-react-base';
2
2
  export { useAuth, useCrossmintAuth } from './useCrossmintAuth.js';
3
3
  export { EmailSignerFunctions, useWalletEmailSigner } from './useWalletEmailSigner.js';
4
- import '../providers/CrossmintAuthProvider.js';
4
+ import '../providers/CrossmintAuthProviderInternal.js';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
7
  import '@crossmint/client-sdk-auth';
@@ -1 +1 @@
1
- import{c as a,d as b,e as d,f as e}from"../chunk-7FUTPEOI.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
+ import{c as a,d as b,g as c,h as d,i as e}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.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 _chunkKAGVZXHCcjs = require('../chunk-KAGVZXHC.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useAuth = _chunkKAGVZXHCcjs.d; exports.useCrossmintAuth = _chunkKAGVZXHCcjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useAuth = _chunkXWQOPCUScjs.d; exports.useCrossmintAuth = _chunkXWQOPCUScjs.c;
@@ -1,4 +1,4 @@
1
- import { AuthContextType } from '../providers/CrossmintAuthProvider.cjs';
1
+ import { AuthContextType } from '../providers/CrossmintAuthProviderInternal.cjs';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '@crossmint/client-sdk-auth';
@@ -1,4 +1,4 @@
1
- import { AuthContextType } from '../providers/CrossmintAuthProvider.js';
1
+ import { AuthContextType } from '../providers/CrossmintAuthProviderInternal.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '@crossmint/client-sdk-auth';
@@ -1 +1 @@
1
- import{c as a,d as b}from"../chunk-7FUTPEOI.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{b as useAuth,a as useCrossmintAuth};
1
+ import{c as a,d as b}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{b as useAuth,a as useCrossmintAuth};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQM2JVAWVcjs = require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useWalletEmailSigner = _chunkXWQOPCUScjs.g;
@@ -1 +1 @@
1
- import{a}from"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as useWalletEmailSigner};
1
+ import{g as a}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.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 _chunkYBYUZ7SKcjs = require('./chunk-YBYUZ7SK.cjs');var _chunkIGVX4KAMcjs = require('./chunk-IGVX4KAM.cjs');var _chunkKAGVZXHCcjs = require('./chunk-KAGVZXHC.cjs');require('./chunk-ZPIV7DVZ.cjs');var _chunkQM2JVAWVcjs = require('./chunk-QM2JVAWV.cjs');require('./chunk-6R7OYJL5.cjs');exports.CrossmintAuthProvider = _chunkKAGVZXHCcjs.b; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkIGVX4KAMcjs.a; exports.useAuth = _chunkKAGVZXHCcjs.d; exports.useCrossmint = _chunkKAGVZXHCcjs.e; exports.useCrossmintAuth = _chunkKAGVZXHCcjs.c; exports.useWallet = _chunkKAGVZXHCcjs.f; exports.useWalletEmailSigner = _chunkQM2JVAWVcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-ZR6BLDCD.cjs');var _chunkIFRONN73cjs = require('./chunk-IFRONN73.cjs');var _chunkXWQOPCUScjs = require('./chunk-XWQOPCUS.cjs');require('./chunk-K754GXKD.cjs');var _chunkYBYUZ7SKcjs = require('./chunk-YBYUZ7SK.cjs');require('./chunk-2WSEHVNP.cjs');exports.CrossmintAuthProvider = _chunkIFRONN73cjs.a; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkXWQOPCUScjs.f; exports.useAuth = _chunkXWQOPCUScjs.d; exports.useCrossmint = _chunkXWQOPCUScjs.h; exports.useCrossmintAuth = _chunkXWQOPCUScjs.c; exports.useWallet = _chunkXWQOPCUScjs.i; exports.useWalletEmailSigner = _chunkXWQOPCUScjs.g;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { Balances, DelegatedSigner, useCrossmint, useWallet } 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
3
  export { EmailSignerFunctions, useWalletEmailSigner } from './hooks/useWalletEmailSigner.cjs';
4
4
  export { CrossmintProvider } from './providers/CrossmintProvider.cjs';
@@ -6,7 +6,9 @@ export { CrossmintAuthProvider } from './providers/CrossmintAuthProvider.cjs';
6
6
  export { CrossmintWalletProvider } from './providers/CrossmintWalletProvider.cjs';
7
7
  export { CrossmintEvent, CrossmintEventMap } from '@crossmint/client-sdk-base';
8
8
  export { OAuthProvider, SDKExternalUser } from '@crossmint/common-sdk-auth';
9
+ export { Activity, Balances, Chain, DelegatedSigner, EVMWallet, SolanaWallet, Wallet } from '@crossmint/wallets-sdk';
10
+ import './providers/CrossmintAuthProviderInternal.cjs';
9
11
  import 'react/jsx-runtime';
10
12
  import 'react';
11
- import '@crossmint/common-sdk-base';
12
13
  import '@crossmint/client-sdk-auth';
14
+ import '@crossmint/common-sdk-base';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Balances, DelegatedSigner, useCrossmint, useWallet } 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
3
  export { EmailSignerFunctions, useWalletEmailSigner } from './hooks/useWalletEmailSigner.js';
4
4
  export { CrossmintProvider } from './providers/CrossmintProvider.js';
@@ -6,7 +6,9 @@ export { CrossmintAuthProvider } from './providers/CrossmintAuthProvider.js';
6
6
  export { CrossmintWalletProvider } from './providers/CrossmintWalletProvider.js';
7
7
  export { CrossmintEvent, CrossmintEventMap } from '@crossmint/client-sdk-base';
8
8
  export { OAuthProvider, SDKExternalUser } from '@crossmint/common-sdk-auth';
9
+ export { Activity, Balances, Chain, DelegatedSigner, EVMWallet, SolanaWallet, Wallet } from '@crossmint/wallets-sdk';
10
+ import './providers/CrossmintAuthProviderInternal.js';
9
11
  import 'react/jsx-runtime';
10
12
  import 'react';
11
- import '@crossmint/common-sdk-base';
12
13
  import '@crossmint/client-sdk-auth';
14
+ import '@crossmint/common-sdk-base';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-C62HRWJA.js";import{a as m}from"./chunk-ZENPJSBN.js";import{a}from"./chunk-VAYO3TTH.js";import{b as e,c as t,d as r,e as s,f as n}from"./chunk-7FUTPEOI.js";import"./chunk-BWWCPHLC.js";import{a as o}from"./chunk-WYLNTYVI.js";import"./chunk-DUTPQ56Q.js";export{e as CrossmintAuthProvider,m as CrossmintProvider,a as CrossmintWalletProvider,r as useAuth,s as useCrossmint,t as useCrossmintAuth,n as useWallet,o as useWalletEmailSigner};
1
+ import"./chunk-C62HRWJA.js";import{a as l}from"./chunk-CY6IQ54O.js";import{c as t,d as e,f as r,g as o,h as s,i as a}from"./chunk-LA7LM24F.js";import"./chunk-GDMV4TA2.js";import{a as n}from"./chunk-ZENPJSBN.js";import"./chunk-PXDN3KFO.js";export{l as CrossmintAuthProvider,n as CrossmintProvider,r as CrossmintWalletProvider,e as useAuth,s as useCrossmint,t as useCrossmintAuth,a as useWallet,o as useWalletEmailSigner};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKAGVZXHCcjs = require('../chunk-KAGVZXHC.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.AuthContext = _chunkKAGVZXHCcjs.a; exports.CrossmintAuthProvider = _chunkKAGVZXHCcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIFRONN73cjs = require('../chunk-IFRONN73.cjs');require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintAuthProvider = _chunkIFRONN73cjs.a;
@@ -1,20 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as react from 'react';
3
2
  import { ReactNode } from 'react';
4
- import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
- import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
3
+ import { StorageProvider } from '@crossmint/client-sdk-auth';
6
4
 
7
- type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
- type AuthContextType = {
9
- crossmintAuth?: CrossmintAuth;
10
- logout: () => void;
11
- jwt?: string;
12
- user?: SDKExternalUser;
13
- status: AuthStatus;
14
- getUser: () => void;
15
- loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
16
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
17
- };
18
5
  type CrossmintAuthProviderProps = {
19
6
  prefetchOAuthUrls?: boolean;
20
7
  onLoginSuccess?: () => void;
@@ -25,7 +12,6 @@ type CrossmintAuthProviderProps = {
25
12
  customStorageProvider?: StorageProvider;
26
13
  appSchema?: string | string[];
27
14
  };
28
- declare const AuthContext: react.Context<AuthContextType>;
29
- declare function CrossmintAuthProvider({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
15
+ declare function CrossmintAuthProvider({ children, ...props }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
16
 
31
- export { AuthContext, type AuthContextType, CrossmintAuthProvider };
17
+ export { CrossmintAuthProvider, type CrossmintAuthProviderProps };
@@ -1,20 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as react from 'react';
3
2
  import { ReactNode } from 'react';
4
- import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
- import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
3
+ import { StorageProvider } from '@crossmint/client-sdk-auth';
6
4
 
7
- type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
- type AuthContextType = {
9
- crossmintAuth?: CrossmintAuth;
10
- logout: () => void;
11
- jwt?: string;
12
- user?: SDKExternalUser;
13
- status: AuthStatus;
14
- getUser: () => void;
15
- loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
16
- createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
17
- };
18
5
  type CrossmintAuthProviderProps = {
19
6
  prefetchOAuthUrls?: boolean;
20
7
  onLoginSuccess?: () => void;
@@ -25,7 +12,6 @@ type CrossmintAuthProviderProps = {
25
12
  customStorageProvider?: StorageProvider;
26
13
  appSchema?: string | string[];
27
14
  };
28
- declare const AuthContext: react.Context<AuthContextType>;
29
- declare function CrossmintAuthProvider({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
15
+ declare function CrossmintAuthProvider({ children, ...props }: CrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
16
 
31
- export { AuthContext, type AuthContextType, CrossmintAuthProvider };
17
+ export { CrossmintAuthProvider, type CrossmintAuthProviderProps };
@@ -1 +1 @@
1
- import{a,b}from"../chunk-7FUTPEOI.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as AuthContext,b as CrossmintAuthProvider};
1
+ import{a}from"../chunk-CY6IQ54O.js";import"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{a as CrossmintAuthProvider};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.AuthContext = _chunkXWQOPCUScjs.a; exports.CrossmintAuthProviderInternal = _chunkXWQOPCUScjs.b;
@@ -0,0 +1,31 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ReactNode } from 'react';
4
+ import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
+ import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
6
+
7
+ type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
+ type AuthContextType = {
9
+ crossmintAuth?: CrossmintAuth;
10
+ logout: () => void;
11
+ jwt?: string;
12
+ user?: SDKExternalUser;
13
+ status: AuthStatus;
14
+ getUser: () => void;
15
+ loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
16
+ createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
17
+ };
18
+ type InternalCrossmintAuthProviderProps = {
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
+ declare const AuthContext: react.Context<AuthContextType>;
29
+ declare function CrossmintAuthProviderInternal({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: InternalCrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
+
31
+ export { AuthContext, type AuthContextType, CrossmintAuthProviderInternal };
@@ -0,0 +1,31 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ReactNode } from 'react';
4
+ import { CrossmintAuth, StorageProvider } from '@crossmint/client-sdk-auth';
5
+ import { SDKExternalUser, OAuthProvider, AuthMaterialWithUser } from '@crossmint/common-sdk-auth';
6
+
7
+ type AuthStatus = "logged-in" | "logged-out" | "in-progress" | "initializing";
8
+ type AuthContextType = {
9
+ crossmintAuth?: CrossmintAuth;
10
+ logout: () => void;
11
+ jwt?: string;
12
+ user?: SDKExternalUser;
13
+ status: AuthStatus;
14
+ getUser: () => void;
15
+ loginWithOAuth: (provider: OAuthProvider) => Promise<void>;
16
+ createAuthSession: (urlOrOneTimeSecret: string) => Promise<AuthMaterialWithUser | null>;
17
+ };
18
+ type InternalCrossmintAuthProviderProps = {
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
+ declare const AuthContext: react.Context<AuthContextType>;
29
+ declare function CrossmintAuthProviderInternal({ children, onLoginSuccess, refreshRoute, logoutRoute, customStorageProvider, appSchema, }: InternalCrossmintAuthProviderProps): react_jsx_runtime.JSX.Element;
30
+
31
+ export { AuthContext, type AuthContextType, CrossmintAuthProviderInternal };
@@ -0,0 +1 @@
1
+ import{a,b}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{a as AuthContext,b as CrossmintAuthProviderInternal};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYBYUZ7SKcjs = require('../chunk-YBYUZ7SK.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYBYUZ7SKcjs = require('../chunk-YBYUZ7SK.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a;
@@ -1 +1 @@
1
- import{a}from"../chunk-ZENPJSBN.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintProvider};
1
+ import{a}from"../chunk-ZENPJSBN.js";import"../chunk-PXDN3KFO.js";export{a as CrossmintProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIGVX4KAMcjs = require('../chunk-IGVX4KAM.cjs');require('../chunk-KAGVZXHC.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintWalletProvider = _chunkIGVX4KAMcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintWalletEmailSignerContext = _chunkXWQOPCUScjs.e; exports.CrossmintWalletProvider = _chunkXWQOPCUScjs.f;
@@ -1,9 +1,17 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
2
3
  import { ReactNode } from 'react';
3
4
 
5
+ type CrossmintWalletEmailSignerContext = {
6
+ needsAuth: boolean;
7
+ sendEmailWithOtp: () => Promise<void>;
8
+ verifyOtp: (otp: string) => Promise<void>;
9
+ reject: (error?: Error) => void;
10
+ };
11
+ declare const CrossmintWalletEmailSignerContext: react.Context<CrossmintWalletEmailSignerContext>;
4
12
  interface CrossmintWalletProviderProps {
5
13
  children: ReactNode;
6
14
  }
7
15
  declare function CrossmintWalletProvider({ children }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
8
16
 
9
- export { CrossmintWalletProvider, type CrossmintWalletProviderProps };
17
+ export { CrossmintWalletEmailSignerContext, CrossmintWalletProvider, type CrossmintWalletProviderProps };
@@ -1,9 +1,17 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
2
3
  import { ReactNode } from 'react';
3
4
 
5
+ type CrossmintWalletEmailSignerContext = {
6
+ needsAuth: boolean;
7
+ sendEmailWithOtp: () => Promise<void>;
8
+ verifyOtp: (otp: string) => Promise<void>;
9
+ reject: (error?: Error) => void;
10
+ };
11
+ declare const CrossmintWalletEmailSignerContext: react.Context<CrossmintWalletEmailSignerContext>;
4
12
  interface CrossmintWalletProviderProps {
5
13
  children: ReactNode;
6
14
  }
7
15
  declare function CrossmintWalletProvider({ children }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
8
16
 
9
- export { CrossmintWalletProvider, type CrossmintWalletProviderProps };
17
+ export { CrossmintWalletEmailSignerContext, CrossmintWalletProvider, type CrossmintWalletProviderProps };
@@ -1 +1 @@
1
- import{a}from"../chunk-VAYO3TTH.js";import"../chunk-7FUTPEOI.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintWalletProvider};
1
+ import{e as a,f as b}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{a as CrossmintWalletEmailSignerContext,b as CrossmintWalletProvider};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var _chunkYBYUZ7SKcjs = require('../chunk-YBYUZ7SK.cjs');var _chunkIGVX4KAMcjs = require('../chunk-IGVX4KAM.cjs');var _chunkKAGVZXHCcjs = require('../chunk-KAGVZXHC.cjs');require('../chunk-ZPIV7DVZ.cjs');require('../chunk-QM2JVAWV.cjs');require('../chunk-6R7OYJL5.cjs');exports.CrossmintAuthProvider = _chunkKAGVZXHCcjs.b; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkIGVX4KAMcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var _chunkIFRONN73cjs = require('../chunk-IFRONN73.cjs');var _chunkXWQOPCUScjs = require('../chunk-XWQOPCUS.cjs');require('../chunk-K754GXKD.cjs');var _chunkYBYUZ7SKcjs = require('../chunk-YBYUZ7SK.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintAuthProvider = _chunkIFRONN73cjs.a; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkXWQOPCUScjs.f;
@@ -5,4 +5,3 @@ import 'react/jsx-runtime';
5
5
  import 'react';
6
6
  import '@crossmint/common-sdk-base';
7
7
  import '@crossmint/client-sdk-auth';
8
- import '@crossmint/common-sdk-auth';
@@ -5,4 +5,3 @@ import 'react/jsx-runtime';
5
5
  import 'react';
6
6
  import '@crossmint/common-sdk-base';
7
7
  import '@crossmint/client-sdk-auth';
8
- import '@crossmint/common-sdk-auth';
@@ -1 +1 @@
1
- import"../chunk-C62HRWJA.js";import{a as b}from"../chunk-ZENPJSBN.js";import{a as c}from"../chunk-VAYO3TTH.js";import{b as a}from"../chunk-7FUTPEOI.js";import"../chunk-BWWCPHLC.js";import"../chunk-WYLNTYVI.js";import"../chunk-DUTPQ56Q.js";export{a as CrossmintAuthProvider,b as CrossmintProvider,c as CrossmintWalletProvider};
1
+ import"../chunk-C62HRWJA.js";import{a as c}from"../chunk-CY6IQ54O.js";import{f as a}from"../chunk-LA7LM24F.js";import"../chunk-GDMV4TA2.js";import{a as b}from"../chunk-ZENPJSBN.js";import"../chunk-PXDN3KFO.js";export{c as CrossmintAuthProvider,b as CrossmintProvider,a as CrossmintWalletProvider};
@@ -1 +1 @@
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;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-2WSEHVNP.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-DUTPQ56Q.js";var e="sk_development_12341234",p="com.app.id";export{e as MOCK_API_KEY,p as MOCK_APP_ID};
1
+ import"./chunk-PXDN3KFO.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 _chunkZPIV7DVZcjs = require('../chunk-ZPIV7DVZ.cjs');require('../chunk-6R7OYJL5.cjs');exports.SecureStorage = _chunkZPIV7DVZcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkK754GXKDcjs = require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.SecureStorage = _chunkK754GXKDcjs.a;
@@ -1 +1 @@
1
- import{a}from"../chunk-BWWCPHLC.js";import"../chunk-DUTPQ56Q.js";export{a as SecureStorage};
1
+ import{a}from"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.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.5.6",
3
+ "version": "0.6.0",
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.0",
25
25
  "expo-web-browser": "~14.0.2",
26
26
  "react-native-webview": "13.12.5",
27
- "@crossmint/client-sdk-auth": "1.2.12",
28
- "@crossmint/client-sdk-base": "1.5.4",
29
- "@crossmint/client-sdk-react-base": "0.4.5",
27
+ "@crossmint/client-sdk-auth": "1.2.14",
28
+ "@crossmint/client-sdk-base": "1.5.6",
29
+ "@crossmint/client-sdk-react-base": "0.5.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.35",
33
- "@crossmint/common-sdk-base": "0.7.1",
34
- "@crossmint/wallets-sdk": "0.9.5"
32
+ "@crossmint/common-sdk-auth": "1.0.37",
33
+ "@crossmint/common-sdk-base": "0.8.0",
34
+ "@crossmint/wallets-sdk": "0.10.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/react": "19.0.12"
@@ -1 +0,0 @@
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 +0,0 @@
1
- import{a as W}from"./chunk-BWWCPHLC.js";import{a as h}from"./chunk-DUTPQ56Q.js";import{createContext as $,useEffect as U,useMemo as _,useRef as q,useState as d,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 z,useWallet as pt}from"@crossmint/client-sdk-react-base";import{useContext as B}from"react";function st(){let o=B(A);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function it(){let o=B(A);if(!o)throw new Error("useAuth must be used within a CrossmintAuthProvider");return o}import{Platform as Y}from"react-native";import O from"expo-constants";import{jsx as et}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=$(Z);function Ut({children:o,onLoginSuccess:u,refreshRoute:c,logoutRoute:v,customStorageProvider:p,appSchema:g}){let[f,w]=d(void 0),{crossmint:n,setJwt:S,experimental_setCustomAuth:x}=z("CrossmintAuthProvider must be used within CrossmintProvider"),[D,F]=d(k),y=q(null),a=_(()=>p!=null?p:new W,[p]),[K,b]=d(!1),[N,C]=d(!1),G=Array.isArray(g)?g[0]:g,j=O.executionEnvironment==="storeClient"||O.appOwnership==="expo"||!!O.expoVersion?"exp://127.0.0.1:8081":G,r=_(()=>{if(!y.current){let t={callbacks:{onLogout:()=>{x(void 0),w(void 0)},onTokenRefresh:e=>{w(e.user),x({email:e.user.email,jwt:e.jwt})}},refreshRoute:c,logoutRoute:v,storageProvider:a};y.current=L.from(n,t)}return y.current},[a]),E=P(()=>{u==null||u()},[u]);U(()=>{n.jwt==null?a==null||a.get(Q).then(t=>{t!=null&&S(t)}).finally(()=>{b(!0)}):b(!0)},[n.jwt,S,a]),U(()=>{n.jwt!=null&&E()},[n.jwt,E]);let J=()=>{r.logout()},R=P(()=>h(this,null,function*(){try{let e=Object.keys(k).map(l=>h(this,null,function*(){let m=yield r==null?void 0:r.getOAuthUrl(l,{appSchema:j});return{[l]:m}})),s=Object.assign({},...yield Promise.all(e));F(s)}catch(t){console.error(t)}}),[r]);U(()=>{f==null&&R()},[R,f]);let V=()=>K?N?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",H=()=>h(this,null,function*(){var e;if(n.jwt==null){console.log("User not logged in");return}let t=yield r.getUser();return w(t),x({email:t.email,jwt:(e=n.experimental_customAuth)==null?void 0:e.jwt}),t}),X=t=>h(this,null,function*(){var e;try{C(!0);let s=(e=D[t])!=null?e:yield r.getOAuthUrl(t,{appSchema:j});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 M(m.url))}yield i.coolDownAsync()}catch(s){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",s),new Error(`Error during OAuth login: ${s}`)}}),M=P(t=>h(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(A.Provider,{value:{crossmintAuth:r,logout:J,jwt:n.jwt,user:f,status:V(),getUser:H,loginWithOAuth:X,createAuthSession:M},children:o})}var tt=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,c=o.match(u);return c?decodeURIComponent(c[1]):void 0};export{A as a,Ut as b,st as c,it as d,z as e,pt as f};
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKAGVZXHCcjs = require('./chunk-KAGVZXHC.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}=_chunkKAGVZXHCcjs.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;
@@ -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 _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, A);if(!o)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return o}function st(){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 _={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 Ct({children:o,onLoginSuccess:u,refreshRoute:c,logoutRoute:v,customStorageProvider:p,appSchema:g}){let[f,w]=_react.useState.call(void 0, void 0),{crossmint:n,setJwt:S,experimental_setCustomAuth:x}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[k,D]=_react.useState.call(void 0, _),y=_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,j=_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(!y.current){let t={callbacks:{onLogout:()=>{x(void 0),w(void 0)},onTokenRefresh:e=>{w(e.user),x({email:e.user.email,jwt:e.jwt})}},refreshRoute:c,logoutRoute:v,storageProvider:a};y.current=_clientsdkauth.CrossmintAuth.from(n,t)}return y.current},[a]),E=_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&&E()},[n.jwt,E]);let G=()=>{r.logout()},R=_react.useCallback.call(void 0, ()=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){try{let e=Object.keys(_).map(l=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){let m=yield r==null?void 0:r.getOAuthUrl(l,{appSchema:j});return{[l]:m}})),s=Object.assign({},...yield Promise.all(e));D(s)}catch(t){console.error(t)}}),[r]);_react.useEffect.call(void 0, ()=>{f==null&&R()},[R,f]);let J=()=>F?K?"in-progress":n.jwt!=null?"logged-in":"logged-out":"initializing",V=()=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){var e;if(n.jwt==null){console.log("User not logged in");return}let t=yield r.getUser();return w(t),x({email:t.email,jwt:(e=n.experimental_customAuth)==null?void 0:e.jwt}),t}),H=t=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){var e;try{C(!0);let s=(e=k[t])!=null?e:yield r.getOAuthUrl(t,{appSchema:j});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 M(m.url))}yield i.coolDownAsync()}catch(s){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",s),new Error(`Error during OAuth login: ${s}`)}}),M=_react.useCallback.call(void 0, t=>_chunk6R7OYJL5cjs.a.call(void 0, this,null,function*(){let e=t.includes("://")?Z(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, A.Provider,{value:{crossmintAuth:r,logout:G,jwt:n.jwt,user:f,status:J(),getUser:V,loginWithOAuth:H,createAuthSession:M},children:o})}var Z=o=>{let u=/[?&]oneTimeSecret=([^&#]+)/,c=o.match(u);return c?decodeURIComponent(c[1]):void 0};exports.a = A; exports.b = Ct; exports.c = nt; exports.d = st; exports.e = _clientsdkreactbase.useCrossmint; exports.f = _clientsdkreactbase.useWallet;
@@ -1 +0,0 @@
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;
@@ -1 +0,0 @@
1
- import{e as w}from"./chunk-7FUTPEOI.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};
@@ -1 +0,0 @@
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};