@oxyhq/services 5.15.6 → 5.15.9

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 (30) hide show
  1. package/lib/commonjs/crypto/keyManager.js +11 -11
  2. package/lib/commonjs/crypto/keyManager.js.map +1 -1
  3. package/lib/commonjs/crypto/polyfill.js +48 -1
  4. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  5. package/lib/commonjs/ui/components/TextField.js.map +1 -1
  6. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  7. package/lib/commonjs/ui/screens/OxyAuthScreen.js +168 -76
  8. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  9. package/lib/module/crypto/keyManager.js +11 -11
  10. package/lib/module/crypto/keyManager.js.map +1 -1
  11. package/lib/module/crypto/polyfill.js +48 -1
  12. package/lib/module/crypto/polyfill.js.map +1 -1
  13. package/lib/module/ui/components/TextField.js.map +1 -1
  14. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  15. package/lib/module/ui/screens/OxyAuthScreen.js +169 -77
  16. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  17. package/lib/typescript/core/OxyServices.d.ts +1 -1
  18. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  19. package/lib/typescript/crypto/polyfill.d.ts +4 -0
  20. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  21. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -0
  22. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  23. package/package.json +1 -2
  24. package/src/crypto/keyManager.ts +11 -11
  25. package/src/crypto/polyfill.ts +53 -1
  26. package/src/ui/components/TextField.tsx +2 -2
  27. package/src/ui/screens/AccountSettingsScreen.tsx +1 -1
  28. package/src/ui/screens/OxyAuthScreen.tsx +184 -68
  29. package/lib/typescript/types/expo-random.d.ts +0 -9
  30. package/src/types/expo-random.d.ts +0 -9
@@ -8,24 +8,29 @@
8
8
  * 1. Scan QR code with Oxy Accounts app
9
9
  * 2. Open Oxy Accounts app directly (via deep link)
10
10
  *
11
+ * Uses WebSocket for real-time authorization updates (with polling fallback).
11
12
  * The Oxy Accounts app is where users manage their cryptographic identity.
12
13
  * This screen should NOT be used within the Accounts app itself.
13
14
  */
14
15
 
15
16
  import { useState, useEffect, useCallback, useRef } from 'react';
16
17
  import { View, Text, TouchableOpacity, StyleSheet, Linking, Platform, ActivityIndicator } from 'react-native';
18
+ import io from 'socket.io-client';
17
19
  import { useThemeColors } from '../styles';
18
20
  import { useOxy } from '../context/OxyContext';
19
21
  import QRCode from 'react-native-qrcode-svg';
20
22
  import OxyLogo from '../components/OxyLogo';
21
23
 
22
24
  // Deep link scheme for Oxy Accounts app
23
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
24
26
  const OXY_ACCOUNTS_SCHEME = 'oxyaccounts://';
25
27
  const OXY_ACCOUNTS_WEB_URL = 'https://accounts.oxy.so';
26
28
 
27
29
  // Auth session expiration (5 minutes)
28
30
  const AUTH_SESSION_EXPIRY_MS = 5 * 60 * 1000;
