@crossmint/client-sdk-react-native-ui 0.7.0 → 0.8.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.
- package/dist/chunk-GC2BGKUC.js +1 -0
- package/dist/chunk-R62SJDSA.cjs +1 -0
- package/dist/{chunk-AYPZCQ6I.js → chunk-S6THHBSF.js} +1 -1
- package/dist/{chunk-BV2NDI4L.cjs → chunk-UHGR7JZY.cjs} +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useCrossmintAuth.cjs +1 -1
- package/dist/hooks/useCrossmintAuth.js +1 -1
- package/dist/hooks/useWalletEmailSigner.cjs +1 -1
- package/dist/hooks/useWalletEmailSigner.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/providers/CrossmintAuthProvider.cjs +1 -1
- package/dist/providers/CrossmintAuthProvider.js +1 -1
- package/dist/providers/CrossmintAuthProviderInternal.cjs +1 -1
- package/dist/providers/CrossmintAuthProviderInternal.js +1 -1
- package/dist/providers/CrossmintWalletProvider.cjs +1 -1
- package/dist/providers/CrossmintWalletProvider.d.cts +5 -1
- package/dist/providers/CrossmintWalletProvider.d.ts +5 -1
- package/dist/providers/CrossmintWalletProvider.js +1 -1
- package/dist/providers/index.cjs +1 -1
- package/dist/providers/index.js +1 -1
- package/package.json +8 -8
- package/dist/chunk-HXDCTLSM.cjs +0 -1
- package/dist/chunk-VPXSODA6.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as q}from"./chunk-GDMV4TA2.js";import{d as u}from"./chunk-PXDN3KFO.js";import{createContext as pe,useEffect as _,useMemo as ee,useRef as fe,useState as S,useCallback as D}from"react";import*as h 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 T,useWallet as Je}from"@crossmint/client-sdk-react-base";import{useContext as X}from"react";function We(){let e=X(j);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function be(){let e=X(j);if(!e)throw new Error("useAuth must be used within a CrossmintAuthProvider");return e}import{useCallback as Q,useEffect as re,useRef as x,useState as ne,useMemo as Y,createContext as oe}from"react";import{View as ie}from"react-native";import{RNWebView as se,WebViewParent as ae}from"@crossmint/client-sdk-rn-window";import{environmentUrlConfig as Z,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 F,jsxs as me}from"react/jsx-runtime";var E=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},K=oe({needsAuth:!1,sendEmailWithOtp:E("sendEmailWithOtp"),verifyOtp:E("verifyOtp"),reject:E("reject")});function je({children:e,createOnLogin:c,callbacks:v}){let{crossmint:U}=T("CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:w,appId:p}=U,W=ce(w);if(!W.isValid)throw new Error("Invalid API key");let b=Z[W.environment],f=x(null),o=x(null),[A,N]=ne(!1),R=x(E("sendEmailWithOtp")),y=x(E("verifyOtp")),a=x(E("reject")),L=Y(()=>p!=null?`window.crossmintAppId = '${p}';`:"",[p]);re(()=>{f.current!=null&&o.current==null&&(o.current=new ae(f,{incomingEvents:ue,outgoingEvents:le}))},[]);let M=Q(()=>u(this,null,function*(){let t=o.current;if(t!=null)try{yield t.handshakeWithChild()}catch(n){console.error("[CrossmintWalletProvider] Handshake error:",n)}}),[]),B=Q(t=>{let n=o.current;if(n!=null){try{let i=JSON.parse(t.nativeEvent.data);if(i&&typeof i.type=="string"&&i.type.startsWith("console.")){let g=i.type.split(".")[1],d=(i.data||[]).map(m=>{try{return m==="[Function]"||m==="[Circular Reference]"||m==="[Unserializable Object]"?m:JSON.parse(m)}catch(H){return m}}),C=`[WebView:${g.toUpperCase()}]`;switch(g){case"log":console.log(C,...d);break;case"error":console.error(C,...d);break;case"warn":console.warn(C,...d);break;case"info":console.info(C,...d);break;default:console.log(`[WebView Unknown:${g}]`,...d)}return}}catch(i){}n.handleMessage(t)}},[]),O=()=>{if(o.current==null)throw new Error("WebView not ready or handshake incomplete");return o.current},z=(t,n,i,g)=>u(this,null,function*(){N(t),R.current=n,y.current=i,a.current=g}),G=Y(()=>({needsAuth:A,sendEmailWithOtp:R.current,verifyOtp:y.current,reject:a.current}),[A]);return me(de,{createOnLogin:c,onAuthRequired:z,_getEmailSignerIframe:O,callbacks:v,children:[F(K.Provider,{value:G,children:e}),F(ie,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:F(se,{ref:f,source:{uri:b},injectedGlobals:L,onLoadStart:t=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",t.nativeEvent.url)},onLoadEnd:M,onLoadProgress:({nativeEvent:t})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",t.progress)},onMessage:B,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:[Z[W.environment]]})})]})}import{useContext as he}from"react";function Ke(){let e=he(K);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 $ from"expo-constants";import{jsx as Ce}from"react/jsx-runtime";var te={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)},j=pe(Ae);function ot({children:e,onLoginSuccess:c,refreshRoute:v,logoutRoute:U,customStorageProvider:w,appSchema:p}){let{crossmint:W}=T("CrossmintAuthProvider must be used within CrossmintProvider"),[b,f]=S(void 0),[o,A]=S(void 0),[N,R]=S(te),y=fe(null),a=ee(()=>w!=null?w:new q,[w]),[L,M]=S(!1),[B,O]=S(!1),z=Array.isArray(p)?p[0]:p,t=$.executionEnvironment==="storeClient"||$.appOwnership==="expo"||!!$.expoVersion?"exp://127.0.0.1:8081":z,n=ee(()=>{if(!y.current){let r={callbacks:{onLogout:()=>{f(void 0),A(void 0)},onTokenRefresh:s=>{f(s.user),A(s.jwt)}},refreshRoute:v,logoutRoute:U,storageProvider:a};y.current=ge.from(W,r)}return y.current},[a]),i=D(()=>{c==null||c()},[c]);_(()=>{o==null?a==null||a.get(ve).then(r=>{r!=null&&A(r)}).finally(()=>{M(!0)}):M(!0)},[o,a]),_(()=>{o!=null&&i()},[o,i]);let g=()=>{n.logout()},d=D(()=>u(this,null,function*(){try{let s=Object.keys(te).map(P=>u(this,null,function*(){let V=yield n==null?void 0:n.getOAuthUrl(P,{appSchema:t});return{[P]:V}})),l=Object.assign({},...yield Promise.all(s));R(l)}catch(r){console.error(r)}}),[n]);_(()=>{b==null&&d()},[d,b]);let C=()=>L?B?"in-progress":o!=null?"logged-in":"logged-out":"initializing",m=()=>u(this,null,function*(){if(o==null){console.log("User not logged in");return}let r=yield n.getUser();return f(r),r}),H=r=>u(this,null,function*(){var s;try{O(!0);let l=(s=N[r])!=null?s:yield n.getOAuthUrl(r,{appSchema:t});yield h.warmUpAsync();let P=new URL(l);if(r==="google"&&P.searchParams.append("provider_prompt","select_account"),we.OS==="android")yield h.openBrowserAsync(P.toString());else{let V=yield h.openAuthSessionAsync(P.toString());V.type==="success"&&(yield J(V.url))}yield h.coolDownAsync()}catch(l){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",l),new Error(`Error during OAuth login: ${l}`)}}),J=D(r=>u(this,null,function*(){let s=r.includes("://")?ye(r):r;if(s!=null)try{return O(!0),yield n.handleRefreshAuthMaterial(s)}catch(l){throw l}finally{O(!1)}return null}),[n]);return Ce(j.Provider,{value:{crossmintAuth:n,logout:g,jwt:o,user:b,status:C(),getUser:m,loginWithOAuth:H,createAuthSession:J},children:e})}var ye=e=>{let c=/[?&]oneTimeSecret=([^&#]+)/,v=e.match(c);return v?decodeURIComponent(v[1]):void 0};export{j as a,ot as b,We as c,be as d,K as e,je as f,Ke as g,T as h,Je as i};
|
|
@@ -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 h = _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 Ee(){let e=_react.useContext.call(void 0, k);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function We(){let e=_react.useContext.call(void 0, k);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 E=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},F= exports.e =_react.createContext.call(void 0, {needsAuth:!1,sendEmailWithOtp:E("sendEmailWithOtp"),verifyOtp:E("verifyOtp"),reject:E("reject")});function ke({children:e,createOnLogin:c,callbacks:v}){let{crossmint:U}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:w,appId:p}=U,W=_commonsdkbase.validateAPIKey.call(void 0, w);if(!W.isValid)throw new Error("Invalid API key");let b=_clientsigners.environmentUrlConfig[W.environment],f=_react.useRef.call(void 0, null),o=_react.useRef.call(void 0, null),[A,T]=_react.useState.call(void 0, !1),R=_react.useRef.call(void 0, E("sendEmailWithOtp")),y=_react.useRef.call(void 0, E("verifyOtp")),a=_react.useRef.call(void 0, E("reject")),N=_react.useMemo.call(void 0, ()=>p!=null?`window.crossmintAppId = '${p}';`:"",[p]);_react.useEffect.call(void 0, ()=>{f.current!=null&&o.current==null&&(o.current=new (0, _clientsdkrnwindow.WebViewParent)(f,{incomingEvents:_clientsigners.signerOutboundEvents,outgoingEvents:_clientsigners.signerInboundEvents}))},[]);let M=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let t=o.current;if(t!=null)try{yield t.handshakeWithChild()}catch(n){console.error("[CrossmintWalletProvider] Handshake error:",n)}}),[]),L=_react.useCallback.call(void 0, t=>{let n=o.current;if(n!=null){try{let i=JSON.parse(t.nativeEvent.data);if(i&&typeof i.type=="string"&&i.type.startsWith("console.")){let g=i.type.split(".")[1],d=(i.data||[]).map(m=>{try{return m==="[Function]"||m==="[Circular Reference]"||m==="[Unserializable Object]"?m:JSON.parse(m)}catch(G){return m}}),C=`[WebView:${g.toUpperCase()}]`;switch(g){case"log":console.log(C,...d);break;case"error":console.error(C,...d);break;case"warn":console.warn(C,...d);break;case"info":console.info(C,...d);break;default:console.log(`[WebView Unknown:${g}]`,...d)}return}}catch(i){}n.handleMessage(t)}},[]),O=()=>{if(o.current==null)throw new Error("WebView not ready or handshake incomplete");return o.current},B=(t,n,i,g)=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){T(t),R.current=n,y.current=i,a.current=g}),$=_react.useMemo.call(void 0, ()=>({needsAuth:A,sendEmailWithOtp:R.current,verifyOtp:y.current,reject:a.current}),[A]);return _jsxruntime.jsxs.call(void 0, _clientsdkreactbase.CrossmintWalletBaseProvider,{createOnLogin:c,onAuthRequired:B,_getEmailSignerIframe:O,callbacks:v,children:[_jsxruntime.jsx.call(void 0, F.Provider,{value:$,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:f,source:{uri:b},injectedGlobals:N,onLoadStart:t=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",t.nativeEvent.url)},onLoadEnd:M,onLoadProgress:({nativeEvent:t})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",t.progress)},onMessage:L,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:[_clientsigners.environmentUrlConfig[W.environment]]})})]})}function Fe(){let e=_react.useContext.call(void 0, 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}}var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);var ee={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)},k= exports.a =_react.createContext.call(void 0, we);function nt({children:e,onLoginSuccess:c,refreshRoute:v,logoutRoute:U,customStorageProvider:w,appSchema:p}){let{crossmint:W}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[b,f]=_react.useState.call(void 0, void 0),[o,A]=_react.useState.call(void 0, void 0),[T,R]=_react.useState.call(void 0, ee),y=_react.useRef.call(void 0, null),a=_react.useMemo.call(void 0, ()=>w!=null?w:new _chunkK754GXKDcjs.a,[w]),[N,M]=_react.useState.call(void 0, !1),[L,O]=_react.useState.call(void 0, !1),B=Array.isArray(p)?p[0]:p,t=_expoconstants2.default.executionEnvironment==="storeClient"||_expoconstants2.default.appOwnership==="expo"||!!_expoconstants2.default.expoVersion?"exp://127.0.0.1:8081":B,n=_react.useMemo.call(void 0, ()=>{if(!y.current){let r={callbacks:{onLogout:()=>{f(void 0),A(void 0)},onTokenRefresh:s=>{f(s.user),A(s.jwt)}},refreshRoute:v,logoutRoute:U,storageProvider:a};y.current=_clientsdkauth.CrossmintAuth.from(W,r)}return y.current},[a]),i=_react.useCallback.call(void 0, ()=>{c==null||c()},[c]);_react.useEffect.call(void 0, ()=>{o==null?a==null||a.get(_commonsdkauth.SESSION_PREFIX).then(r=>{r!=null&&A(r)}).finally(()=>{M(!0)}):M(!0)},[o,a]),_react.useEffect.call(void 0, ()=>{o!=null&&i()},[o,i]);let g=()=>{n.logout()},d=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){try{let s=Object.keys(ee).map(P=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let V=yield n==null?void 0:n.getOAuthUrl(P,{appSchema:t});return{[P]:V}})),l=Object.assign({},...yield Promise.all(s));R(l)}catch(r){console.error(r)}}),[n]);_react.useEffect.call(void 0, ()=>{b==null&&d()},[d,b]);let C=()=>N?L?"in-progress":o!=null?"logged-in":"logged-out":"initializing",m=()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){if(o==null){console.log("User not logged in");return}let r=yield n.getUser();return f(r),r}),G=r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){var s;try{O(!0);let l=(s=T[r])!=null?s:yield n.getOAuthUrl(r,{appSchema:t});yield h.warmUpAsync();let P=new URL(l);if(r==="google"&&P.searchParams.append("provider_prompt","select_account"),_reactnative.Platform.OS==="android")yield h.openBrowserAsync(P.toString());else{let V=yield h.openAuthSessionAsync(P.toString());V.type==="success"&&(yield H(V.url))}yield h.coolDownAsync()}catch(l){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",l),new Error(`Error during OAuth login: ${l}`)}}),H=_react.useCallback.call(void 0, r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let s=r.includes("://")?Ae(r):r;if(s!=null)try{return O(!0),yield n.handleRefreshAuthMaterial(s)}catch(l){throw l}finally{O(!1)}return null}),[n]);return _jsxruntime.jsx.call(void 0, k.Provider,{value:{crossmintAuth:n,logout:g,jwt:o,user:b,status:C(),getUser:m,loginWithOAuth:G,createAuthSession:H},children:e})}var Ae=e=>{let c=/[?&]oneTimeSecret=([^&#]+)/,v=e.match(c);return v?decodeURIComponent(v[1]):void 0};exports.a = k; exports.b = nt; exports.c = Ee; exports.d = We; exports.e = F; exports.f = ke; exports.g = Fe; exports.h = _clientsdkreactbase.useCrossmint; exports.i = _clientsdkreactbase.useWallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as m,d,h as l}from"./chunk-
|
|
1
|
+
import{b as m,d,h as l}from"./chunk-GC2BGKUC.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
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('./chunk-R62SJDSA.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}=_chunkR62SJDSAcjs.h.call(void 0, ),{user:t,jwt:e}=_chunkR62SJDSAcjs.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, _chunkR62SJDSAcjs.b,_chunk2WSEHVNPcjs.b.call(void 0, _chunk2WSEHVNPcjs.a.call(void 0, {},r),{children:_jsxruntime.jsx.call(void 0, a,{children:i})}))}exports.a = v;
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useAuth = _chunkR62SJDSAcjs.d; exports.useCrossmint = _chunkR62SJDSAcjs.h; exports.useCrossmintAuth = _chunkR62SJDSAcjs.c; exports.useWallet = _chunkR62SJDSAcjs.i; exports.useWalletEmailSigner = _chunkR62SJDSAcjs.g;
|
package/dist/hooks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a,d as b,g as c,h as d,i as e}from"../chunk-
|
|
1
|
+
import{c as a,d as b,g as c,h as d,i as e}from"../chunk-GC2BGKUC.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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useAuth = _chunkR62SJDSAcjs.d; exports.useCrossmintAuth = _chunkR62SJDSAcjs.c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a,d as b}from"../chunk-
|
|
1
|
+
import{c as a,d as b}from"../chunk-GC2BGKUC.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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.useWalletEmailSigner = _chunkR62SJDSAcjs.g;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as a}from"../chunk-
|
|
1
|
+
import{g as a}from"../chunk-GC2BGKUC.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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-ZR6BLDCD.cjs');var _chunkUHGR7JZYcjs = require('./chunk-UHGR7JZY.cjs');var _chunkR62SJDSAcjs = require('./chunk-R62SJDSA.cjs');require('./chunk-K754GXKD.cjs');var _chunkYBYUZ7SKcjs = require('./chunk-YBYUZ7SK.cjs');require('./chunk-2WSEHVNP.cjs');var _walletssdk = require('@crossmint/wallets-sdk');exports.CrossmintAuthProvider = _chunkUHGR7JZYcjs.a; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkR62SJDSAcjs.f; exports.EVMWallet = _walletssdk.EVMWallet; exports.SolanaWallet = _walletssdk.SolanaWallet; exports.Wallet = _walletssdk.Wallet; exports.useAuth = _chunkR62SJDSAcjs.d; exports.useCrossmint = _chunkR62SJDSAcjs.h; exports.useCrossmintAuth = _chunkR62SJDSAcjs.c; exports.useWallet = _chunkR62SJDSAcjs.i; exports.useWalletEmailSigner = _chunkR62SJDSAcjs.g;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-C62HRWJA.js";import{a as
|
|
1
|
+
import"./chunk-C62HRWJA.js";import{a as p}from"./chunk-S6THHBSF.js";import{c as t,d as e,f as r,g as o,h as a,i as n}from"./chunk-GC2BGKUC.js";import"./chunk-GDMV4TA2.js";import{a as s}from"./chunk-ZENPJSBN.js";import"./chunk-PXDN3KFO.js";import{EVMWallet as d,SolanaWallet as v,Wallet as E}from"@crossmint/wallets-sdk";export{p as CrossmintAuthProvider,s as CrossmintProvider,r as CrossmintWalletProvider,d as EVMWallet,v as SolanaWallet,E as Wallet,e as useAuth,a as useCrossmint,t as useCrossmintAuth,n as useWallet,o as useWalletEmailSigner};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUHGR7JZYcjs = require('../chunk-UHGR7JZY.cjs');require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintAuthProvider = _chunkUHGR7JZYcjs.a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-S6THHBSF.js";import"../chunk-GC2BGKUC.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{a as CrossmintAuthProvider};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.AuthContext = _chunkR62SJDSAcjs.a; exports.CrossmintAuthProviderInternal = _chunkR62SJDSAcjs.b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-GC2BGKUC.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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintWalletEmailSignerContext = _chunkR62SJDSAcjs.e; exports.CrossmintWalletProvider = _chunkR62SJDSAcjs.f;
|
|
@@ -13,7 +13,11 @@ declare const CrossmintWalletEmailSignerContext: react.Context<CrossmintWalletEm
|
|
|
13
13
|
interface CrossmintWalletProviderProps {
|
|
14
14
|
children: ReactNode;
|
|
15
15
|
createOnLogin?: CreateOnLogin;
|
|
16
|
+
callbacks?: {
|
|
17
|
+
onWalletCreationStart?: () => Promise<void>;
|
|
18
|
+
onTransactionStart?: () => Promise<void>;
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
|
-
declare function CrossmintWalletProvider({ children, createOnLogin }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
declare function CrossmintWalletProvider({ children, createOnLogin, callbacks }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
|
|
18
22
|
|
|
19
23
|
export { CrossmintWalletEmailSignerContext, CrossmintWalletProvider, type CrossmintWalletProviderProps };
|
|
@@ -13,7 +13,11 @@ declare const CrossmintWalletEmailSignerContext: react.Context<CrossmintWalletEm
|
|
|
13
13
|
interface CrossmintWalletProviderProps {
|
|
14
14
|
children: ReactNode;
|
|
15
15
|
createOnLogin?: CreateOnLogin;
|
|
16
|
+
callbacks?: {
|
|
17
|
+
onWalletCreationStart?: () => Promise<void>;
|
|
18
|
+
onTransactionStart?: () => Promise<void>;
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
|
-
declare function CrossmintWalletProvider({ children, createOnLogin }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
declare function CrossmintWalletProvider({ children, createOnLogin, callbacks }: CrossmintWalletProviderProps): react_jsx_runtime.JSX.Element;
|
|
18
22
|
|
|
19
23
|
export { CrossmintWalletEmailSignerContext, CrossmintWalletProvider, type CrossmintWalletProviderProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as a,f as b}from"../chunk-
|
|
1
|
+
import{e as a,f as b}from"../chunk-GC2BGKUC.js";import"../chunk-GDMV4TA2.js";import"../chunk-PXDN3KFO.js";export{a as CrossmintWalletEmailSignerContext,b as CrossmintWalletProvider};
|
package/dist/providers/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-ZR6BLDCD.cjs');var _chunkUHGR7JZYcjs = require('../chunk-UHGR7JZY.cjs');var _chunkR62SJDSAcjs = require('../chunk-R62SJDSA.cjs');require('../chunk-K754GXKD.cjs');var _chunkYBYUZ7SKcjs = require('../chunk-YBYUZ7SK.cjs');require('../chunk-2WSEHVNP.cjs');exports.CrossmintAuthProvider = _chunkUHGR7JZYcjs.a; exports.CrossmintProvider = _chunkYBYUZ7SKcjs.a; exports.CrossmintWalletProvider = _chunkR62SJDSAcjs.f;
|
package/dist/providers/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunk-C62HRWJA.js";import{a as c}from"../chunk-
|
|
1
|
+
import"../chunk-C62HRWJA.js";import{a as c}from"../chunk-S6THHBSF.js";import{f as a}from"../chunk-GC2BGKUC.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};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crossmint/client-sdk-react-native-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.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.
|
|
28
|
-
"@crossmint/client-sdk-base": "1.5.
|
|
29
|
-
"@crossmint/client-sdk-react-base": "0.5.
|
|
27
|
+
"@crossmint/client-sdk-auth": "1.2.16",
|
|
28
|
+
"@crossmint/client-sdk-base": "1.5.7",
|
|
29
|
+
"@crossmint/client-sdk-react-base": "0.5.5",
|
|
30
30
|
"@crossmint/client-sdk-rn-window": "0.2.2",
|
|
31
|
-
"@crossmint/client-signers": "0.0.
|
|
32
|
-
"@crossmint/common-sdk-auth": "1.0.
|
|
33
|
-
"@crossmint/
|
|
34
|
-
"@crossmint/
|
|
31
|
+
"@crossmint/client-signers": "0.0.18",
|
|
32
|
+
"@crossmint/common-sdk-auth": "1.0.38",
|
|
33
|
+
"@crossmint/common-sdk-base": "0.8.1",
|
|
34
|
+
"@crossmint/wallets-sdk": "0.10.5"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/react": "19.0.12"
|
package/dist/chunk-HXDCTLSM.cjs
DELETED
|
@@ -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 _chunkK754GXKDcjs = require('./chunk-K754GXKD.cjs');var _chunk2WSEHVNPcjs = require('./chunk-2WSEHVNP.cjs');var _react = require('react');var _expowebbrowser = require('expo-web-browser'); var f = _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, k);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function We(){let e=_react.useContext.call(void 0, k);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 P=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},F= exports.e =_react.createContext.call(void 0, {needsAuth:!1,sendEmailWithOtp:P("sendEmailWithOtp"),verifyOtp:P("verifyOtp"),reject:P("reject")});function ke({children:e,createOnLogin:c}){let{crossmint:y}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:S,appId:d}=y,g=_commonsdkbase.validateAPIKey.call(void 0, S);if(!g.isValid)throw new Error("Invalid API key");let T=_clientsigners.environmentUrlConfig[g.environment],v=_react.useRef.call(void 0, null),o=_react.useRef.call(void 0, null),[i,W]=_react.useState.call(void 0, !1),U=_react.useRef.call(void 0, P("sendEmailWithOtp")),R=_react.useRef.call(void 0, P("verifyOtp")),C=_react.useRef.call(void 0, P("reject")),h=_react.useMemo.call(void 0, ()=>d!=null?`window.crossmintAppId = '${d}';`:"",[d]);_react.useEffect.call(void 0, ()=>{v.current!=null&&o.current==null&&(o.current=new (0, _clientsdkrnwindow.WebViewParent)(v,{incomingEvents:_clientsigners.signerOutboundEvents,outgoingEvents:_clientsigners.signerInboundEvents}))},[]);let N=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let n=o.current;if(n!=null)try{yield n.handshakeWithChild()}catch(a){console.error("[CrossmintWalletProvider] Handshake error:",a)}}),[]),M=_react.useCallback.call(void 0, n=>{let a=o.current;if(a!=null){try{let t=JSON.parse(n.nativeEvent.data);if(t&&typeof t.type=="string"&&t.type.startsWith("console.")){let m=t.type.split(".")[1],w=(t.data||[]).map(p=>{try{return p==="[Function]"||p==="[Circular Reference]"||p==="[Unserializable Object]"?p:JSON.parse(p)}catch($){return p}}),A=`[WebView:${m.toUpperCase()}]`;switch(m){case"log":console.log(A,...w);break;case"error":console.error(A,...w);break;case"warn":console.warn(A,...w);break;case"info":console.info(A,...w);break;default:console.log(`[WebView Unknown:${m}]`,...w)}return}}catch(t){}a.handleMessage(n)}},[]),L=()=>{if(o.current==null)throw new Error("WebView not ready or handshake incomplete");return o.current},b=(n,a,t,m)=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){W(n),U.current=a,R.current=t,C.current=m}),B=_react.useMemo.call(void 0, ()=>({needsAuth:i,sendEmailWithOtp:U.current,verifyOtp:R.current,reject:C.current}),[i]);return _jsxruntime.jsxs.call(void 0, _clientsdkreactbase.CrossmintWalletBaseProvider,{createOnLogin:c,onAuthRequired:b,_getEmailSignerIframe:L,children:[_jsxruntime.jsx.call(void 0, F.Provider,{value:B,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:v,source:{uri:T},injectedGlobals:h,onLoadStart:n=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",n.nativeEvent.url)},onLoadEnd:N,onLoadProgress:({nativeEvent:n})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",n.progress)},onMessage:M,onError:n=>{console.error("[CrossmintWalletProvider] WebView error:",n.nativeEvent)},onHttpError:n=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",n.nativeEvent)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[_clientsigners.environmentUrlConfig[g.environment]]})})]})}function Fe(){let e=_react.useContext.call(void 0, 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}}var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);var Z={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)},k= exports.a =_react.createContext.call(void 0, we);function nt({children:e,onLoginSuccess:c,refreshRoute:y,logoutRoute:S,customStorageProvider:d,appSchema:g}){let{crossmint:T}=_clientsdkreactbase.useCrossmint.call(void 0, "CrossmintAuthProvider must be used within CrossmintProvider"),[v,o]=_react.useState.call(void 0, void 0),[i,W]=_react.useState.call(void 0, void 0),[U,R]=_react.useState.call(void 0, Z),C=_react.useRef.call(void 0, null),h=_react.useMemo.call(void 0, ()=>d!=null?d:new _chunkK754GXKDcjs.a,[d]),[N,M]=_react.useState.call(void 0, !1),[L,b]=_react.useState.call(void 0, !1),B=Array.isArray(g)?g[0]:g,a=_expoconstants2.default.executionEnvironment==="storeClient"||_expoconstants2.default.appOwnership==="expo"||!!_expoconstants2.default.expoVersion?"exp://127.0.0.1:8081":B,t=_react.useMemo.call(void 0, ()=>{if(!C.current){let r={callbacks:{onLogout:()=>{o(void 0),W(void 0)},onTokenRefresh:s=>{o(s.user),W(s.jwt)}},refreshRoute:y,logoutRoute:S,storageProvider:h};C.current=_clientsdkauth.CrossmintAuth.from(T,r)}return C.current},[h]),m=_react.useCallback.call(void 0, ()=>{c==null||c()},[c]);_react.useEffect.call(void 0, ()=>{i==null?h==null||h.get(_commonsdkauth.SESSION_PREFIX).then(r=>{r!=null&&W(r)}).finally(()=>{M(!0)}):M(!0)},[i,h]),_react.useEffect.call(void 0, ()=>{i!=null&&m()},[i,m]);let w=()=>{t.logout()},A=_react.useCallback.call(void 0, ()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){try{let s=Object.keys(Z).map(E=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let V=yield t==null?void 0:t.getOAuthUrl(E,{appSchema:a});return{[E]:V}})),l=Object.assign({},...yield Promise.all(s));R(l)}catch(r){console.error(r)}}),[t]);_react.useEffect.call(void 0, ()=>{v==null&&A()},[A,v]);let p=()=>N?L?"in-progress":i!=null?"logged-in":"logged-out":"initializing",$=()=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){if(i==null){console.log("User not logged in");return}let r=yield t.getUser();return o(r),r}),ee=r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){var s;try{b(!0);let l=(s=U[r])!=null?s:yield t.getOAuthUrl(r,{appSchema:a});yield f.warmUpAsync();let E=new URL(l);if(r==="google"&&E.searchParams.append("provider_prompt","select_account"),_reactnative.Platform.OS==="android")yield f.openBrowserAsync(E.toString());else{let V=yield f.openAuthSessionAsync(E.toString());V.type==="success"&&(yield G(V.url))}yield f.coolDownAsync()}catch(l){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",l),new Error(`Error during OAuth login: ${l}`)}}),G=_react.useCallback.call(void 0, r=>_chunk2WSEHVNPcjs.d.call(void 0, this,null,function*(){let s=r.includes("://")?Ae(r):r;if(s!=null)try{return b(!0),yield t.handleRefreshAuthMaterial(s)}catch(l){throw l}finally{b(!1)}return null}),[t]);return _jsxruntime.jsx.call(void 0, k.Provider,{value:{crossmintAuth:t,logout:w,jwt:i,user:v,status:p(),getUser:$,loginWithOAuth:ee,createAuthSession:G},children:e})}var Ae=e=>{let c=/[?&]oneTimeSecret=([^&#]+)/,y=e.match(c);return y?decodeURIComponent(y[1]):void 0};exports.a = k; exports.b = nt; exports.c = Pe; exports.d = We; exports.e = F; exports.f = ke; exports.g = Fe; exports.h = _clientsdkreactbase.useCrossmint; exports.i = _clientsdkreactbase.useWallet;
|
package/dist/chunk-VPXSODA6.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as J}from"./chunk-GDMV4TA2.js";import{d as u}from"./chunk-PXDN3KFO.js";import{createContext as pe,useEffect as _,useMemo as Z,useRef as fe,useState as x,useCallback as D}from"react";import*as f 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 T,useWallet as Je}from"@crossmint/client-sdk-react-base";import{useContext as q}from"react";function We(){let e=q(j);if(!e)throw new Error("useCrossmintAuth must be used within a CrossmintAuthProvider");return e}function be(){let e=q(j);if(!e)throw new Error("useAuth must be used within a CrossmintAuthProvider");return e}import{useCallback as X,useEffect as re,useRef as O,useState as ne,useMemo as Q,createContext as oe}from"react";import{View as ie}from"react-native";import{RNWebView as se,WebViewParent as ae}from"@crossmint/client-sdk-rn-window";import{environmentUrlConfig as Y,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 F,jsxs as he}from"react/jsx-runtime";var P=e=>()=>{throw new Error(`${e} is not available. Make sure you're using an email signer wallet.`)},K=oe({needsAuth:!1,sendEmailWithOtp:P("sendEmailWithOtp"),verifyOtp:P("verifyOtp"),reject:P("reject")});function je({children:e,createOnLogin:c}){let{crossmint:y}=T("CrossmintWalletProvider must be used within CrossmintProvider"),{apiKey:S,appId:d}=y,g=ce(S);if(!g.isValid)throw new Error("Invalid API key");let N=Y[g.environment],v=O(null),o=O(null),[i,W]=ne(!1),U=O(P("sendEmailWithOtp")),R=O(P("verifyOtp")),C=O(P("reject")),h=Q(()=>d!=null?`window.crossmintAppId = '${d}';`:"",[d]);re(()=>{v.current!=null&&o.current==null&&(o.current=new ae(v,{incomingEvents:ue,outgoingEvents:le}))},[]);let L=X(()=>u(this,null,function*(){let n=o.current;if(n!=null)try{yield n.handshakeWithChild()}catch(a){console.error("[CrossmintWalletProvider] Handshake error:",a)}}),[]),M=X(n=>{let a=o.current;if(a!=null){try{let t=JSON.parse(n.nativeEvent.data);if(t&&typeof t.type=="string"&&t.type.startsWith("console.")){let m=t.type.split(".")[1],w=(t.data||[]).map(p=>{try{return p==="[Function]"||p==="[Circular Reference]"||p==="[Unserializable Object]"?p:JSON.parse(p)}catch(G){return p}}),A=`[WebView:${m.toUpperCase()}]`;switch(m){case"log":console.log(A,...w);break;case"error":console.error(A,...w);break;case"warn":console.warn(A,...w);break;case"info":console.info(A,...w);break;default:console.log(`[WebView Unknown:${m}]`,...w)}return}}catch(t){}a.handleMessage(n)}},[]),B=()=>{if(o.current==null)throw new Error("WebView not ready or handshake incomplete");return o.current},b=(n,a,t,m)=>u(this,null,function*(){W(n),U.current=a,R.current=t,C.current=m}),z=Q(()=>({needsAuth:i,sendEmailWithOtp:U.current,verifyOtp:R.current,reject:C.current}),[i]);return he(de,{createOnLogin:c,onAuthRequired:b,_getEmailSignerIframe:B,children:[F(K.Provider,{value:z,children:e}),F(ie,{style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:F(se,{ref:v,source:{uri:N},injectedGlobals:h,onLoadStart:n=>{console.log("[CrossmintWalletProvider] WebView onLoadStart:",n.nativeEvent.url)},onLoadEnd:L,onLoadProgress:({nativeEvent:n})=>{console.log("[CrossmintWalletProvider] WebView loading progress:",n.progress)},onMessage:M,onError:n=>{console.error("[CrossmintWalletProvider] WebView error:",n.nativeEvent)},onHttpError:n=>{console.error("[CrossmintWalletProvider] WebView HTTP error:",n.nativeEvent)},style:{width:1,height:1},javaScriptCanOpenWindowsAutomatically:!1,thirdPartyCookiesEnabled:!1,sharedCookiesEnabled:!1,incognito:!1,setSupportMultipleWindows:!1,originWhitelist:[Y[g.environment]]})})]})}import{useContext as me}from"react";function Ke(){let e=me(K);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 $ from"expo-constants";import{jsx as Ce}from"react/jsx-runtime";var ee={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)},j=pe(Ae);function ot({children:e,onLoginSuccess:c,refreshRoute:y,logoutRoute:S,customStorageProvider:d,appSchema:g}){let{crossmint:N}=T("CrossmintAuthProvider must be used within CrossmintProvider"),[v,o]=x(void 0),[i,W]=x(void 0),[U,R]=x(ee),C=fe(null),h=Z(()=>d!=null?d:new J,[d]),[L,M]=x(!1),[B,b]=x(!1),z=Array.isArray(g)?g[0]:g,a=$.executionEnvironment==="storeClient"||$.appOwnership==="expo"||!!$.expoVersion?"exp://127.0.0.1:8081":z,t=Z(()=>{if(!C.current){let r={callbacks:{onLogout:()=>{o(void 0),W(void 0)},onTokenRefresh:s=>{o(s.user),W(s.jwt)}},refreshRoute:y,logoutRoute:S,storageProvider:h};C.current=ge.from(N,r)}return C.current},[h]),m=D(()=>{c==null||c()},[c]);_(()=>{i==null?h==null||h.get(ve).then(r=>{r!=null&&W(r)}).finally(()=>{M(!0)}):M(!0)},[i,h]),_(()=>{i!=null&&m()},[i,m]);let w=()=>{t.logout()},A=D(()=>u(this,null,function*(){try{let s=Object.keys(ee).map(E=>u(this,null,function*(){let V=yield t==null?void 0:t.getOAuthUrl(E,{appSchema:a});return{[E]:V}})),l=Object.assign({},...yield Promise.all(s));R(l)}catch(r){console.error(r)}}),[t]);_(()=>{v==null&&A()},[A,v]);let p=()=>L?B?"in-progress":i!=null?"logged-in":"logged-out":"initializing",G=()=>u(this,null,function*(){if(i==null){console.log("User not logged in");return}let r=yield t.getUser();return o(r),r}),te=r=>u(this,null,function*(){var s;try{b(!0);let l=(s=U[r])!=null?s:yield t.getOAuthUrl(r,{appSchema:a});yield f.warmUpAsync();let E=new URL(l);if(r==="google"&&E.searchParams.append("provider_prompt","select_account"),we.OS==="android")yield f.openBrowserAsync(E.toString());else{let V=yield f.openAuthSessionAsync(E.toString());V.type==="success"&&(yield H(V.url))}yield f.coolDownAsync()}catch(l){throw console.error("[CrossmintAuthProvider] Error during OAuth login:",l),new Error(`Error during OAuth login: ${l}`)}}),H=D(r=>u(this,null,function*(){let s=r.includes("://")?ye(r):r;if(s!=null)try{return b(!0),yield t.handleRefreshAuthMaterial(s)}catch(l){throw l}finally{b(!1)}return null}),[t]);return Ce(j.Provider,{value:{crossmintAuth:t,logout:w,jwt:i,user:v,status:p(),getUser:G,loginWithOAuth:te,createAuthSession:H},children:e})}var ye=e=>{let c=/[?&]oneTimeSecret=([^&#]+)/,y=e.match(c);return y?decodeURIComponent(y[1]):void 0};export{j as a,ot as b,We as c,be as d,K as e,je as f,Ke as g,T as h,Je as i};
|