@oxyhq/services 5.19.0 → 5.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -42
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js +46 -24
- 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/WebOxyProvider.js +9 -10
- package/lib/commonjs/ui/components/WebOxyProvider.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +21 -8
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useWebSSO.js +21 -2
- package/lib/commonjs/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js +46 -24
- 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/WebOxyProvider.js +9 -10
- package/lib/module/ui/components/WebOxyProvider.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +21 -8
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useWebSSO.js +21 -2
- package/lib/module/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts +10 -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/WebOxyProvider.d.ts +9 -10
- package/lib/typescript/commonjs/ui/components/WebOxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts +10 -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/WebOxyProvider.d.ts +9 -10
- package/lib/typescript/module/ui/components/WebOxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/mixins/OxyServices.fedcm.ts +47 -23
- package/src/ui/components/OxyProvider.tsx +112 -47
- package/src/ui/components/WebOxyProvider.tsx +9 -10
- package/src/ui/hooks/useAuth.ts +25 -8
- package/src/ui/hooks/useWebSSO.ts +21 -2
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
|
}
|
|
@@ -5,6 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.FedCMMixin = exports.OxyServicesFedCMMixin = OxyServicesFedCMMixin;
|
|
7
7
|
var _OxyServicesErrors = require("../OxyServices.errors.js");
|
|
8
|
+
// Global lock to prevent concurrent FedCM requests
|
|
9
|
+
// FedCM only allows one navigator.credentials.get request at a time
|
|
10
|
+
let fedCMRequestInProgress = false;
|
|
11
|
+
let fedCMRequestPromise = null;
|
|
12
|
+
|
|
8
13
|
/**
|
|
9
14
|
* Federated Credential Management (FedCM) Authentication Mixin
|
|
10
15
|
*
|
|
@@ -173,36 +178,53 @@ function OxyServicesFedCMMixin(Base) {
|
|
|
173
178
|
/**
|
|
174
179
|
* Request identity credential from browser using FedCM API
|
|
175
180
|
*
|
|
181
|
+
* Uses a global lock to prevent concurrent requests, as FedCM only
|
|
182
|
+
* allows one navigator.credentials.get request at a time.
|
|
183
|
+
*
|
|
176
184
|
* @private
|
|
177
185
|
*/
|
|
178
186
|
async requestIdentityCredential(options) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
identity: {
|
|
185
|
-
providers: [{
|
|
186
|
-
configURL: options.configURL,
|
|
187
|
-
clientId: options.clientId,
|
|
188
|
-
nonce: options.nonce,
|
|
189
|
-
...(options.context && {
|
|
190
|
-
loginHint: options.context
|
|
191
|
-
})
|
|
192
|
-
}]
|
|
193
|
-
},
|
|
194
|
-
mediation: options.mediation || 'optional',
|
|
195
|
-
signal: controller.signal
|
|
196
|
-
});
|
|
197
|
-
if (!credential || credential.type !== 'identity') {
|
|
187
|
+
// If a request is already in progress, wait for it instead of starting a new one
|
|
188
|
+
if (fedCMRequestInProgress && fedCMRequestPromise) {
|
|
189
|
+
try {
|
|
190
|
+
return await fedCMRequestPromise;
|
|
191
|
+
} catch {
|
|
198
192
|
return null;
|
|
199
193
|
}
|
|
200
|
-
return {
|
|
201
|
-
token: credential.token
|
|
202
|
-
};
|
|
203
|
-
} finally {
|
|
204
|
-
clearTimeout(timeout);
|
|
205
194
|
}
|
|
195
|
+
fedCMRequestInProgress = true;
|
|
196
|
+
const controller = new AbortController();
|
|
197
|
+
const timeout = setTimeout(() => controller.abort(), this.constructor.FEDCM_TIMEOUT);
|
|
198
|
+
fedCMRequestPromise = (async () => {
|
|
199
|
+
try {
|
|
200
|
+
// Type assertion needed as FedCM types may not be in all TypeScript versions
|
|
201
|
+
const credential = await navigator.credentials.get({
|
|
202
|
+
identity: {
|
|
203
|
+
providers: [{
|
|
204
|
+
configURL: options.configURL,
|
|
205
|
+
clientId: options.clientId,
|
|
206
|
+
nonce: options.nonce,
|
|
207
|
+
...(options.context && {
|
|
208
|
+
loginHint: options.context
|
|
209
|
+
})
|
|
210
|
+
}]
|
|
211
|
+
},
|
|
212
|
+
mediation: options.mediation || 'optional',
|
|
213
|
+
signal: controller.signal
|
|
214
|
+
});
|
|
215
|
+
if (!credential || credential.type !== 'identity') {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
token: credential.token
|
|
220
|
+
};
|
|
221
|
+
} finally {
|
|
222
|
+
clearTimeout(timeout);
|
|
223
|
+
fedCMRequestInProgress = false;
|
|
224
|
+
fedCMRequestPromise = null;
|
|
225
|
+
}
|
|
226
|
+
})();
|
|
227
|
+
return fedCMRequestPromise;
|
|
206
228
|
}
|
|
207
229
|
|
|
208
230
|
/**
|
|
@@ -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","fedCMRequestInProgress","fedCMRequestPromise","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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","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":[]}
|
|
@@ -11,18 +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
|
-
*
|
|
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:
|
|
18
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
|
-
* Zero-config: Just wrap your app and SSO works automatically across domains.
|
|
23
|
-
*
|
|
24
25
|
* Usage:
|
|
25
26
|
* ```tsx
|
|
27
|
+
* // For pure React/Next.js apps (no Expo):
|
|
26
28
|
* import { WebOxyProvider, useAuth } from '@oxyhq/services';
|
|
27
29
|
*
|
|
28
30
|
* function App() {
|
|
@@ -33,11 +35,8 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
33
35
|
* );
|
|
34
36
|
* }
|
|
35
37
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* if (isAuthenticated) return <span>Welcome, {user?.username}!</span>;
|
|
39
|
-
* return <button onClick={() => signIn()}>Sign In</button>;
|
|
40
|
-
* }
|
|
38
|
+
* // For Expo apps (native + web), use OxyProvider instead:
|
|
39
|
+
* import { OxyProvider, useAuth } from '@oxyhq/services';
|
|
41
40
|
* ```
|
|
42
41
|
*/
|
|
43
42
|
|
|
@@ -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":[]}
|
|
@@ -64,8 +64,12 @@ function useAuth() {
|
|
|
64
64
|
showBottomSheet
|
|
65
65
|
} = (0, _OxyContext.useOxy)();
|
|
66
66
|
const signIn = (0, _react.useCallback)(async publicKey => {
|
|
67
|
-
//
|
|
68
|
-
|
|
67
|
+
// Check if we're on the identity provider itself (auth.oxy.so)
|
|
68
|
+
// Only auth.oxy.so has local login forms - accounts.oxy.so is a client app
|
|
69
|
+
const isIdentityProvider = (0, _useWebSSO.isWebBrowser)() && window.location.hostname === 'auth.oxy.so';
|
|
70
|
+
|
|
71
|
+
// Web (not on IdP): Use FedCM or popup-based authentication
|
|
72
|
+
if ((0, _useWebSSO.isWebBrowser)() && !publicKey && !isIdentityProvider) {
|
|
69
73
|
try {
|
|
70
74
|
// Try FedCM first (instant if user already signed in)
|
|
71
75
|
if (oxyServices.isFedCMSupported?.()) {
|
|
@@ -102,13 +106,22 @@ function useAuth() {
|
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
108
|
|
|
105
|
-
// No identity - show auth UI
|
|
106
|
-
showBottomSheet
|
|
109
|
+
// No identity - show auth UI
|
|
110
|
+
if (showBottomSheet) {
|
|
111
|
+
showBottomSheet('OxyAuth');
|
|
112
|
+
// Return a promise that resolves when auth completes
|
|
113
|
+
return new Promise((_, reject) => {
|
|
114
|
+
reject(new Error('Please complete sign-in in the auth sheet'));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
107
117
|
|
|
108
|
-
//
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
118
|
+
// Web fallback: navigate to login page on auth domain
|
|
119
|
+
if ((0, _useWebSSO.isWebBrowser)()) {
|
|
120
|
+
const loginUrl = window.location.hostname.includes('oxy.so') ? '/login' : 'https://accounts.oxy.so/login';
|
|
121
|
+
window.location.href = loginUrl;
|
|
122
|
+
return new Promise(() => {}); // Never resolves, page will redirect
|
|
123
|
+
}
|
|
124
|
+
throw new Error('No authentication method available');
|
|
112
125
|
}, [oxySignIn, hasIdentity, getPublicKey, showBottomSheet, oxyServices]);
|
|
113
126
|
const signOut = (0, _react.useCallback)(async () => {
|
|
114
127
|
await logout();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_OxyContext","_useWebSSO","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","useOxy","useCallback","publicKey","isWebBrowser","isFedCMSupported","fedcmSession","signInWithFedCM","popupSession","signInWithPopup","Error","message","includes","hasExisting","existingKey","Promise","_","reject","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":";;;;;;;;;;;;AAyBA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AA5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,OAAOA,CAAA,EAAkB;EACvC,MAAM;IACJC,IAAI;IACJC,eAAe;IACfC,SAAS;IACTC,YAAY;IACZC,KAAK;IACLC,MAAM,EAAEC,SAAS;IACjBC,MAAM;IACNC,SAAS;IACTC,eAAe;IACfC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAG,IAAAC,kBAAM,EAAC,CAAC;EAEZ,MAAMT,MAAM,GAAG,IAAAU,kBAAW,EAAC,MAAOC,SAAkB,IAAoB;IACtE;IACA,
|
|
1
|
+
{"version":3,"names":["_react","require","_OxyContext","_useWebSSO","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","useOxy","useCallback","publicKey","isIdentityProvider","isWebBrowser","window","location","hostname","isFedCMSupported","fedcmSession","signInWithFedCM","popupSession","signInWithPopup","Error","message","includes","hasExisting","existingKey","Promise","_","reject","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
|