31
+
32
+ // Polling interval (fallback if socket fails)
33
+ const POLLING_INTERVAL_MS = 3000;
29
34
  const OxyAuthScreen = ({
30
35
  navigate,
31
36
  goBack,
@@ -41,20 +46,139 @@ const OxyAuthScreen = ({
41
46
  const [authSession, setAuthSession] = useState(null);
42
47
  const [isLoading, setIsLoading] = useState(true);
43
48
  const [error, setError] = useState(null);
44
- const [isPolling, setIsPolling] = useState(false);
49
+ const [isWaiting, setIsWaiting] = useState(false);
50
+ const [connectionType, setConnectionType] = useState('socket');
51
+ const socketRef = useRef(null);
45
52
  const pollingIntervalRef = useRef(null);
53
+ const isProcessingRef = useRef(false);
54
+
55
+ // Handle successful authorization
56
+ const handleAuthSuccess = useCallback(async sessionId => {
57
+ if (isProcessingRef.current) return;
58
+ isProcessingRef.current = true;
59
+ try {
60
+ // Get token and user data
61
+ await oxyServices.getTokenBySession(sessionId);
62
+ const user = await oxyServices.getUserBySession(sessionId);
63
+ if (onAuthenticated) {
64
+ onAuthenticated(user);
65
+ }
66
+ } catch (err) {
67
+ if (__DEV__) {
68
+ console.error('Error completing auth:', err);
69
+ }
70
+ setError('Authorization successful but failed to complete sign in. Please try again.');
71
+ isProcessingRef.current = false;
72
+ }
73
+ }, [oxyServices, onAuthenticated]);
74
+
75
+ // Connect to socket for real-time updates
76
+ const connectSocket = useCallback(sessionToken => {
77
+ const baseURL = oxyServices.getBaseURL();
78
+
79
+ // Connect to the auth-session namespace (no authentication required)
80
+ const socket = io(`${baseURL}/auth-session`, {
81
+ transports: ['websocket', 'polling'],
82
+ reconnection: true,
83
+ reconnectionAttempts: 3,
84
+ reconnectionDelay: 1000
85
+ });
86
+ socketRef.current = socket;
87
+ socket.on('connect', () => {
88
+ if (__DEV__) {
89
+ console.log('Auth socket connected');
90
+ }
91
+ // Join the room for this session token
92
+ socket.emit('join', sessionToken);
93
+ setConnectionType('socket');
94
+ });
95
+ socket.on('joined', () => {
96
+ if (__DEV__) {
97
+ console.log('Joined auth session room');
98
+ }
99
+ });
100
+ socket.on('auth_update', payload => {
101
+ if (__DEV__) {
102
+ console.log('Auth update received:', payload);
103
+ }
104
+ if (payload.status === 'authorized' && payload.sessionId) {
105
+ cleanup();
106
+ handleAuthSuccess(payload.sessionId);
107
+ } else if (payload.status === 'cancelled') {
108
+ cleanup();
109
+ setError('Authorization was denied.');
110
+ } else if (payload.status === 'expired') {
111
+ cleanup();
112
+ setError('Session expired. Please try again.');
113
+ }
114
+ });
115
+ socket.on('connect_error', err => {
116
+ if (__DEV__) {
117
+ console.log('Socket connection error, falling back to polling:', err.message);
118
+ }
119
+ // Fall back to polling if socket fails
120
+ socket.disconnect();
121
+ startPolling(sessionToken);
122
+ });
123
+ socket.on('disconnect', () => {
124
+ if (__DEV__) {
125
+ console.log('Auth socket disconnected');
126
+ }
127
+ });
128
+ }, [oxyServices, handleAuthSuccess]);
129
+
130
+ // Start polling for authorization (fallback)
131
+ const startPolling = useCallback(sessionToken => {
132
+ setConnectionType('polling');
133
+ pollingIntervalRef.current = setInterval(async () => {
134
+ if (isProcessingRef.current) return;
135
+ try {
136
+ const response = await oxyServices.makeRequest('GET', `/api/auth/session/status/${sessionToken}`, undefined, {
137
+ cache: false
138
+ });
139
+ if (response.authorized && response.sessionId) {
140
+ cleanup();
141
+ handleAuthSuccess(response.sessionId);
142
+ } else if (response.status === 'cancelled') {
143
+ cleanup();
144
+ setError('Authorization was denied.');
145
+ } else if (response.status === 'expired') {
146
+ cleanup();
147
+ setError('Session expired. Please try again.');
148
+ }
149
+ } catch (err) {
150
+ // Silent fail for polling - will retry
151
+ if (__DEV__) {
152
+ console.log('Auth polling error:', err);
153
+ }
154
+ }
155
+ }, POLLING_INTERVAL_MS);
156
+ }, [oxyServices, handleAuthSuccess]);
157
+
158
+ // Cleanup socket and polling
159
+ const cleanup = useCallback(() => {
160
+ setIsWaiting(false);
161
+ if (socketRef.current) {
162
+ socketRef.current.disconnect();
163
+ socketRef.current = null;
164
+ }
165
+ if (pollingIntervalRef.current) {
166
+ clearInterval(pollingIntervalRef.current);
167
+ pollingIntervalRef.current = null;
168
+ }
169
+ }, []);
46
170
 
47
171
  // Generate a new auth session
48
172
  const generateAuthSession = useCallback(async () => {
49
173
  setIsLoading(true);
50
174
  setError(null);
175
+ isProcessingRef.current = false;
51
176
  try {
52
177
  // Generate a unique session token for this auth request
53
178
  const sessionToken = generateSessionToken();
54
179
  const expiresAt = Date.now() + AUTH_SESSION_EXPIRY_MS;
55
180
 
56
181
  // Register the auth session with the server
57
- // The server will associate this token with the user when they authorize in Accounts
58
182
  await oxyServices.makeRequest('POST', '/api/auth/session/create', {
59
183
  sessionToken,
60
184
  expiresAt,
@@ -66,13 +190,16 @@ const OxyAuthScreen = ({
66
190
  sessionToken,
67
191
  expiresAt
68
192
  });
69
- startPolling(sessionToken);
193
+ setIsWaiting(true);
194
+
195
+ // Try socket first, will fall back to polling if needed
196
+ connectSocket(sessionToken);
70
197
  } catch (err) {
71
198
  setError(err.message || 'Failed to create auth session');
72
199
  } finally {
73
200
  setIsLoading(false);
74
201
  }
75
- }, [oxyServices]);
202
+ }, [oxyServices, connectSocket]);
76
203
 
77
204
  // Generate a random session token
78
205
  const generateSessionToken = () => {
@@ -84,49 +211,12 @@ const OxyAuthScreen = ({
84
211
  return result;
85
212
  };
86
213
 
87
- // Start polling for authorization
88
- const startPolling = useCallback(sessionToken => {
89
- setIsPolling(true);
90
- pollingIntervalRef.current = setInterval(async () => {
91
- try {
92
- const response = await oxyServices.makeRequest('GET', `/api/auth/session/status/${sessionToken}`, undefined, {
93
- cache: false
94
- });
95
- if (response.authorized && response.sessionId) {
96
- // Authorization successful!
97
- stopPolling();
98
-
99
- // Get token and user data
100
- await oxyServices.getTokenBySession(response.sessionId);
101
- const user = await oxyServices.getUserBySession(response.sessionId);
102
- if (onAuthenticated) {
103
- onAuthenticated(user);
104
- }
105
- }
106
- } catch (err) {
107
- // Silent fail for polling - will retry
108
- if (__DEV__) {
109
- console.log('Auth polling error:', err);
110
- }
111
- }
112
- }, 2000); // Poll every 2 seconds
113
- }, [oxyServices, onAuthenticated]);
114
-
115
- // Stop polling
116
- const stopPolling = useCallback(() => {
117
- setIsPolling(false);
118
- if (pollingIntervalRef.current) {
119
- clearInterval(pollingIntervalRef.current);
120
- pollingIntervalRef.current = null;
121
- }
122
- }, []);
123
-
124
214
  // Clean up on unmount
125
215
  useEffect(() => {
126
216
  return () => {
127
- stopPolling();
217
+ cleanup();
128
218
  };
129
- }, [stopPolling]);
219
+ }, [cleanup]);
130
220
 
131
221
  // Initialize auth session
132
222
  useEffect(() => {
@@ -136,11 +226,11 @@ const OxyAuthScreen = ({
136
226
  // Check if session expired
137
227
  useEffect(() => {
138
228
  if (authSession && Date.now() > authSession.expiresAt) {
139
- stopPolling();
229
+ cleanup();
140
230
  setAuthSession(null);
141
231
  setError('Session expired. Please try again.');
142
232
  }
143
- }, [authSession, stopPolling]);
233
+ }, [authSession, cleanup]);
144
234
 
145
235
  // Build the QR code data
146
236
  const getQRData = () => {
@@ -175,9 +265,9 @@ const OxyAuthScreen = ({
175
265
 
176
266
  // Refresh session
177
267
  const handleRefresh = useCallback(() => {
178
- stopPolling();
268
+ cleanup();
179
269
  generateAuthSession();
180
- }, [generateAuthSession, stopPolling]);
270
+ }, [generateAuthSession, cleanup]);
181
271
  if (isLoading) {
182
272
  return /*#__PURE__*/_jsxs(View, {
183
273
  style: [styles.container, {
@@ -255,37 +345,39 @@ const OxyAuthScreen = ({
255
345
  }],
256
346
  children: "Scan with Oxy Accounts app"
257
347
  })]
258
- }), /*#__PURE__*/_jsxs(View, {
259
- style: styles.dividerContainer,
260
- children: [/*#__PURE__*/_jsx(View, {
261
- style: [styles.divider, {
262
- backgroundColor: colors.border
263
- }]
264
- }), /*#__PURE__*/_jsx(Text, {
265
- style: [styles.dividerText, {
266
- color: colors.secondaryText
348
+ }), Platform.OS !== 'web' && /*#__PURE__*/_jsxs(_Fragment, {
349
+ children: [/*#__PURE__*/_jsxs(View, {
350
+ style: styles.dividerContainer,
351
+ children: [/*#__PURE__*/_jsx(View, {
352
+ style: [styles.divider, {
353
+ backgroundColor: colors.border
354
+ }]
355
+ }), /*#__PURE__*/_jsx(Text, {
356
+ style: [styles.dividerText, {
357
+ color: colors.secondaryText
358
+ }],
359
+ children: "or"
360
+ }), /*#__PURE__*/_jsx(View, {
361
+ style: [styles.divider, {
362
+ backgroundColor: colors.border
363
+ }]
364
+ })]
365
+ }), /*#__PURE__*/_jsxs(TouchableOpacity, {
366
+ style: [styles.button, {
367
+ backgroundColor: colors.primary
267
368
  }],
268
- children: "or"
269
- }), /*#__PURE__*/_jsx(View, {
270
- style: [styles.divider, {
271
- backgroundColor: colors.border
272
- }]
273
- })]
274
- }), /*#__PURE__*/_jsxs(TouchableOpacity, {
275
- style: [styles.button, {
276
- backgroundColor: colors.primary
277
- }],
278
- onPress: handleOpenAccounts,
279
- children: [/*#__PURE__*/_jsx(OxyLogo, {
280
- width: 20,
281
- height: 20,
282
- fillColor: "white",
283
- style: styles.buttonIcon
284
- }), /*#__PURE__*/_jsx(Text, {
285
- style: styles.buttonText,
286
- children: "Open Oxy Accounts"
369
+ onPress: handleOpenAccounts,
370
+ children: [/*#__PURE__*/_jsx(OxyLogo, {
371
+ width: 20,
372
+ height: 20,
373
+ fillColor: "white",
374
+ style: styles.buttonIcon
375
+ }), /*#__PURE__*/_jsx(Text, {
376
+ style: styles.buttonText,
377
+ children: "Open Oxy Accounts"
378
+ })]
287
379
  })]
288
- }), isPolling && /*#__PURE__*/_jsxs(View, {
380
+ }), isWaiting && /*#__PURE__*/_jsxs(View, {
289
381
  style: styles.statusContainer,
290
382
  children: [/*#__PURE__*/_jsx(ActivityIndicator, {
291
383
  size: "small",
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useCallback","useRef","View","Text","TouchableOpacity","StyleSheet","Linking","Platform","ActivityIndicator","useThemeColors","useOxy","QRCode","OxyLogo","jsx","_jsx","jsxs","_jsxs","OXY_ACCOUNTS_SCHEME","OXY_ACCOUNTS_WEB_URL","AUTH_SESSION_EXPIRY_MS","OxyAuthScreen","navigate","goBack","onAuthenticated","theme","themeValue","colors","oxyServices","signIn","authSession","setAuthSession","isLoading","setIsLoading","error","setError","isPolling","setIsPolling","pollingIntervalRef","generateAuthSession","sessionToken","generateSessionToken","expiresAt","Date","now","makeRequest","appId","OS","cache","startPolling","err","message","chars","result","i","charAt","Math","floor","random","length","current","setInterval","response","undefined","authorized","sessionId","stopPolling","getTokenBySession","user","getUserBySession","__DEV__","console","log","clearInterval","getQRData","handleOpenAccounts","deepLinkUrl","webUrl","canOpen","canOpenURL","openURL","handleRefresh","style","styles","container","backgroundColor","background","children","size","color","primary","loadingText","secondaryText","errorText","button","onPress","buttonText","header","width","height","title","text","subtitle","qrContainer","inputBackground","borderColor","border","qrWrapper","value","qrHint","dividerContainer","divider","dividerText","fillColor","buttonIcon","statusContainer","statusText","footer","footerText","footerLink","cancelButton","cancelText","create","flex","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","borderRadius","borderWidth","flexDirection","marginVertical","marginHorizontal","paddingVertical","paddingHorizontal","marginRight","marginLeft"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAChE,SACEC,IAAI,EACJC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,OAAO,EACPC,QAAQ,EACRC,iBAAiB,QACZ,cAAc;AAErB,SAASC,cAAc,QAAQ,WAAW;AAC1C,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,OAAOC,MAAM,MAAM,yBAAyB;AAC5C,OAAOC,OAAO,MAAM,uBAAuB;;AAE3C;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,MAAMC,mBAAmB,GAAG,gBAAgB;AAC5C,MAAMC,oBAAoB,GAAG,yBAAyB;;AAEtD;AACA,MAAMC,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;AAO5C,MAAMC,aAAwC,GAAGA,CAAC;EAChDC,QAAQ;EACRC,MAAM;EACNC,eAAe;EACfC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAID,KAAK,KAAK,OAAO,IAAIA,KAAK,KAAK,MAAM,GAAIA,KAAK,GAAG,OAAO;EAC5E,MAAME,MAAM,GAAGjB,cAAc,CAACgB,UAAU,CAAC;EACzC,MAAM;IAAEE,WAAW;IAAEC;EAAO,CAAC,GAAGlB,MAAM,CAAC,CAAC;EAExC,MAAM,CAACmB,WAAW,EAAEC,cAAc,CAAC,GAAGhC,QAAQ,CAAqB,IAAI,CAAC;EACxE,MAAM,CAACiC,SAAS,EAAEC,YAAY,CAAC,GAAGlC,QAAQ,CAAC,IAAI,CAAC;EAChD,MAAM,CAACmC,KAAK,EAAEC,QAAQ,CAAC,GAAGpC,QAAQ,CAAgB,IAAI,CAAC;EACvD,MAAM,CAACqC,SAAS,EAAEC,YAAY,CAAC,GAAGtC,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMuC,kBAAkB,GAAGpC,MAAM,CAAwC,IAAI,CAAC;;EAE9E;EACA,MAAMqC,mBAAmB,GAAGtC,WAAW,CAAC,YAAY;IAClDgC,YAAY,CAAC,IAAI,CAAC;IAClBE,QAAQ,CAAC,IAAI,CAAC;IAEd,IAAI;MACF;MACA,MAAMK,YAAY,GAAGC,oBAAoB,CAAC,CAAC;MAC3C,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGxB,sBAAsB;;MAErD;MACA;MACA,MAAMQ,WAAW,CAACiB,WAAW,CAAC,MAAM,EAAE,0BAA0B,EAAE;QAChEL,YAAY;QACZE,SAAS;QACTI,KAAK,EAAEtC,QAAQ,CAACuC,EAAE,CAAE;MACtB,CAAC,EAAE;QAAEC,KAAK,EAAE;MAAM,CAAC,CAAC;MAEpBjB,cAAc,CAAC;QAAES,YAAY;QAAEE;MAAU,CAAC,CAAC;MAC3CO,YAAY,CAACT,YAAY,CAAC;IAC5B,CAAC,CAAC,OAAOU,GAAQ,EAAE;MACjBf,QAAQ,CAACe,GAAG,CAACC,OAAO,IAAI,+BAA+B,CAAC;IAC1D,CAAC,SAAS;MACRlB,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CAACL,WAAW,CAAC,CAAC;;EAEjB;EACA,MAAMa,oBAAoB,GAAGA,CAAA,KAAc;IACzC,MAAMW,KAAK,GAAG,gEAAgE;IAC9E,IAAIC,MAAM,GAAG,EAAE;IACf,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC3BD,MAAM,IAAID,KAAK,CAACG,MAAM,CAACC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGN,KAAK,CAACO,MAAM,CAAC,CAAC;IAClE;IACA,OAAON,MAAM;EACf,CAAC;;EAED;EACA,MAAMJ,YAAY,GAAGhD,WAAW,CAAEuC,YAAoB,IAAK;IACzDH,YAAY,CAAC,IAAI,CAAC;IAElBC,kBAAkB,CAACsB,OAAO,GAAGC,WAAW,CAAC,YAAY;MACnD,IAAI;QACF,MAAMC,QAAQ,GAAG,MAAMlC,WAAW,CAACiB,WAAW,CAI3C,KAAK,EAAE,4BAA4BL,YAAY,EAAE,EAAEuB,SAAS,EAAE;UAAEf,KAAK,EAAE;QAAM,CAAC,CAAC;QAElF,IAAIc,QAAQ,CAACE,UAAU,IAAIF,QAAQ,CAACG,SAAS,EAAE;UAC7C;UACAC,WAAW,CAAC,CAAC;;UAEb;UACA,MAAMtC,WAAW,CAACuC,iBAAiB,CAACL,QAAQ,CAACG,SAAS,CAAC;UACvD,MAAMG,IAAI,GAAG,MAAMxC,WAAW,CAACyC,gBAAgB,CAACP,QAAQ,CAACG,SAAS,CAAC;UAEnE,IAAIzC,eAAe,EAAE;YACnBA,eAAe,CAAC4C,IAAI,CAAC;UACvB;QACF;MACF,CAAC,CAAC,OAAOlB,GAAG,EAAE;QACZ;QACA,IAAIoB,OAAO,EAAE;UACXC,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAEtB,GAAG,CAAC;QACzC;MACF;IACF,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EACZ,CAAC,EAAE,CAACtB,WAAW,EAAEJ,eAAe,CAAC,CAAC;;EAElC;EACA,MAAM0C,WAAW,GAAGjE,WAAW,CAAC,MAAM;IACpCoC,YAAY,CAAC,KAAK,CAAC;IACnB,IAAIC,kBAAkB,CAACsB,OAAO,EAAE;MAC9Ba,aAAa,CAACnC,kBAAkB,CAACsB,OAAO,CAAC;MACzCtB,kBAAkB,CAACsB,OAAO,GAAG,IAAI;IACnC;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA5D,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXkE,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;;EAEjB;EACAlE,SAAS,CAAC,MAAM;IACduC,mBAAmB,CAAC,CAAC;EACvB,CAAC,EAAE,EAAE,CAAC;;EAEN;EACAvC,SAAS,CAAC,MAAM;IACd,IAAI8B,WAAW,IAAIa,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGd,WAAW,CAACY,SAAS,EAAE;MACrDwB,WAAW,CAAC,CAAC;MACbnC,cAAc,CAAC,IAAI,CAAC;MACpBI,QAAQ,CAAC,oCAAoC,CAAC;IAChD;EACF,CAAC,EAAE,CAACL,WAAW,EAAEoC,WAAW,CAAC,CAAC;;EAE9B;EACA,MAAMQ,SAAS,GAAGA,CAAA,KAAc;IAC9B,IAAI,CAAC5C,WAAW,EAAE,OAAO,EAAE;;IAE3B;IACA,OAAO,aAAaA,WAAW,CAACU,YAAY,EAAE;EAChD,CAAC;;EAED;EACA,MAAMmC,kBAAkB,GAAG1E,WAAW,CAAC,YAAY;IACjD,IAAI,CAAC6B,WAAW,EAAE;IAElB,MAAM8C,WAAW,GAAG,GAAG1D,mBAAmB,mBAAmBY,WAAW,CAACU,YAAY,EAAE;IACvF,MAAMqC,MAAM,GAAG,GAAG1D,oBAAoB,oBAAoBW,WAAW,CAACU,YAAY,EAAE;IAEpF,IAAI;MACF,MAAMsC,OAAO,GAAG,MAAMvE,OAAO,CAACwE,UAAU,CAACH,WAAW,CAAC;MAErD,IAAIE,OAAO,EAAE;QACX,MAAMvE,OAAO,CAACyE,OAAO,CAACJ,WAAW,CAAC;MACpC,CAAC,MAAM;QACL;QACA,MAAMrE,OAAO,CAACyE,OAAO,CAACH,MAAM,CAAC;MAC/B;IACF,CAAC,CAAC,OAAO3B,GAAG,EAAE;MACZ;MACA,IAAI;QACF,MAAM3C,OAAO,CAACyE,OAAO,CAACH,MAAM,CAAC;MAC/B,CAAC,CAAC,MAAM;QACN1C,QAAQ,CAAC,qEAAqE,CAAC;MACjF;IACF;EACF,CAAC,EAAE,CAACL,WAAW,CAAC,CAAC;;EAEjB;EACA,MAAMmD,aAAa,GAAGhF,WAAW,CAAC,MAAM;IACtCiE,WAAW,CAAC,CAAC;IACb3B,mBAAmB,CAAC,CAAC;EACvB,CAAC,EAAE,CAACA,mBAAmB,EAAE2B,WAAW,CAAC,CAAC;EAEtC,IAAIlC,SAAS,EAAE;IACb,oBACEf,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;QAAEC,eAAe,EAAE1D,MAAM,CAAC2D;MAAW,CAAC,CAAE;MAAAC,QAAA,gBACtExE,IAAA,CAACN,iBAAiB;QAAC+E,IAAI,EAAC,OAAO;QAACC,KAAK,EAAE9D,MAAM,CAAC+D;MAAQ,CAAE,CAAC,eACzD3E,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACQ,WAAW,EAAE;UAAEF,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAEpE,CAAM,CAAC;IAAA,CACH,CAAC;EAEX;EAEA,IAAIrD,KAAK,EAAE;IACT,oBACEjB,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;QAAEC,eAAe,EAAE1D,MAAM,CAAC2D;MAAW,CAAC,CAAE;MAAAC,QAAA,gBACtExE,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACU,SAAS,EAAE;UAAEJ,KAAK,EAAE9D,MAAM,CAACO;QAAM,CAAC,CAAE;QAAAqD,QAAA,EAAErD;MAAK,CAAO,CAAC,eACxEnB,IAAA,CAACV,gBAAgB;QACf6E,KAAK,EAAE,CAACC,MAAM,CAACW,MAAM,EAAE;UAAET,eAAe,EAAE1D,MAAM,CAAC+D;QAAQ,CAAC,CAAE;QAC5DK,OAAO,EAAEd,aAAc;QAAAM,QAAA,eAEvBxE,IAAA,CAACX,IAAI;UAAC8E,KAAK,EAAEC,MAAM,CAACa,UAAW;UAAAT,QAAA,EAAC;QAAS,CAAM;MAAC,CAChC,CAAC;IAAA,CACf,CAAC;EAEX;EAEA,oBACEtE,KAAA,CAACd,IAAI;IAAC+E,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAE1D,MAAM,CAAC2D;IAAW,CAAC,CAAE;IAAAC,QAAA,gBAEtEtE,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAEC,MAAM,CAACc,MAAO;MAAAV,QAAA,gBACzBxE,IAAA,CAACF,OAAO;QAACqF,KAAK,EAAE,EAAG;QAACC,MAAM,EAAE;MAAG,CAAE,CAAC,eAClCpF,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACiB,KAAK,EAAE;UAAEX,KAAK,EAAE9D,MAAM,CAAC0E;QAAK,CAAC,CAAE;QAAAd,QAAA,EAAC;MAAgB,CAAM,CAAC,eAC5ExE,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACmB,QAAQ,EAAE;UAAEb,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAEjE,CAAM,CAAC;IAAA,CACH,CAAC,eAGPtE,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAE,CAACC,MAAM,CAACoB,WAAW,EAAE;QAAElB,eAAe,EAAE1D,MAAM,CAAC6E,eAAe;QAAEC,WAAW,EAAE9E,MAAM,CAAC+E;MAAO,CAAC,CAAE;MAAAnB,QAAA,gBACzGxE,IAAA,CAACZ,IAAI;QAAC+E,KAAK,EAAEC,MAAM,CAACwB,SAAU;QAAApB,QAAA,eAC5BxE,IAAA,CAACH,MAAM;UACLgG,KAAK,EAAElC,SAAS,CAAC,CAAE;UACnBc,IAAI,EAAE,GAAI;UACVH,eAAe,EAAC,OAAO;UACvBI,KAAK,EAAC;QAAO,CACd;MAAC,CACE,CAAC,eACP1E,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAAC0B,MAAM,EAAE;UAAEpB,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAE/D,CAAM,CAAC;IAAA,CACH,CAAC,eAGPtE,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAEC,MAAM,CAAC2B,gBAAiB;MAAAvB,QAAA,gBACnCxE,IAAA,CAACZ,IAAI;QAAC+E,KAAK,EAAE,CAACC,MAAM,CAAC4B,OAAO,EAAE;UAAE1B,eAAe,EAAE1D,MAAM,CAAC+E;QAAO,CAAC;MAAE,CAAE,CAAC,eACrE3F,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAAC6B,WAAW,EAAE;UAAEvB,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAAE,CAAM,CAAC,eAC7ExE,IAAA,CAACZ,IAAI;QAAC+E,KAAK,EAAE,CAACC,MAAM,CAAC4B,OAAO,EAAE;UAAE1B,eAAe,EAAE1D,MAAM,CAAC+E;QAAO,CAAC;MAAE,CAAE,CAAC;IAAA,CACjE,CAAC,eAGPzF,KAAA,CAACZ,gBAAgB;MACf6E,KAAK,EAAE,CAACC,MAAM,CAACW,MAAM,EAAE;QAAET,eAAe,EAAE1D,MAAM,CAAC+D;MAAQ,CAAC,CAAE;MAC5DK,OAAO,EAAEpB,kBAAmB;MAAAY,QAAA,gBAE5BxE,IAAA,CAACF,OAAO;QAACqF,KAAK,EAAE,EAAG;QAACC,MAAM,EAAE,EAAG;QAACc,SAAS,EAAC,OAAO;QAAC/B,KAAK,EAAEC,MAAM,CAAC+B;MAAW,CAAE,CAAC,eAC9EnG,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAEC,MAAM,CAACa,UAAW;QAAAT,QAAA,EAAC;MAAiB,CAAM,CAAC;IAAA,CACxC,CAAC,EAGlBnD,SAAS,iBACRnB,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAEC,MAAM,CAACgC,eAAgB;MAAA5B,QAAA,gBAClCxE,IAAA,CAACN,iBAAiB;QAAC+E,IAAI,EAAC,OAAO;QAACC,KAAK,EAAE9D,MAAM,CAAC+D;MAAQ,CAAE,CAAC,eACzD3E,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACiC,UAAU,EAAE;UAAE3B,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAEnE,CAAM,CAAC;IAAA,CACH,CACP,eAGDtE,KAAA,CAACd,IAAI;MAAC+E,KAAK,EAAEC,MAAM,CAACkC,MAAO;MAAA9B,QAAA,gBACzBtE,KAAA,CAACb,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACmC,UAAU,EAAE;UAAE7B,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,GAAC,0BACzC,EAAC,GAAG;MAAA,CACxB,CAAC,eACPxE,IAAA,CAACV,gBAAgB;QAAC0F,OAAO,EAAEA,CAAA,KAAMxF,OAAO,CAACyE,OAAO,CAAC7D,oBAAoB,CAAE;QAAAoE,QAAA,eACrExE,IAAA,CAACX,IAAI;UAAC8E,KAAK,EAAE,CAACC,MAAM,CAACoC,UAAU,EAAE;YAAE9B,KAAK,EAAE9D,MAAM,CAAC+D;UAAQ,CAAC,CAAE;UAAAH,QAAA,EAAC;QAE7D,CAAM;MAAC,CACS,CAAC;IAAA,CACf,CAAC,EAGNhE,MAAM,iBACLR,IAAA,CAACV,gBAAgB;MAAC6E,KAAK,EAAEC,MAAM,CAACqC,YAAa;MAACzB,OAAO,EAAExE,MAAO;MAAAgE,QAAA,eAC5DxE,IAAA,CAACX,IAAI;QAAC8E,KAAK,EAAE,CAACC,MAAM,CAACsC,UAAU,EAAE;UAAEhC,KAAK,EAAE9D,MAAM,CAACiE;QAAc,CAAC,CAAE;QAAAL,QAAA,EAAC;MAAM,CAAM;IAAC,CAChE,CACnB;EAAA,CACG,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAG7E,UAAU,CAACoH,MAAM,CAAC;EAC/BtC,SAAS,EAAE;IACTuC,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE,EAAE;IACXC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACD7B,MAAM,EAAE;IACN4B,UAAU,EAAE,QAAQ;IACpBE,YAAY,EAAE;EAChB,CAAC;EACD3B,KAAK,EAAE;IACL4B,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,SAAS,EAAE;EACb,CAAC;EACD5B,QAAQ,EAAE;IACR0B,QAAQ,EAAE,EAAE;IACZE,SAAS,EAAE,CAAC;IACZC,SAAS,EAAE;EACb,CAAC;EACD5B,WAAW,EAAE;IACXqB,OAAO,EAAE,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdR,UAAU,EAAE;EACd,CAAC;EACDlB,SAAS,EAAE;IACTiB,OAAO,EAAE,EAAE;IACXvC,eAAe,EAAE,OAAO;IACxB+C,YAAY,EAAE;EAChB,CAAC;EACDvB,MAAM,EAAE;IACNqB,SAAS,EAAE,EAAE;IACbF,QAAQ,EAAE;EACZ,CAAC;EACDlB,gBAAgB,EAAE;IAChBwB,aAAa,EAAE,KAAK;IACpBT,UAAU,EAAE,QAAQ;IACpBU,cAAc,EAAE,EAAE;IAClBrC,KAAK,EAAE;EACT,CAAC;EACDa,OAAO,EAAE;IACPY,IAAI,EAAE,CAAC;IACPxB,MAAM,EAAE;EACV,CAAC;EACDa,WAAW,EAAE;IACXwB,gBAAgB,EAAE,EAAE;IACpBR,QAAQ,EAAE;EACZ,CAAC;EACDlC,MAAM,EAAE;IACNwC,aAAa,EAAE,KAAK;IACpBT,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBW,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBN,YAAY,EAAE,EAAE;IAChBlC,KAAK,EAAE;EACT,CAAC;EACDgB,UAAU,EAAE;IACVyB,WAAW,EAAE;EACf,CAAC;EACD3C,UAAU,EAAE;IACVP,KAAK,EAAE,OAAO;IACduC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDd,eAAe,EAAE;IACfmB,aAAa,EAAE,KAAK;IACpBT,UAAU,EAAE,QAAQ;IACpBK,SAAS,EAAE;EACb,CAAC;EACDd,UAAU,EAAE;IACVwB,UAAU,EAAE,CAAC;IACbZ,QAAQ,EAAE;EACZ,CAAC;EACDX,MAAM,EAAE;IACNiB,aAAa,EAAE,KAAK;IACpBJ,SAAS,EAAE;EACb,CAAC;EACDZ,UAAU,EAAE;IACVU,QAAQ,EAAE;EACZ,CAAC;EACDT,UAAU,EAAE;IACVS,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDT,YAAY,EAAE;IACZU,SAAS,EAAE,EAAE;IACbN,OAAO,EAAE;EACX,CAAC;EACDH,UAAU,EAAE;IACVO,QAAQ,EAAE;EACZ,CAAC;EACDrC,WAAW,EAAE;IACXuC,SAAS,EAAE,EAAE;IACbF,QAAQ,EAAE;EACZ,CAAC;EACDnC,SAAS,EAAE;IACTmC,QAAQ,EAAE,EAAE;IACZG,SAAS,EAAE,QAAQ;IACnBJ,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAe1G,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["useState","useEffect","useCallback","useRef","View","Text","TouchableOpacity","StyleSheet","Linking","Platform","ActivityIndicator","io","useThemeColors","useOxy","QRCode","OxyLogo","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","OXY_ACCOUNTS_SCHEME","OXY_ACCOUNTS_WEB_URL","AUTH_SESSION_EXPIRY_MS","POLLING_INTERVAL_MS","OxyAuthScreen","navigate","goBack","onAuthenticated","theme","themeValue","colors","oxyServices","signIn","authSession","setAuthSession","isLoading","setIsLoading","error","setError","isWaiting","setIsWaiting","connectionType","setConnectionType","socketRef","pollingIntervalRef","isProcessingRef","handleAuthSuccess","sessionId","current","getTokenBySession","user","getUserBySession","err","__DEV__","console","connectSocket","sessionToken","baseURL","getBaseURL","socket","transports","reconnection","reconnectionAttempts","reconnectionDelay","on","log","emit","payload","status","cleanup","message","disconnect","startPolling","setInterval","response","makeRequest","undefined","cache","authorized","clearInterval","generateAuthSession","generateSessionToken","expiresAt","Date","now","appId","OS","chars","result","i","charAt","Math","floor","random","length","getQRData","handleOpenAccounts","deepLinkUrl","webUrl","canOpen","canOpenURL","openURL","handleRefresh","style","styles","container","backgroundColor","background","children","size","color","primary","loadingText","secondaryText","errorText","button","onPress","buttonText","header","width","height","title","text","subtitle","qrContainer","inputBackground","borderColor","border","qrWrapper","value","qrHint","dividerContainer","divider","dividerText","fillColor","buttonIcon","statusContainer","statusText","footer","footerText","footerLink","cancelButton","cancelText","create","flex","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","borderRadius","borderWidth","flexDirection","marginVertical","marginHorizontal","paddingVertical","paddingHorizontal","marginRight","marginLeft"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -105,7 +105,7 @@ export declare const OXY_CLOUD_URL = "https://cloud.oxy.so";
105
105
  /**
106
106
  * Export the default Oxy API URL (for documentation)
107
107
  */
108
- export declare const OXY_API_URL: string;
108
+ export declare const OXY_API_URL: any;
109
109
  /**
110
110
  * Pre-configured client instance for easy import
111
111
  * Uses OXY_API_URL as baseURL and OXY_CLOUD_URL as cloudURL
@@ -1 +1 @@
1
- {"version":3,"file":"OxyServices.d.ts","sourceRoot":"","sources":["../../../src/core/OxyServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,QAAA,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAwB,CAAC;AAGxF,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,MAAM,EAAE,SAAS;CAG9B;AAGD,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,WAAW,QAAqG,CAAC;AAE9H;;;GAGG;AACH,eAAO,MAAM,SAAS,aAAqE,CAAC"}
1
+ {"version":3,"file":"OxyServices.d.ts","sourceRoot":"","sources":["../../../src/core/OxyServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,QAAA,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAwB,CAAC;AAGxF,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,MAAM,EAAE,SAAS;CAG9B;AAGD,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,WAAW,KAAqG,CAAC;AAE9H;;;GAGG;AACH,eAAO,MAAM,SAAS,aAAqE,CAAC"}
@@ -3,6 +3,10 @@
3
3
  *
4
4
  * This file ensures that required polyfills are available
5
5
  * before any crypto operations are performed.
6
+ *
7
+ * Polyfills included:
8
+ * - Buffer: Required by bip39 and other crypto libraries
9
+ * - crypto.getRandomValues: Required by bip39 for secure random number generation
6
10
  */
7
11
  import { Buffer } from 'buffer';
8
12
  export { Buffer };
@@ -1 +1 @@
1
- {"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../../src/crypto/polyfill.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAkBhC,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../../src/crypto/polyfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAkEhC,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -6,6 +6,7 @@
6
6
  * 1. Scan QR code with Oxy Accounts app
7
7
  * 2. Open Oxy Accounts app directly (via deep link)
8
8
  *
9
+ * Uses WebSocket for real-time authorization updates (with polling fallback).
9
10
  * The Oxy Accounts app is where users manage their cryptographic identity.
10
11
  * This screen should NOT be used within the Accounts app itself.
11
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OxyAuthScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/OxyAuthScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA6P5C,CAAC;AA2GF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"OxyAuthScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/OxyAuthScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA6B3D,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoW5C,CAAC;AA2GF,eAAe,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.15.6",
3
+ "version": "5.15.9",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -97,7 +97,6 @@
97
97
  "elliptic": "^6.6.1",
98
98
  "expo-blur": "~15.0.8",
99
99
  "expo-crypto": "~14.0.1",
100
- "expo-random": "~14.0.1",
101
100
  "expo-secure-store": "~14.0.0",
102
101
  "invariant": "^2.2.4",
103
102
  "jwt-decode": "^4.0.0",
@@ -10,7 +10,7 @@ import type { ECKeyPair } from 'elliptic';
10
10
 
11
11
  // Lazy imports for React Native specific modules
12
12
  let SecureStore: typeof import('expo-secure-store') | null = null;
13
- let ExpoRandom: typeof import('expo-random') | null = null;
13
+ let ExpoCrypto: typeof import('expo-crypto') | null = null;
14
14
 
15
15
  const ec = new EC('secp256k1');
16
16
 
@@ -44,11 +44,11 @@ function isNodeJS(): boolean {
44
44
  return typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
45
45
  }
46
46
 
47
- async function initExpoRandom(): Promise<typeof import('expo-random')> {
48
- if (!ExpoRandom) {
49
- ExpoRandom = await import('expo-random');
47
+ async function initExpoCrypto(): Promise<typeof import('expo-crypto')> {
48
+ if (!ExpoCrypto) {
49
+ ExpoCrypto = await import('expo-crypto');
50
50
  }
51
- return ExpoRandom;
51
+ return ExpoCrypto;
52
52
  }
53
53
 
54
54
  /**
@@ -65,10 +65,10 @@ function uint8ArrayToHex(bytes: Uint8Array): string {
65
65
  * Generate cryptographically secure random bytes
66
66
  */
67
67
  async function getSecureRandomBytes(length: number): Promise<Uint8Array> {
68
- // In React Native, always use expo-random
68
+ // In React Native, always use expo-crypto
69
69
  if (isReactNative() || !isNodeJS()) {
70
- const Random = await initExpoRandom();
71
- return Random.getRandomBytes(length);
70
+ const Crypto = await initExpoCrypto();
71
+ return Crypto.getRandomBytes(length);
72
72
  }
73
73
 
74
74
  // In Node.js, use Node's crypto module
@@ -80,9 +80,9 @@ async function getSecureRandomBytes(length: number): Promise<Uint8Array> {
80
80
  const crypto = getCrypto();
81
81
  return new Uint8Array(crypto.randomBytes(length));
82
82
  } catch (error) {
83
- // Fallback to expo-random if Node crypto fails
84
- const Random = await initExpoRandom();
85
- return Random.getRandomBytes(length);
83
+ // Fallback to expo-crypto if Node crypto fails
84
+ const Crypto = await initExpoCrypto();
85
+ return Crypto.getRandomBytes(length);
86
86
  }
87
87
  }
88
88
 
@@ -3,6 +3,10 @@
3
3
  *
4
4
  * This file ensures that required polyfills are available
5
5
  * before any crypto operations are performed.
6
+ *
7
+ * Polyfills included:
8
+ * - Buffer: Required by bip39 and other crypto libraries
9
+ * - crypto.getRandomValues: Required by bip39 for secure random number generation
6
10
  */
7
11
 
8
12
  // Import Buffer polyfill for React Native compatibility
@@ -18,11 +22,59 @@ const getGlobalObject = (): typeof globalThis => {
18
22
  return {} as typeof globalThis;
19
23
  };
20
24
 
21
- // Make Buffer available globally for libraries that depend on it
22
25
  const globalObject = getGlobalObject();
26
+
27
+ // Make Buffer available globally for libraries that depend on it
23
28
  if (!globalObject.Buffer) {
24
29
  (globalObject as unknown as { Buffer: typeof Buffer }).Buffer = Buffer;
25
30
  }
26
31
 
32
+ // Polyfill crypto.getRandomValues for React Native
33
+ // This is required by bip39 and other crypto libraries
34
+ type CryptoLike = {
35
+ getRandomValues: <T extends ArrayBufferView>(array: T) => T;
36
+ };
37
+
38
+ // Cache for expo-crypto module
39
+ let expoCryptoModule: typeof import('expo-crypto') | null = null;
40
+
41
+ /**
42
+ * Get random bytes using expo-crypto (synchronous)
43
+ * This is a synchronous wrapper that loads expo-crypto lazily
44
+ */
45
+ function getRandomBytesSync(byteCount: number): Uint8Array {
46
+ if (!expoCryptoModule) {
47
+ // Try to require expo-crypto synchronously
48
+ try {
49
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
50
+ expoCryptoModule = require('expo-crypto');
51
+ } catch {
52
+ throw new Error('expo-crypto is required for crypto.getRandomValues polyfill');
53
+ }
54
+ }
55
+ // TypeScript guard - expoCryptoModule is guaranteed to be non-null here
56
+ const cryptoModule = expoCryptoModule;
57
+ if (!cryptoModule) {
58
+ throw new Error('Failed to load expo-crypto module');
59
+ }
60
+ return cryptoModule.getRandomBytes(byteCount);
61
+ }
62
+
63
+ const cryptoPolyfill: CryptoLike = {
64
+ getRandomValues<T extends ArrayBufferView>(array: T): T {
65
+ const bytes = getRandomBytesSync(array.byteLength);
66
+ const uint8View = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
67
+ uint8View.set(bytes);
68
+ return array;
69
+ },
70
+ };
71
+
72
+ // Only polyfill if crypto or crypto.getRandomValues is not available
73
+ if (typeof globalObject.crypto === 'undefined') {
74
+ (globalObject as unknown as { crypto: CryptoLike }).crypto = cryptoPolyfill;
75
+ } else if (typeof globalObject.crypto.getRandomValues !== 'function') {
76
+ (globalObject.crypto as CryptoLike).getRandomValues = cryptoPolyfill.getRandomValues;
77
+ }
78
+
27
79
  // Re-export Buffer for convenience
28
80
  export { Buffer };
@@ -287,7 +287,7 @@ const TextField = forwardRef<TextFieldHandles, Props>(
287
287
  height: null,
288
288
  });
289
289
 
290
- const timer = React.useRef<NodeJS.Timeout | undefined>(undefined);
290
+ const timer = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);
291
291
  const root = React.useRef<NativeTextInput | undefined | null>(null);
292
292
 
293
293
  const { scale } = theme.animation;
@@ -339,7 +339,7 @@ const TextField = forwardRef<TextFieldHandles, Props>(
339
339
  timer.current = setTimeout(
340
340
  () => setDisplayPlaceholder(true),
341
341
  50
342
- ) as unknown as NodeJS.Timeout;
342
+ );
343
343
  }
344
344
  } else {
345
345
  // hidePlaceholder
@@ -314,7 +314,7 @@ const AccountSettingsScreen: React.FC<BaseScreenProps & { initialField?: string;
314
314
  // Use a ref to track if we've already set the initial field to avoid loops
315
315
  const hasSetInitialFieldRef = useRef(false);
316
316
  const previousInitialFieldRef = useRef<string | undefined>(undefined);
317
- const initialFieldTimeoutRef = useRef<NodeJS.Timeout | null>(null);
317
+ const initialFieldTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
318
318
 
319
319
  // Delay constant for scroll completion
320
320
  const SCROLL_DELAY_MS = 600;