@oxyhq/services 5.2.4 → 5.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/commonjs/ui/components/OxyProvider.js +22 -3
  2. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  3. package/lib/commonjs/ui/context/OxyContext.js +31 -3
  4. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  5. package/lib/commonjs/ui/navigation/OxyRouter.js +11 -2
  6. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  7. package/lib/module/ui/components/OxyProvider.js +22 -3
  8. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  9. package/lib/module/ui/context/OxyContext.js +31 -3
  10. package/lib/module/ui/context/OxyContext.js.map +1 -1
  11. package/lib/module/ui/navigation/OxyRouter.js +11 -2
  12. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  13. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  14. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  15. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  16. package/package.json +1 -1
  17. package/src/ui/components/OxyProvider.tsx +25 -3
  18. package/src/ui/context/OxyContext.tsx +32 -2
  19. package/src/ui/navigation/OxyRouter.tsx +14 -1
  20. package/lib/commonjs/ui/context/LegacyOxyContext.js +0 -643
  21. package/lib/commonjs/ui/context/LegacyOxyContext.js.map +0 -1
  22. package/lib/commonjs/ui/context/SecureOxyContext.js +0 -408
  23. package/lib/commonjs/ui/context/SecureOxyContext.js.map +0 -1
  24. package/lib/module/ui/context/LegacyOxyContext.js +0 -639
  25. package/lib/module/ui/context/LegacyOxyContext.js.map +0 -1
  26. package/lib/module/ui/context/SecureOxyContext.js +0 -403
  27. package/lib/module/ui/context/SecureOxyContext.js.map +0 -1
  28. package/lib/typescript/ui/context/LegacyOxyContext.d.ts +0 -40
  29. package/lib/typescript/ui/context/LegacyOxyContext.d.ts.map +0 -1
  30. package/lib/typescript/ui/context/SecureOxyContext.d.ts +0 -39
  31. package/lib/typescript/ui/context/SecureOxyContext.d.ts.map +0 -1
  32. package/src/ui/context/LegacyOxyContext.tsx +0 -735
  33. package/src/ui/context/SecureOxyContext.tsx +0 -473
