@oxyhq/services 5.18.5 → 5.20.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/README.md +51 -42
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js +1 -1
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +106 -40
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +24 -17
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/WebOxyProvider.js +13 -5
- package/lib/commonjs/ui/components/WebOxyProvider.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +33 -8
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useWebSSO.js +55 -16
- package/lib/commonjs/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js +1 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +106 -39
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +24 -17
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/WebOxyProvider.js +13 -5
- package/lib/module/ui/components/WebOxyProvider.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +33 -8
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useWebSSO.js +55 -16
- package/lib/module/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +26 -3
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/WebOxyProvider.d.ts +13 -5
- package/lib/typescript/commonjs/ui/components/WebOxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +8 -3
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts +29 -7
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts +26 -3
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/WebOxyProvider.d.ts +13 -5
- package/lib/typescript/module/ui/components/WebOxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts +8 -3
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts +29 -7
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/mixins/OxyServices.fedcm.ts +1 -1
- package/src/ui/components/OxyProvider.tsx +112 -47
- package/src/ui/components/OxySignInButton.tsx +24 -17
- package/src/ui/components/WebOxyProvider.tsx +13 -5
- package/src/ui/hooks/useAuth.ts +42 -12
- package/src/ui/hooks/useWebSSO.ts +59 -15
package/README.md
CHANGED
|
@@ -22,12 +22,13 @@ A comprehensive TypeScript client library for the Oxy API providing authenticati
|
|
|
22
22
|
## ✨ Features
|
|
23
23
|
|
|
24
24
|
- 🔐 **Zero-Config Authentication**: Automatic token management and refresh
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
25
|
+
- 🌐 **Cross-Domain SSO**: Sign in once, authenticated everywhere (FedCM-based)
|
|
26
|
+
- 📱 **Universal Provider**: Single `OxyProvider` works on iOS, Android, and Web
|
|
27
|
+
- 🎨 **UI Components**: Pre-built components for auth, profiles, and more
|
|
28
|
+
- 🔄 **Cross-Platform**: Works in Expo, React Native, and Node.js
|
|
28
29
|
- 📱 **Multi-Session Support**: Manage multiple user sessions simultaneously
|
|
29
30
|
- 🔧 **TypeScript First**: Full type safety and IntelliSense support
|
|
30
|
-
- 🚀 **Performance Optimized**: Automatic caching
|
|
31
|
+
- 🚀 **Performance Optimized**: Automatic caching with TanStack Query
|
|
31
32
|
- 🛡️ **Production Ready**: Error handling, retry logic, and security best practices
|
|
32
33
|
|
|
33
34
|
## 📦 Installation
|
|
@@ -65,10 +66,10 @@ import 'react-native-url-polyfill/auto';
|
|
|
65
66
|
|
|
66
67
|
## 🚀 Quick Start
|
|
67
68
|
|
|
68
|
-
###
|
|
69
|
+
### Expo Apps (Native + Web)
|
|
69
70
|
|
|
70
71
|
```typescript
|
|
71
|
-
import { OxyProvider,
|
|
72
|
+
import { OxyProvider, useAuth } from '@oxyhq/services';
|
|
72
73
|
|
|
73
74
|
function App() {
|
|
74
75
|
return (
|
|
@@ -79,13 +80,32 @@ function App() {
|
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
function UserProfile() {
|
|
82
|
-
const {
|
|
83
|
-
|
|
83
|
+
const { user, isAuthenticated, signIn, signOut } = useAuth();
|
|
84
|
+
|
|
84
85
|
if (!isAuthenticated) {
|
|
85
|
-
return <
|
|
86
|
+
return <Button onPress={() => signIn()} title="Sign In" />;
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
return
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<View>
|
|
91
|
+
<Text>Welcome, {user?.username}!</Text>
|
|
92
|
+
<Button onPress={signOut} title="Sign Out" />
|
|
93
|
+
</View>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Pure React/Next.js (No Expo)
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import { WebOxyProvider, useAuth } from '@oxyhq/services';
|
|
102
|
+
|
|
103
|
+
function App() {
|
|
104
|
+
return (
|
|
105
|
+
<WebOxyProvider baseURL="https://api.oxy.so">
|
|
106
|
+
<YourApp />
|
|
107
|
+
</WebOxyProvider>
|
|
108
|
+
);
|
|
89
109
|
}
|
|
90
110
|
```
|
|
91
111
|
|
|
@@ -129,19 +149,19 @@ app.listen(3000);
|
|
|
129
149
|
|
|
130
150
|
## 📖 Usage Patterns
|
|
131
151
|
|
|
132
|
-
###
|
|
152
|
+
### Expo Apps (Native + Web)
|
|
133
153
|
|
|
134
|
-
#### 1. **OxyProvider +
|
|
154
|
+
#### 1. **OxyProvider + useAuth Hook (Recommended)**
|
|
135
155
|
|
|
136
|
-
|
|
156
|
+
`OxyProvider` works on all platforms (iOS, Android, Web). Use `useAuth` for authentication.
|
|
137
157
|
|
|
138
158
|
```typescript
|
|
139
|
-
import { OxyProvider,
|
|
159
|
+
import { OxyProvider, useAuth, OxySignInButton } from '@oxyhq/services';
|
|
140
160
|
|
|
141
161
|
// App.tsx - Setup the provider
|
|
142
162
|
function App() {
|
|
143
163
|
return (
|
|
144
|
-
<OxyProvider
|
|
164
|
+
<OxyProvider
|
|
145
165
|
baseURL="https://api.oxy.so"
|
|
146
166
|
onAuthStateChange={(user) => {
|
|
147
167
|
console.log('Auth state changed:', user ? 'logged in' : 'logged out');
|
|
@@ -154,36 +174,25 @@ function App() {
|
|
|
154
174
|
|
|
155
175
|
// Component.tsx - Use the hook
|
|
156
176
|
function UserProfile() {
|
|
157
|
-
const {
|
|
158
|
-
oxyServices, // OxyServices instance
|
|
159
|
-
user, // Current user data
|
|
160
|
-
isAuthenticated, // Authentication state
|
|
161
|
-
login, // Login method
|
|
162
|
-
logout // Logout method
|
|
163
|
-
} = useOxy();
|
|
177
|
+
const { user, isAuthenticated, signIn, signOut, isLoading } = useAuth();
|
|
164
178
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
179
|
+
if (isLoading) return <ActivityIndicator />;
|
|
180
|
+
|
|
181
|
+
if (!isAuthenticated) {
|
|
182
|
+
return (
|
|
183
|
+
<View>
|
|
184
|
+
<Text>Welcome! Please sign in.</Text>
|
|
185
|
+
<OxySignInButton />
|
|
186
|
+
{/* Or use signIn() directly: */}
|
|
187
|
+
<Button onPress={() => signIn()} title="Sign In" />
|
|
188
|
+
</View>
|
|
189
|
+
);
|
|
190
|
+
}
|
|
172
191
|
|
|
173
192
|
return (
|
|
174
193
|
<View>
|
|
175
|
-
{
|
|
176
|
-
|
|
177
|
-
<Text style={styles.title}>Welcome, {user?.name}!</Text>
|
|
178
|
-
<TouchableOpacity onPress={logout} style={styles.button}>
|
|
179
|
-
<Text>Sign Out</Text>
|
|
180
|
-
</TouchableOpacity>
|
|
181
|
-
</View>
|
|
182
|
-
) : (
|
|
183
|
-
<TouchableOpacity onPress={handleLogin} style={styles.button}>
|
|
184
|
-
<Text>Sign In</Text>
|
|
185
|
-
</TouchableOpacity>
|
|
186
|
-
)}
|
|
194
|
+
<Text style={styles.title}>Welcome, {user?.username}!</Text>
|
|
195
|
+
<Button onPress={signOut} title="Sign Out" />
|
|
187
196
|
</View>
|
|
188
197
|
);
|
|
189
198
|
}
|
|
@@ -214,7 +214,7 @@ function OxyServicesFedCMMixin(Base) {
|
|
|
214
214
|
* @private
|
|
215
215
|
*/
|
|
216
216
|
async exchangeIdTokenForSession(idToken) {
|
|
217
|
-
return this.makeRequest('POST', '/api/
|
|
217
|
+
return this.makeRequest('POST', '/api/fedcm/exchange', {
|
|
218
218
|
id_token: idToken
|
|
219
219
|
}, {
|
|
220
220
|
cache: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_OxyServicesErrors","require","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","OxyAuthenticationError","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_OxyServicesErrors","require","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","OxyAuthenticationError","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":";;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAmCC,IAAO,EAAE;EAC/E,OAAO,cAAcA,IAAI,CAAC;IACxBC,WAAWA,CAAC,GAAGC,IAAW,EAAE;MAC1B,KAAK,CAAC,GAAIA,IAAc,CAAC;IAC3B;IACF,OAAuBC,kBAAkB,GAAG,gCAAgC;IAC5E,OAAuBC,aAAa,GAAG,KAAK,CAAC,CAAC;;IAE9C;AACF;AACA;IACE,OAAOC,gBAAgBA,CAAA,EAAY;MACjC,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE,OAAO,KAAK;MAC/C,OAAO,oBAAoB,IAAIA,MAAM,IAAI,WAAW,IAAIA,MAAM,IAAI,aAAa,IAAIC,SAAS;IAC9F;;IAEA;AACF;AACA;IACEF,gBAAgBA,CAAA,EAAY;MAC1B,OAAQ,IAAI,CAACJ,WAAW,CAAkEI,gBAAgB,CAAC,CAAC;IAC9G;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,MAAMG,eAAeA,CAACC,OAAyB,GAAG,CAAC,CAAC,EAAiC;MACnF,IAAI,CAAC,IAAI,CAACJ,gBAAgB,CAAC,CAAC,EAAE;QAC5B,MAAM,IAAIK,yCAAsB,CAC9B,uGACF,CAAC;MACH;MAEA,IAAI;QACF,MAAMC,KAAK,GAAGF,OAAO,CAACE,KAAK,IAAI,IAAI,CAACC,aAAa,CAAC,CAAC;QACnD,MAAMC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;;QAEnC;QACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAAC;UACtDC,SAAS,EAAG,IAAI,CAAChB,WAAW,CAASE,kBAAkB;UACvDU,QAAQ;UACRF,KAAK;UACLO,OAAO,EAAET,OAAO,CAACS;QACnB,CAAC,CAAC;QAEF,IAAI,CAACH,UAAU,IAAI,CAACA,UAAU,CAACI,KAAK,EAAE;UACpC,MAAM,IAAIT,yCAAsB,CAAC,qCAAqC,CAAC;QACzE;;QAEA;QACA,MAAMU,OAAO,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAACN,UAAU,CAACI,KAAK,CAAC;;QAEtE;QACA,IAAIC,OAAO,IAAKA,OAAO,CAASE,WAAW,EAAE;UAC3C,IAAI,CAACC,WAAW,CAACC,SAAS,CAAEJ,OAAO,CAASE,WAAW,CAAC;QAC1D;QAEA,OAAOF,OAAO;MAChB,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd,IAAKA,KAAK,CAASC,IAAI,KAAK,YAAY,EAAE;UACxC,MAAM,IAAIhB,yCAAsB,CAAC,+BAA+B,CAAC;QACnE;QACA,IAAKe,KAAK,CAASC,IAAI,KAAK,cAAc,EAAE;UAC1C,MAAM,IAAIhB,yCAAsB,CAAC,6DAA6D,CAAC;QACjG;QACA,MAAMe,KAAK;MACb;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,MAAME,qBAAqBA,CAAA,EAAyC;MAClE,IAAI,CAAC,IAAI,CAACtB,gBAAgB,CAAC,CAAC,EAAE;QAC5B,OAAO,IAAI;MACb;MAEA,IAAI;QACF,MAAMM,KAAK,GAAG,IAAI,CAACC,aAAa,CAAC,CAAC;QAClC,MAAMC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;;QAEnC;QACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAAC;UACtDC,SAAS,EAAG,IAAI,CAAChB,WAAW,CAASE,kBAAkB;UACvDU,QAAQ;UACRF,KAAK;UACLiB,SAAS,EAAE;QACb,CAAC,CAAC;QAEF,IAAI,CAACb,UAAU,IAAI,CAACA,UAAU,CAACI,KAAK,EAAE;UACpC,OAAO,IAAI;QACb;QAEA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAACN,UAAU,CAACI,KAAK,CAAC;QACtE,IAAIC,OAAO,IAAKA,OAAO,CAASE,WAAW,EAAE;UAC3C,IAAI,CAACC,WAAW,CAACC,SAAS,CAAEJ,OAAO,CAASE,WAAW,CAAC;QAC1D;QAEA,OAAOF,OAAO;MAChB,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd;QACA,OAAO,IAAI;MACb;IACF;;IAEA;AACF;AACA;AACA;AACA;IACE,MAAaT,yBAAyBA,CAACP,OAMtC,EAAqC;MACpC,MAAMoB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;MACxC,MAAMC,OAAO,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAG,IAAI,CAAChC,WAAW,CAASG,aAAa,CAAC;MAE7F,IAAI;QACF;QACA,MAAMW,UAAU,GAAI,MAAOR,SAAS,CAAC2B,WAAW,CAASC,GAAG,CAAC;UAC3DC,QAAQ,EAAE;YACRC,SAAS,EAAE,CACT;cACEpB,SAAS,EAAER,OAAO,CAACQ,SAAS;cAC5BJ,QAAQ,EAAEJ,OAAO,CAACI,QAAQ;cAC1BF,KAAK,EAAEF,OAAO,CAACE,KAAK;cACpB,IAAIF,OAAO,CAACS,OAAO,IAAI;gBAAEoB,SAAS,EAAE7B,OAAO,CAACS;cAAQ,CAAC;YACvD,CAAC;UAEL,CAAC;UACDU,SAAS,EAAEnB,OAAO,CAACmB,SAAS,IAAI,UAAU;UAC1CW,MAAM,EAAEV,UAAU,CAACU;QACrB,CAAC,CAAS;QAEV,IAAI,CAACxB,UAAU,IAAIA,UAAU,CAACyB,IAAI,KAAK,UAAU,EAAE;UACjD,OAAO,IAAI;QACb;QAEA,OAAO;UAAErB,KAAK,EAAEJ,UAAU,CAACI;QAAM,CAAC;MACpC,CAAC,SAAS;QACRsB,YAAY,CAACV,OAAO,CAAC;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACE,MAAaV,yBAAyBA,CAACqB,OAAe,EAAiC;MACrF,OAAO,IAAI,CAACC,WAAW,CACrB,MAAM,EACN,qBAAqB,EACrB;QAAEC,QAAQ,EAAEF;MAAQ,CAAC,EACrB;QAAEG,KAAK,EAAE;MAAM,CACjB,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;IACE,MAAMC,qBAAqBA,CAAA,EAAkB;MAC3C,IAAI,CAAC,IAAI,CAACzC,gBAAgB,CAAC,CAAC,EAAE;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,oBAAoB,IAAIC,MAAM,IAAI,QAAQ,IAAKA,MAAM,CAASyC,kBAAkB,EAAE;UACpF,MAAMlC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;UACnC,MAAOR,MAAM,CAASyC,kBAAkB,CAACC,MAAM,CAAC;YAC9C/B,SAAS,EAAG,IAAI,CAAChB,WAAW,CAASE,kBAAkB;YACvDU;UACF,CAAC,CAAC;QACJ;MACF,CAAC,CAAC,OAAOY,KAAK,EAAE;QACd;MAAA;IAEJ;;IAEA;AACF;AACA;AACA;AACA;IACEwB,cAAcA,CAAA,EAAgB;MAC5B,OAAO;QACLC,OAAO,EAAE,IAAI,CAAC7C,gBAAgB,CAAC,CAAC;QAChCY,SAAS,EAAG,IAAI,CAAChB,WAAW,CAASE,kBAAkB;QACvDU,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC;MAC7B,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;IACSF,aAAaA,CAAA,EAAW;MAC7B,IAAI,OAAON,MAAM,KAAK,WAAW,IAAIA,MAAM,CAAC6C,MAAM,IAAI7C,MAAM,CAAC6C,MAAM,CAACC,UAAU,EAAE;QAC9E,OAAO9C,MAAM,CAAC6C,MAAM,CAACC,UAAU,CAAC,CAAC;MACnC;MACA;MACA,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IACvE;;IAEA;AACF;AACA;AACA;AACA;IACS5C,WAAWA,CAAA,EAAW;MAC3B,IAAI,OAAOR,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,SAAS;MAClB;MACA,OAAOA,MAAM,CAACqD,QAAQ,CAACC,MAAM;IAC/B;EACA,CAAC;AACH;;AAEA","ignoreList":[]}
|
|
@@ -8,24 +8,62 @@ var _react = require("react");
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
10
10
|
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
11
|
-
var _reactNativeKeyboardController = require("react-native-keyboard-controller");
|
|
12
11
|
var _OxyContext = require("../context/OxyContext.js");
|
|
13
12
|
var _reactQuery = require("@tanstack/react-query");
|
|
14
13
|
var _FontLoader = require("./FontLoader.js");
|
|
15
|
-
var _BottomSheetRouter = _interopRequireDefault(require("./BottomSheetRouter.js"));
|
|
16
14
|
var _sonner = require("../../lib/sonner.js");
|
|
17
15
|
var _queryClient = require("../hooks/queryClient.js");
|
|
18
16
|
var _storageHelpers = require("../utils/storageHelpers.js");
|
|
19
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } // Initialize fonts automatically
|
|
22
19
|
(0, _FontLoader.setupFonts)();
|
|
23
20
|
|
|
21
|
+
// Detect if running on web
|
|
22
|
+
const isWeb = _reactNative.Platform.OS === 'web';
|
|
23
|
+
|
|
24
|
+
// Conditionally import native-only components
|
|
25
|
+
let KeyboardProvider = ({
|
|
26
|
+
children
|
|
27
|
+
}) => children;
|
|
28
|
+
let BottomSheetRouter = () => null;
|
|
29
|
+
if (!isWeb) {
|
|
30
|
+
try {
|
|
31
|
+
// Only import on native platforms
|
|
32
|
+
KeyboardProvider = require('react-native-keyboard-controller').KeyboardProvider;
|
|
33
|
+
BottomSheetRouter = require('./BottomSheetRouter').default;
|
|
34
|
+
} catch {
|
|
35
|
+
// Fallback if imports fail
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
24
39
|
/**
|
|
25
|
-
* OxyProvider
|
|
40
|
+
* OxyProvider - Universal provider for Expo apps (native + web)
|
|
41
|
+
*
|
|
42
|
+
* Zero-config authentication and session management:
|
|
43
|
+
* - Native (iOS/Android): Keychain-based identity, bottom sheet auth UI
|
|
44
|
+
* - Web: FedCM cross-domain SSO, popup fallback
|
|
45
|
+
*
|
|
46
|
+
* Usage:
|
|
47
|
+
* ```tsx
|
|
48
|
+
* import { OxyProvider, useAuth } from '@oxyhq/services';
|
|
26
49
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
50
|
+
* function App() {
|
|
51
|
+
* return (
|
|
52
|
+
* <OxyProvider baseURL="https://api.oxy.so">
|
|
53
|
+
* <YourApp />
|
|
54
|
+
* </OxyProvider>
|
|
55
|
+
* );
|
|
56
|
+
* }
|
|
57
|
+
*
|
|
58
|
+
* function MyComponent() {
|
|
59
|
+
* const { isAuthenticated, user, signIn, signOut } = useAuth();
|
|
60
|
+
*
|
|
61
|
+
* if (!isAuthenticated) {
|
|
62
|
+
* return <OxySignInButton />;
|
|
63
|
+
* }
|
|
64
|
+
* return <Text>Welcome, {user?.username}!</Text>;
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
29
67
|
*/
|
|
30
68
|
const OxyProvider = ({
|
|
31
69
|
oxyServices,
|
|
@@ -73,14 +111,26 @@ const OxyProvider = ({
|
|
|
73
111
|
};
|
|
74
112
|
}, [providedQueryClient]);
|
|
75
113
|
|
|
76
|
-
// Hook React Query focus manager into
|
|
114
|
+
// Hook React Query focus manager into app state (native) or visibility (web)
|
|
77
115
|
(0, _react.useEffect)(() => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
116
|
+
if (isWeb) {
|
|
117
|
+
// Web: use document visibility
|
|
118
|
+
const handleVisibilityChange = () => {
|
|
119
|
+
_reactQuery.focusManager.setFocused(document.visibilityState === 'visible');
|
|
120
|
+
};
|
|
121
|
+
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
122
|
+
return () => {
|
|
123
|
+
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
124
|
+
};
|
|
125
|
+
} else {
|
|
126
|
+
// Native: use AppState
|
|
127
|
+
const subscription = _reactNative.AppState.addEventListener('change', state => {
|
|
128
|
+
_reactQuery.focusManager.setFocused(state === 'active');
|
|
129
|
+
});
|
|
130
|
+
return () => {
|
|
131
|
+
subscription.remove();
|
|
132
|
+
};
|
|
133
|
+
}
|
|
84
134
|
}, []);
|
|
85
135
|
|
|
86
136
|
// Setup network status monitoring for offline detection
|
|
@@ -88,8 +138,19 @@ const OxyProvider = ({
|
|
|
88
138
|
let cleanup;
|
|
89
139
|
const setupNetworkMonitoring = async () => {
|
|
90
140
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
141
|
+
if (isWeb) {
|
|
142
|
+
// Web: use navigator.onLine
|
|
143
|
+
_reactQuery.onlineManager.setOnline(navigator.onLine);
|
|
144
|
+
const handleOnline = () => _reactQuery.onlineManager.setOnline(true);
|
|
145
|
+
const handleOffline = () => _reactQuery.onlineManager.setOnline(false);
|
|
146
|
+
window.addEventListener('online', handleOnline);
|
|
147
|
+
window.addEventListener('offline', handleOffline);
|
|
148
|
+
cleanup = () => {
|
|
149
|
+
window.removeEventListener('online', handleOnline);
|
|
150
|
+
window.removeEventListener('offline', handleOffline);
|
|
151
|
+
};
|
|
152
|
+
} else {
|
|
153
|
+
// Native: try to use NetInfo
|
|
93
154
|
try {
|
|
94
155
|
const NetInfo = await Promise.resolve().then(() => _interopRequireWildcard(require('@react-native-community/netinfo')));
|
|
95
156
|
const state = await NetInfo.default.fetch();
|
|
@@ -102,17 +163,6 @@ const OxyProvider = ({
|
|
|
102
163
|
// NetInfo not available, default to online
|
|
103
164
|
_reactQuery.onlineManager.setOnline(true);
|
|
104
165
|
}
|
|
105
|
-
} else {
|
|
106
|
-
// For web, use navigator.onLine
|
|
107
|
-
_reactQuery.onlineManager.setOnline(navigator.onLine);
|
|
108
|
-
const handleOnline = () => _reactQuery.onlineManager.setOnline(true);
|
|
109
|
-
const handleOffline = () => _reactQuery.onlineManager.setOnline(false);
|
|
110
|
-
window.addEventListener('online', handleOnline);
|
|
111
|
-
window.addEventListener('offline', handleOffline);
|
|
112
|
-
cleanup = () => {
|
|
113
|
-
window.removeEventListener('online', handleOnline);
|
|
114
|
-
window.removeEventListener('offline', handleOffline);
|
|
115
|
-
};
|
|
116
166
|
}
|
|
117
167
|
} catch (error) {
|
|
118
168
|
// Default to online if detection fails
|
|
@@ -127,27 +177,43 @@ const OxyProvider = ({
|
|
|
127
177
|
|
|
128
178
|
// Ensure we have a valid QueryClient
|
|
129
179
|
if (!queryClient) {
|
|
130
|
-
// Return loading state or fallback
|
|
131
180
|
return null;
|
|
132
181
|
}
|
|
182
|
+
|
|
183
|
+
// Core content that works on all platforms
|
|
184
|
+
const coreContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactQuery.QueryClientProvider, {
|
|
185
|
+
client: queryClient,
|
|
186
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_OxyContext.OxyContextProvider, {
|
|
187
|
+
oxyServices: oxyServices,
|
|
188
|
+
baseURL: baseURL,
|
|
189
|
+
authWebUrl: authWebUrl,
|
|
190
|
+
authRedirectUri: authRedirectUri,
|
|
191
|
+
storageKeyPrefix: storageKeyPrefix,
|
|
192
|
+
onAuthStateChange: onAuthStateChange,
|
|
193
|
+
children: [children, !isWeb && /*#__PURE__*/(0, _jsxRuntime.jsx)(BottomSheetRouter, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sonner.Toaster, {})]
|
|
194
|
+
})
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// On web, minimal wrappers (GestureHandler and SafeArea work via react-native-web)
|
|
198
|
+
if (isWeb) {
|
|
199
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSafeAreaContext.SafeAreaProvider, {
|
|
200
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView, {
|
|
201
|
+
style: {
|
|
202
|
+
flex: 1
|
|
203
|
+
},
|
|
204
|
+
children: coreContent
|
|
205
|
+
})
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// On native, full wrappers including KeyboardProvider
|
|
133
210
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSafeAreaContext.SafeAreaProvider, {
|
|
134
211
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView, {
|
|
135
212
|
style: {
|
|
136
213
|
flex: 1
|
|
137
214
|
},
|
|
138
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
139
|
-
children:
|
|
140
|
-
client: queryClient,
|
|
141
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_OxyContext.OxyContextProvider, {
|
|
142
|
-
oxyServices: oxyServices,
|
|
143
|
-
baseURL: baseURL,
|
|
144
|
-
authWebUrl: authWebUrl,
|
|
145
|
-
authRedirectUri: authRedirectUri,
|
|
146
|
-
storageKeyPrefix: storageKeyPrefix,
|
|
147
|
-
onAuthStateChange: onAuthStateChange,
|
|
148
|
-
children: [children, /*#__PURE__*/(0, _jsxRuntime.jsx)(_BottomSheetRouter.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sonner.Toaster, {})]
|
|
149
|
-
})
|
|
150
|
-
})
|
|
215
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(KeyboardProvider, {
|
|
216
|
+
children: coreContent
|
|
151
217
|
})
|
|
152
218
|
})
|
|
153
219
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeSafeAreaContext","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeSafeAreaContext","_OxyContext","_reactQuery","_FontLoader","_sonner","_queryClient","_storageHelpers","_jsxRuntime","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","setupFonts","isWeb","Platform","OS","KeyboardProvider","children","BottomSheetRouter","OxyProvider","oxyServices","onAuthStateChange","storageKeyPrefix","baseURL","authWebUrl","authRedirectUri","queryClient","providedQueryClient","storageRef","useRef","queryClientRef","setQueryClient","useState","useEffect","current","mounted","createPlatformStorage","then","storage","client","createQueryClient","catch","error","__DEV__","console","warn","handleVisibilityChange","focusManager","setFocused","document","visibilityState","addEventListener","removeEventListener","subscription","AppState","state","remove","cleanup","setupNetworkMonitoring","onlineManager","setOnline","navigator","onLine","handleOnline","handleOffline","window","NetInfo","Promise","resolve","fetch","isConnected","unsubscribe","coreContent","jsx","QueryClientProvider","jsxs","OxyContextProvider","Toaster","SafeAreaProvider","GestureHandlerRootView","style","flex","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.OxySignInButton = void 0;
|
|
7
|
+
var _react = require("react");
|
|
7
8
|
var _reactNative = require("react-native");
|
|
8
|
-
var
|
|
9
|
+
var _useAuth = require("../hooks/useAuth.js");
|
|
9
10
|
var _OxyLogo = _interopRequireDefault(require("./OxyLogo.js"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -43,31 +44,37 @@ const OxySignInButton = ({
|
|
|
43
44
|
disabled = false,
|
|
44
45
|
showWhenAuthenticated = false
|
|
45
46
|
}) => {
|
|
46
|
-
// Get all needed values from context in a single call
|
|
47
47
|
const {
|
|
48
48
|
isAuthenticated,
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
signIn,
|
|
50
|
+
isLoading
|
|
51
|
+
} = (0, _useAuth.useAuth)();
|
|
52
|
+
const [isSigningIn, setIsSigningIn] = (0, _react.useState)(false);
|
|
51
53
|
|
|
52
54
|
// Don't show the button if already authenticated (unless explicitly overridden)
|
|
53
55
|
if (isAuthenticated && !showWhenAuthenticated) return null;
|
|
54
56
|
|
|
55
|
-
// Default handler that uses
|
|
56
|
-
|
|
57
|
+
// Default handler that uses useAuth's signIn method
|
|
58
|
+
// This works for both web (popup) and native (bottom sheet)
|
|
59
|
+
const handlePress = async () => {
|
|
57
60
|
if (onPress) {
|
|
58
61
|
onPress();
|
|
59
62
|
return;
|
|
60
63
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
64
|
+
if (isSigningIn) return;
|
|
65
|
+
setIsSigningIn(true);
|
|
66
|
+
try {
|
|
67
|
+
await signIn();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
// Sign-in handled by the auth flow
|
|
66
70
|
if (__DEV__) {
|
|
67
|
-
console.
|
|
71
|
+
console.log('OxySignInButton: Sign-in flow initiated', error);
|
|
68
72
|
}
|
|
73
|
+
} finally {
|
|
74
|
+
setIsSigningIn(false);
|
|
69
75
|
}
|
|
70
76
|
};
|
|
77
|
+
const isButtonDisabled = disabled || isLoading || isSigningIn;
|
|
71
78
|
|
|
72
79
|
// Determine the button style based on the variant
|
|
73
80
|
const getButtonStyle = () => {
|
|
@@ -93,9 +100,9 @@ const OxySignInButton = ({
|
|
|
93
100
|
}
|
|
94
101
|
};
|
|
95
102
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
96
|
-
style: [styles.button, getButtonStyle(),
|
|
103
|
+
style: [styles.button, getButtonStyle(), isButtonDisabled && styles.buttonDisabled],
|
|
97
104
|
onPress: handlePress,
|
|
98
|
-
disabled:
|
|
105
|
+
disabled: isButtonDisabled,
|
|
99
106
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
100
107
|
style: styles.buttonContent,
|
|
101
108
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_OxyLogo.default, {
|
|
@@ -103,12 +110,12 @@ const OxySignInButton = ({
|
|
|
103
110
|
height: 20,
|
|
104
111
|
fillColor: variant === 'contained' ? 'white' : '#d169e5',
|
|
105
112
|
secondaryFillColor: variant === 'contained' ? '#d169e5' : undefined,
|
|
106
|
-
style:
|
|
113
|
+
style: isButtonDisabled ? {
|
|
107
114
|
opacity: 0.6
|
|
108
115
|
} : undefined
|
|
109
116
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
110
|
-
style: [styles.text, getTextStyle(),
|
|
111
|
-
children: text
|
|
117
|
+
style: [styles.text, getTextStyle(), isButtonDisabled && styles.textDisabled],
|
|
118
|
+
children: isSigningIn ? 'Signing in...' : text
|
|
112
119
|
})]
|
|
113
120
|
})
|
|
114
121
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_useAuth","_OxyLogo","_interopRequireDefault","_jsxRuntime","e","__esModule","default","OxySignInButton","variant","onPress","style","textStyle","text","disabled","showWhenAuthenticated","isAuthenticated","signIn","isLoading","useAuth","isSigningIn","setIsSigningIn","useState","handlePress","error","__DEV__","console","log","isButtonDisabled","getButtonStyle","styles","buttonOutline","buttonContained","buttonDefault","getTextStyle","textOutline","textContained","textDefault","jsx","TouchableOpacity","button","buttonDisabled","children","jsxs","View","buttonContent","width","height","fillColor","secondaryFillColor","undefined","opacity","Text","textDisabled","exports","StyleSheet","create","padding","borderRadius","alignItems","justifyContent","backgroundColor","borderWidth","borderColor","Platform","select","web","boxShadow","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","flexDirection","fontFamily","OS","fontWeight","fontSize","marginLeft","color","_default"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,16 +11,20 @@ var _queryClient = require("../hooks/queryClient.js");
|
|
|
11
11
|
var _storageHelpers = require("../utils/storageHelpers.js");
|
|
12
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
13
|
/**
|
|
14
|
-
* WebOxyProvider -
|
|
14
|
+
* WebOxyProvider - Lightweight provider for pure React/Next.js apps
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Use this provider for web apps that DON'T use Expo/React Native.
|
|
17
|
+
* For Expo apps (native + web), use `OxyProvider` instead - it works on all platforms.
|
|
18
|
+
*
|
|
19
|
+
* Features:
|
|
20
|
+
* - Automatic cross-domain SSO via FedCM (Chrome 108+, Safari 16.4+, Edge 108+)
|
|
21
|
+
* - No React Native dependencies
|
|
19
22
|
* - Session management
|
|
20
23
|
* - All useOxy/useAuth functionality
|
|
21
24
|
*
|
|
22
25
|
* Usage:
|
|
23
26
|
* ```tsx
|
|
27
|
+
* // For pure React/Next.js apps (no Expo):
|
|
24
28
|
* import { WebOxyProvider, useAuth } from '@oxyhq/services';
|
|
25
29
|
*
|
|
26
30
|
* function App() {
|
|
@@ -30,6 +34,9 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
30
34
|
* </WebOxyProvider>
|
|
31
35
|
* );
|
|
32
36
|
* }
|
|
37
|
+
*
|
|
38
|
+
* // For Expo apps (native + web), use OxyProvider instead:
|
|
39
|
+
* import { OxyProvider, useAuth } from '@oxyhq/services';
|
|
33
40
|
* ```
|
|
34
41
|
*/
|
|
35
42
|
|
|
@@ -37,7 +44,8 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
37
44
|
* OxyProvider for web applications
|
|
38
45
|
*
|
|
39
46
|
* Features:
|
|
40
|
-
* - Automatic cross-domain SSO (
|
|
47
|
+
* - Automatic cross-domain SSO via FedCM (browser-native identity API)
|
|
48
|
+
* - Works across different TLDs (alia.onl, mention.earth, homiio.com, etc.)
|
|
41
49
|
* - Session persistence in localStorage
|
|
42
50
|
* - TanStack Query for data fetching
|
|
43
51
|
* - No React Native dependencies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_OxyContext","_reactQuery","_queryClient","_storageHelpers","_jsxRuntime","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","storageKeyPrefix","queryClient","providedQueryClient","storageRef","useRef","queryClientRef","setQueryClient","useState","useEffect","current","mounted","createPlatformStorage","then","storage","client","createQueryClient","catch","jsx","QueryClientProvider","OxyContextProvider","_default","exports","default"],"sourceRoot":"../../../../src","sources":["ui/components/WebOxyProvider.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_react","require","_OxyContext","_reactQuery","_queryClient","_storageHelpers","_jsxRuntime","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","storageKeyPrefix","queryClient","providedQueryClient","storageRef","useRef","queryClientRef","setQueryClient","useState","useEffect","current","mounted","createPlatformStorage","then","storage","client","createQueryClient","catch","jsx","QueryClientProvider","OxyContextProvider","_default","exports","default"],"sourceRoot":"../../../../src","sources":["ui/components/WebOxyProvider.tsx"],"mappings":";;;;;;AA8BA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAAuF,IAAAK,WAAA,GAAAL,OAAA;AAlCvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,cAAuC,GAAGA,CAAC;EAC/CC,QAAQ;EACRC,OAAO;EACPC,UAAU;EACVC,iBAAiB;EACjBC,gBAAgB;EAChBC,WAAW,EAAEC;AACf,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAA0B,IAAI,CAAC;EACxD,MAAMC,cAAc,GAAG,IAAAD,aAAM,EAA8C,IAAI,CAAC;EAChF,MAAM,CAACH,WAAW,EAAEK,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAA8C,IAAI,CAAC;EAEjG,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIN,mBAAmB,EAAE;MACvBG,cAAc,CAACI,OAAO,GAAGP,mBAAmB;MAC5CI,cAAc,CAACJ,mBAAmB,CAAC;MACnC;IACF;IAEA,IAAIQ,OAAO,GAAG,IAAI;IAClB,IAAAC,qCAAqB,EAAC,CAAC,CACpBC,IAAI,CAAEC,OAAO,IAAK;MACjB,IAAIH,OAAO,IAAI,CAACL,cAAc,CAACI,OAAO,EAAE;QACtCN,UAAU,CAACM,OAAO,GAAGI,OAAO;QAC5B,MAAMC,MAAM,GAAG,IAAAC,8BAAiB,EAACF,OAAO,CAAC;QACzCR,cAAc,CAACI,OAAO,GAAGK,MAAM;QAC/BR,cAAc,CAACQ,MAAM,CAAC;MACxB;IACF,CAAC,CAAC,CACDE,KAAK,CAAC,MAAM;MACX,IAAIN,OAAO,IAAI,CAACL,cAAc,CAACI,OAAO,EAAE;QACtC,MAAMK,MAAM,GAAG,IAAAC,8BAAiB,EAAC,IAAI,CAAC;QACtCV,cAAc,CAACI,OAAO,GAAGK,MAAM;QAC/BR,cAAc,CAACQ,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IAEJ,OAAO,MAAM;MACXJ,OAAO,GAAG,KAAK;IACjB,CAAC;EACH,CAAC,EAAE,CAACR,mBAAmB,CAAC,CAAC;;EAEzB;EACA,IAAI,CAACD,WAAW,EAAE;IAChB,OAAO,IAAI;EACb;EAEA,oBACE,IAAAP,WAAA,CAAAuB,GAAA,EAAC1B,WAAA,CAAA2B,mBAAmB;IAACJ,MAAM,EAAEb,WAAY;IAAAL,QAAA,eACvC,IAAAF,WAAA,CAAAuB,GAAA,EAAC3B,WAAA,CAAA6B,kBAAkB;MACjBtB,OAAO,EAAEA,OAAQ;MACjBC,UAAU,EAAEA,UAAW;MACvBE,gBAAgB,EAAEA,gBAAiB;MACnCD,iBAAiB,EAAEA,iBAAkB;MAAAH,QAAA,EAEpCA;IAAQ,CACS;EAAC,CACF,CAAC;AAE1B,CAAC;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa3B,cAAc","ignoreList":[]}
|