@@ -1,408 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useSecureOxyContext = exports.default = exports.SecureOxyContextProvider = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _jsxRuntime = require("react/jsx-runtime");
9
- 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); } // Define the secure context shape
10
- // Create the context with default values
11
- const SecureOxyContext = /*#__PURE__*/(0, _react.createContext)(null);
12
-
13
- // Props for the SecureOxyContextProvider
14
-
15
- // Platform storage implementation
16
-
17
- // Web localStorage implementation
18
- class WebStorage {
19
- async getItem(key) {
20
- return localStorage.getItem(key);
21
- }
22
- async setItem(key, value) {
23
- localStorage.setItem(key, value);
24
- }
25
- async removeItem(key) {
26
- localStorage.removeItem(key);
27
- }
28
- async clear() {
29
- localStorage.clear();
30
- }
31
- }
32
-
33
- // React Native AsyncStorage implementation
34
- let AsyncStorage;
35
-
36
- // Determine the platform and set up storage
37
- const isReactNative = () => {
38
- return typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
39
- };
40
-
41
- // Get appropriate storage for the platform
42
- const getStorage = async () => {
43
- if (isReactNative()) {
44
- if (!AsyncStorage) {
45
- try {
46
- const asyncStorageModule = await Promise.resolve().then(() => _interopRequireWildcard(require('@react-native-async-storage/async-storage')));
47
- AsyncStorage = asyncStorageModule.default;
48
- } catch (error) {
49
- console.error('Failed to import AsyncStorage:', error);
50
- throw new Error('AsyncStorage is required in React Native environment');
51
- }
52
- }
53
- return AsyncStorage;
54
- }
55
- return new WebStorage();
56
- };
57
-
58
- // Storage keys for secure sessions
59
- const getSecureStorageKeys = (prefix = 'oxy_secure') => ({
60
- sessions: `${prefix}_sessions`,
61
- // Array of SecureClientSession objects
62
- activeSessionId: `${prefix}_active_session_id` // ID of currently active session
63
- });
64
- const SecureOxyContextProvider = ({
65
- children,
66
- oxyServices,
67
- storageKeyPrefix = 'oxy_secure',
68
- onAuthStateChange,
69
- bottomSheetRef
70
- }) => {
71
- // Authentication state
72
- const [user, setUser] = (0, _react.useState)(null);
73
- const [minimalUser, setMinimalUser] = (0, _react.useState)(null);
74
- const [sessions, setSessions] = (0, _react.useState)([]);
75
- const [activeSessionId, setActiveSessionId] = (0, _react.useState)(null);
76
- const [isLoading, setIsLoading] = (0, _react.useState)(true);
77
- const [error, setError] = (0, _react.useState)(null);
78
- const [storage, setStorage] = (0, _react.useState)(null);
79
-
80
- // Storage keys (memoized to prevent infinite loops)
81
- const keys = (0, _react.useMemo)(() => getSecureStorageKeys(storageKeyPrefix), [storageKeyPrefix]);
82
-
83
- // Initialize storage
84
- (0, _react.useEffect)(() => {
85
- const initStorage = async () => {
86
- try {
87
- const platformStorage = await getStorage();
88
- setStorage(platformStorage);
89
- } catch (error) {
90
- console.error('Failed to initialize storage:', error);
91
- setError('Failed to initialize storage');
92
- }
93
- };
94
- initStorage();
95
- }, []);
96
-
97
- // Effect to initialize authentication state
98
- (0, _react.useEffect)(() => {
99
- const initAuth = async () => {
100
- if (!storage) return;
101
- setIsLoading(true);
102
- try {
103
- // Load stored sessions
104
- const sessionsData = await storage.getItem(keys.sessions);
105
- const storedActiveSessionId = await storage.getItem(keys.activeSessionId);
106
- console.log('SecureAuth - sessionsData:', sessionsData);
107
- console.log('SecureAuth - activeSessionId:', storedActiveSessionId);
108
- if (sessionsData) {
109
- const parsedSessions = JSON.parse(sessionsData);
110
- setSessions(parsedSessions);
111
- if (storedActiveSessionId && parsedSessions.length > 0) {
112
- const activeSession = parsedSessions.find(s => s.sessionId === storedActiveSessionId);
113
- if (activeSession) {
114
- console.log('SecureAuth - activeSession found:', activeSession);
115
-
116
- // Validate session
117
- try {
118
- const validation = await oxyServices.validateSession(activeSession.sessionId);
119
- if (validation.valid) {
120
- console.log('SecureAuth - session validated successfully');
121
- setActiveSessionId(activeSession.sessionId);
122
-
123
- // Get access token for API calls
124
- await oxyServices.getTokenBySession(activeSession.sessionId);
125
-
126
- // Load full user data
127
- const fullUser = await oxyServices.getUserBySession(activeSession.sessionId);
128
- setUser(fullUser);
129
- setMinimalUser({
130
- id: fullUser.id,
131
- username: fullUser.username,
132
- avatar: fullUser.avatar
133
- });
134
- if (onAuthStateChange) {
135
- onAuthStateChange(fullUser);
136
- }
137
- } else {
138
- console.log('SecureAuth - session invalid, removing');
139
- await removeInvalidSession(activeSession.sessionId);
140
- }
141
- } catch (error) {
142
- console.error('SecureAuth - session validation error:', error);
143
- await removeInvalidSession(activeSession.sessionId);
144
- }
145
- }
146
- }
147
- }
148
- } catch (err) {
149
- console.error('Secure auth initialization error:', err);
150
- await clearAllStorage();
151
- } finally {
152
- setIsLoading(false);
153
- }
154
- };
155
- if (storage) {
156
- initAuth();
157
- }
158
- }, [storage, oxyServices, keys, onAuthStateChange]);
159
-
160
- // Remove invalid session
161
- const removeInvalidSession = (0, _react.useCallback)(async sessionId => {
162
- const filteredSessions = sessions.filter(s => s.sessionId !== sessionId);
163
- setSessions(filteredSessions);
164
- await saveSessionsToStorage(filteredSessions);
165
-
166
- // If there are other sessions, switch to the first one
167
- if (filteredSessions.length > 0) {
168
- await switchToSession(filteredSessions[0].sessionId);
169
- } else {
170
- // No valid sessions left
171
- setActiveSessionId(null);
172
- setUser(null);
173
- setMinimalUser(null);
174
- await storage?.removeItem(keys.activeSessionId);
175
- if (onAuthStateChange) {
176
- onAuthStateChange(null);
177
- }
178
- }
179
- }, [sessions, storage, keys, onAuthStateChange]);
180
-
181
- // Save sessions to storage
182
- const saveSessionsToStorage = (0, _react.useCallback)(async sessionsList => {
183
- if (!storage) return;
184
- await storage.setItem(keys.sessions, JSON.stringify(sessionsList));
185
- }, [storage, keys.sessions]);
186
-
187
- // Save active session ID to storage
188
- const saveActiveSessionId = (0, _react.useCallback)(async sessionId => {
189
- if (!storage) return;
190
- await storage.setItem(keys.activeSessionId, sessionId);
191
- }, [storage, keys.activeSessionId]);
192
-
193
- // Clear all storage
194
- const clearAllStorage = (0, _react.useCallback)(async () => {
195
- if (!storage) return;
196
- try {
197
- await storage.removeItem(keys.sessions);
198
- await storage.removeItem(keys.activeSessionId);
199
- } catch (err) {
200
- console.error('Clear secure storage error:', err);
201
- }
202
- }, [storage, keys]);
203
-
204
- // Switch to a different session
205
- const switchToSession = (0, _react.useCallback)(async sessionId => {
206
- try {
207
- setIsLoading(true);
208
-
209
- // Get access token for this session
210
- await oxyServices.getTokenBySession(sessionId);
211
-
212
- // Load full user data
213
- const fullUser = await oxyServices.getUserBySession(sessionId);
214
- setActiveSessionId(sessionId);
215
- setUser(fullUser);
216
- setMinimalUser({
217
- id: fullUser.id,
218
- username: fullUser.username,
219
- avatar: fullUser.avatar
220
- });
221
- await saveActiveSessionId(sessionId);
222
- if (onAuthStateChange) {
223
- onAuthStateChange(fullUser);
224
- }
225
- } catch (error) {
226
- console.error('Switch session error:', error);
227
- setError('Failed to switch session');
228
- } finally {
229
- setIsLoading(false);
230
- }
231
- }, [oxyServices, onAuthStateChange, saveActiveSessionId]);
232
-
233
- // Secure login method
234
- const secureLogin = async (username, password, deviceName) => {
235
- if (!storage) throw new Error('Storage not initialized');
236
- setIsLoading(true);
237
- setError(null);
238
- try {
239
- const response = await oxyServices.secureLogin(username, password, deviceName);
240
-
241
- // Create client session object
242
- const clientSession = {
243
- sessionId: response.sessionId,
244
- deviceId: response.deviceId,
245
- expiresAt: response.expiresAt,
246
- lastActive: new Date().toISOString()
247
- };
248
-
249
- // Add to sessions list
250
- const updatedSessions = [...sessions, clientSession];
251
- setSessions(updatedSessions);
252
- await saveSessionsToStorage(updatedSessions);
253
-
254
- // Set as active session
255
- setActiveSessionId(response.sessionId);
256
- await saveActiveSessionId(response.sessionId);
257
-
258
- // Get access token for API calls
259
- await oxyServices.getTokenBySession(response.sessionId);
260
-
261
- // Load full user data
262
- const fullUser = await oxyServices.getUserBySession(response.sessionId);
263
- setUser(fullUser);
264
- setMinimalUser(response.user);
265
- if (onAuthStateChange) {
266
- onAuthStateChange(fullUser);
267
- }
268
- return fullUser;
269
- } catch (error) {
270
- setError(error.message || 'Login failed');
271
- throw error;
272
- } finally {
273
- setIsLoading(false);
274
- }
275
- };
276
-
277
- // Logout method
278
- const logout = async targetSessionId => {
279
- if (!activeSessionId) return;
280
- try {
281
- const sessionToLogout = targetSessionId || activeSessionId;
282
- await oxyServices.logoutSecureSession(activeSessionId, sessionToLogout);
283
-
284
- // Remove session from local storage
285
- const filteredSessions = sessions.filter(s => s.sessionId !== sessionToLogout);
286
- setSessions(filteredSessions);
287
- await saveSessionsToStorage(filteredSessions);
288
-
289
- // If logging out active session
290
- if (sessionToLogout === activeSessionId) {
291
- if (filteredSessions.length > 0) {
292
- // Switch to another session
293
- await switchToSession(filteredSessions[0].sessionId);
294
- } else {
295
- // No sessions left
296
- setActiveSessionId(null);
297
- setUser(null);
298
- setMinimalUser(null);
299
- await storage?.removeItem(keys.activeSessionId);
300
- if (onAuthStateChange) {
301
- onAuthStateChange(null);
302
- }
303
- }
304
- }
305
- } catch (error) {
306
- console.error('Logout error:', error);
307
- setError('Logout failed');
308
- }
309
- };
310
-
311
- // Logout all sessions
312
- const logoutAll = async () => {
313
- if (!activeSessionId) return;
314
- try {
315
- await oxyServices.logoutAllSecureSessions(activeSessionId);
316
-
317
- // Clear all local data
318
- setSessions([]);
319
- setActiveSessionId(null);
320
- setUser(null);
321
- setMinimalUser(null);
322
- await clearAllStorage();
323
- if (onAuthStateChange) {
324
- onAuthStateChange(null);
325
- }
326
- } catch (error) {
327
- console.error('Logout all error:', error);
328
- setError('Logout all failed');
329
- }
330
- };
331
-
332
- // Sign up method (placeholder - you can implement based on your needs)
333
- const signUp = async (username, email, password) => {
334
- // Implement sign up logic similar to secureLogin
335
- throw new Error('Sign up not implemented yet');
336
- };
337
-
338
- // Switch session method
339
- const switchSession = async sessionId => {
340
- await switchToSession(sessionId);
341
- };
342
-
343
- // Remove session method
344
- const removeSession = async sessionId => {
345
- await logout(sessionId);
346
- };
347
-
348
- // Refresh sessions method
349
- const refreshSessions = async () => {
350
- if (!activeSessionId) return;
351
- try {
352
- const serverSessions = await oxyServices.getSessionsBySessionId(activeSessionId);
353
-
354
- // Update local sessions with server data
355
- const updatedSessions = serverSessions.map(serverSession => ({
356
- sessionId: serverSession.sessionId,
357
- deviceId: serverSession.deviceId,
358
- expiresAt: new Date().toISOString(),
359
- // You might want to get this from server
360
- lastActive: new Date().toISOString()
361
- }));
362
- setSessions(updatedSessions);
363
- await saveSessionsToStorage(updatedSessions);
364
- } catch (error) {
365
- console.error('Refresh sessions error:', error);
366
- }
367
- };
368
-
369
- // Context value
370
- const contextValue = {
371
- user,
372
- minimalUser,
373
- sessions,
374
- activeSessionId,
375
- isAuthenticated: !!user,
376
- isLoading,
377
- error,
378
- secureLogin,
379
- logout,
380
- logoutAll,
381
- signUp,
382
- switchSession,
383
- removeSession,
384
- refreshSessions,
385
- oxyServices,
386
- bottomSheetRef,
387
- showBottomSheet: undefined,
388
- // Implement as needed
389
- hideBottomSheet: undefined // Implement as needed
390
- };
391
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(SecureOxyContext.Provider, {
392
- value: contextValue,
393
- children: children
394
- });
395
- };
396
-
397
- // Hook to use the secure context
398
- exports.SecureOxyContextProvider = SecureOxyContextProvider;
399
- const useSecureOxyContext = () => {
400
- const context = (0, _react.useContext)(SecureOxyContext);
401
- if (!context) {
402
- throw new Error('useSecureOxyContext must be used within a SecureOxyContextProvider');
403
- }
404
- return context;
405
- };
406
- exports.useSecureOxyContext = useSecureOxyContext;
407
- var _default = exports.default = SecureOxyContext;
408
- //# sourceMappingURL=SecureOxyContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SecureOxyContext","createContext","WebStorage","getItem","key","localStorage","setItem","value","removeItem","clear","AsyncStorage","isReactNative","navigator","product","getStorage","asyncStorageModule","Promise","resolve","then","error","console","Error","getSecureStorageKeys","prefix","sessions","activeSessionId","SecureOxyContextProvider","children","oxyServices","storageKeyPrefix","onAuthStateChange","bottomSheetRef","user","setUser","useState","minimalUser","setMinimalUser","setSessions","setActiveSessionId","isLoading","setIsLoading","setError","storage","setStorage","keys","useMemo","useEffect","initStorage","platformStorage","initAuth","sessionsData","storedActiveSessionId","log","parsedSessions","JSON","parse","length","activeSession","find","s","sessionId","validation","validateSession","valid","getTokenBySession","fullUser","getUserBySession","id","username","avatar","removeInvalidSession","err","clearAllStorage","useCallback","filteredSessions","filter","saveSessionsToStorage","switchToSession","sessionsList","stringify","saveActiveSessionId","secureLogin","password","deviceName","response","clientSession","deviceId","expiresAt","lastActive","Date","toISOString","updatedSessions","message","logout","targetSessionId","sessionToLogout","logoutSecureSession","logoutAll","logoutAllSecureSessions","signUp","email","switchSession","removeSession","refreshSessions","serverSessions","getSessionsBySessionId","map","serverSession","contextValue","isAuthenticated","showBottomSheet","undefined","hideBottomSheet","jsx","Provider","exports","useSecureOxyContext","context","useContext","_default"],"sourceRoot":"../../../../src","sources":["ui/context/SecureOxyContext.tsx"],"mappings":"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","ignoreList":[]}