@oxyhq/services 5.7.5 → 5.8.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.
Files changed (239) hide show
  1. package/README.md +76 -76
  2. package/lib/commonjs/core/index.js +177 -102
  3. package/lib/commonjs/core/index.js.map +1 -1
  4. package/lib/commonjs/index.js +88 -29
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/node/createAuth.js +585 -7
  7. package/lib/commonjs/node/createAuth.js.map +1 -1
  8. package/lib/commonjs/node/index.js +38 -1
  9. package/lib/commonjs/node/index.js.map +1 -1
  10. package/lib/commonjs/ui/components/Avatar.js +15 -6
  11. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  12. package/lib/commonjs/ui/components/GroupedItem.js +58 -13
  13. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  14. package/lib/commonjs/ui/components/GroupedSection.js +7 -1
  15. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  16. package/lib/commonjs/ui/components/Header.js +322 -0
  17. package/lib/commonjs/ui/components/Header.js.map +1 -0
  18. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  19. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  20. package/lib/commonjs/ui/components/index.js +7 -0
  21. package/lib/commonjs/ui/components/index.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +1 -1
  23. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/TextField.js +606 -546
  25. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  26. package/lib/commonjs/ui/components/internal/TextField.md +436 -0
  27. package/lib/commonjs/ui/context/OxyContext.js +122 -78
  28. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  29. package/lib/commonjs/ui/hooks/useSessionSocket.js +5 -2
  30. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  31. package/lib/commonjs/ui/navigation/OxyRouter.js +1 -1
  32. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  33. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -6
  34. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/AccountManagementDemo.js +3 -3
  36. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +1 -1
  37. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +241 -598
  38. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  39. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +1151 -406
  40. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +135 -237
  42. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/AppInfoScreen.js +246 -463
  44. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/FeedbackScreen.js +3 -3
  46. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +808 -650
  48. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +51 -72
  50. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/SessionManagementScreen.js +11 -29
  52. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/SignInScreen.js +30 -303
  54. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/SignUpScreen.js +4 -4
  56. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +19 -31
  58. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  59. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +7 -10
  60. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  61. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +11 -5
  62. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  63. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +11 -4
  64. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  65. package/lib/commonjs/ui/stores/authStore.js +12 -0
  66. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  67. package/lib/commonjs/ui/styles/authStyles.js +337 -0
  68. package/lib/commonjs/ui/styles/authStyles.js.map +1 -0
  69. package/lib/commonjs/ui/styles/index.js +11 -0
  70. package/lib/commonjs/ui/styles/index.js.map +1 -1
  71. package/lib/module/core/index.js +177 -41
  72. package/lib/module/core/index.js.map +1 -1
  73. package/lib/module/index.js +26 -4
  74. package/lib/module/index.js.map +1 -1
  75. package/lib/module/node/createAuth.js +584 -7
  76. package/lib/module/node/createAuth.js.map +1 -1
  77. package/lib/module/node/index.js +7 -1
  78. package/lib/module/node/index.js.map +1 -1
  79. package/lib/module/ui/components/Avatar.js +15 -6
  80. package/lib/module/ui/components/Avatar.js.map +1 -1
  81. package/lib/module/ui/components/GroupedItem.js +59 -14
  82. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  83. package/lib/module/ui/components/GroupedSection.js +7 -1
  84. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  85. package/lib/module/ui/components/Header.js +317 -0
  86. package/lib/module/ui/components/Header.js.map +1 -0
  87. package/lib/module/ui/components/OxyProvider.js +25 -9
  88. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  89. package/lib/module/ui/components/index.js +1 -0
  90. package/lib/module/ui/components/index.js.map +1 -1
  91. package/lib/module/ui/components/internal/GroupedPillButtons.js +1 -1
  92. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  93. package/lib/module/ui/components/internal/TextField.js +607 -547
  94. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  95. package/lib/module/ui/components/internal/TextField.md +436 -0
  96. package/lib/module/ui/context/OxyContext.js +121 -77
  97. package/lib/module/ui/context/OxyContext.js.map +1 -1
  98. package/lib/module/ui/hooks/useSessionSocket.js +5 -2
  99. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  100. package/lib/module/ui/navigation/OxyRouter.js +1 -1
  101. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  102. package/lib/module/ui/screens/AccountCenterScreen.js +6 -6
  103. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  104. package/lib/module/ui/screens/AccountManagementDemo.js +3 -3
  105. package/lib/module/ui/screens/AccountManagementDemo.js.map +1 -1
  106. package/lib/module/ui/screens/AccountOverviewScreen.js +242 -597
  107. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  108. package/lib/module/ui/screens/AccountSettingsScreen.js +1152 -407
  109. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  110. package/lib/module/ui/screens/AccountSwitcherScreen.js +135 -237
  111. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  112. package/lib/module/ui/screens/AppInfoScreen.js +248 -465
  113. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  114. package/lib/module/ui/screens/FeedbackScreen.js +3 -3
  115. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  116. package/lib/module/ui/screens/PaymentGatewayScreen.js +809 -651
  117. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  118. package/lib/module/ui/screens/RecoverAccountScreen.js +53 -74
  119. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  120. package/lib/module/ui/screens/SessionManagementScreen.js +11 -29
  121. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  122. package/lib/module/ui/screens/SignInScreen.js +32 -305
  123. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  124. package/lib/module/ui/screens/SignUpScreen.js +5 -5
  125. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  126. package/lib/module/ui/screens/internal/SignInPasswordStep.js +19 -31
  127. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  128. package/lib/module/ui/screens/internal/SignInUsernameStep.js +7 -10
  129. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  130. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +11 -5
  131. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  132. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +11 -4
  133. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  134. package/lib/module/ui/stores/authStore.js +12 -0
  135. package/lib/module/ui/stores/authStore.js.map +1 -1
  136. package/lib/module/ui/styles/authStyles.js +332 -0
  137. package/lib/module/ui/styles/authStyles.js.map +1 -0
  138. package/lib/module/ui/styles/index.js +1 -0
  139. package/lib/module/ui/styles/index.js.map +1 -1
  140. package/lib/typescript/core/index.d.ts +68 -24
  141. package/lib/typescript/core/index.d.ts.map +1 -1
  142. package/lib/typescript/index.d.ts +13 -3
  143. package/lib/typescript/index.d.ts.map +1 -1
  144. package/lib/typescript/node/createAuth.d.ts +112 -0
  145. package/lib/typescript/node/createAuth.d.ts.map +1 -1
  146. package/lib/typescript/node/index.d.ts +2 -0
  147. package/lib/typescript/node/index.d.ts.map +1 -1
  148. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  149. package/lib/typescript/ui/components/GroupedItem.d.ts +6 -0
  150. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  151. package/lib/typescript/ui/components/GroupedSection.d.ts +6 -0
  152. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -1
  153. package/lib/typescript/ui/components/Header.d.ts +22 -0
  154. package/lib/typescript/ui/components/Header.d.ts.map +1 -0
  155. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  156. package/lib/typescript/ui/components/index.d.ts +1 -0
  157. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  158. package/lib/typescript/ui/components/internal/TextField.d.ts +31 -16
  159. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  160. package/lib/typescript/ui/context/OxyContext.d.ts +5 -2
  161. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  162. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  163. package/lib/typescript/ui/navigation/types.d.ts +9 -2
  164. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  165. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  166. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  167. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  168. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  169. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  170. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +5 -1
  171. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  172. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  173. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  174. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +1 -1
  175. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  176. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +0 -1
  177. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  178. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -1
  179. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -1
  180. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  181. package/lib/typescript/ui/styles/authStyles.d.ts +326 -0
  182. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -0
  183. package/lib/typescript/ui/styles/index.d.ts +1 -0
  184. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  185. package/package.json +1 -4
  186. package/src/core/index.ts +195 -41
  187. package/src/index.ts +72 -4
  188. package/src/node/createAuth.ts +623 -7
  189. package/src/node/index.ts +19 -1
  190. package/src/ui/components/Avatar.tsx +11 -5
  191. package/src/ui/components/GroupedItem.tsx +57 -9
  192. package/src/ui/components/GroupedSection.tsx +12 -0
  193. package/src/ui/components/Header.tsx +364 -0
  194. package/src/ui/components/OxyProvider.tsx +31 -15
  195. package/src/ui/components/index.ts +1 -0
  196. package/src/ui/components/internal/GroupedPillButtons.tsx +1 -1
  197. package/src/ui/components/internal/TextField.md +436 -0
  198. package/src/ui/components/internal/TextField.tsx +720 -620
  199. package/src/ui/context/OxyContext.tsx +150 -63
  200. package/src/ui/hooks/useSessionSocket.ts +5 -2
  201. package/src/ui/navigation/OxyRouter.tsx +1 -1
  202. package/src/ui/navigation/types.ts +10 -2
  203. package/src/ui/screens/AccountCenterScreen.tsx +5 -5
  204. package/src/ui/screens/AccountManagementDemo.tsx +9 -9
  205. package/src/ui/screens/AccountOverviewScreen.tsx +265 -414
  206. package/src/ui/screens/AccountSettingsScreen.tsx +1165 -403
  207. package/src/ui/screens/AccountSwitcherScreen.tsx +158 -202
  208. package/src/ui/screens/AppInfoScreen.tsx +270 -497
  209. package/src/ui/screens/FeedbackScreen.tsx +3 -3
  210. package/src/ui/screens/PaymentGatewayScreen.tsx +668 -365
  211. package/src/ui/screens/ProfileScreen.tsx +5 -5
  212. package/src/ui/screens/RecoverAccountScreen.tsx +46 -74
  213. package/src/ui/screens/SessionManagementScreen.tsx +14 -22
  214. package/src/ui/screens/SignInScreen.tsx +27 -294
  215. package/src/ui/screens/SignUpScreen.tsx +5 -5
  216. package/src/ui/screens/internal/SignInPasswordStep.tsx +11 -22
  217. package/src/ui/screens/internal/SignInUsernameStep.tsx +3 -10
  218. package/src/ui/screens/internal/SignUpIdentityStep.tsx +2 -5
  219. package/src/ui/screens/internal/SignUpSecurityStep.tsx +3 -4
  220. package/src/ui/stores/authStore.ts +12 -0
  221. package/src/ui/styles/authStyles.ts +352 -0
  222. package/src/ui/styles/index.ts +1 -0
  223. package/lib/commonjs/core/auth-manager.js +0 -440
  224. package/lib/commonjs/core/auth-manager.js.map +0 -1
  225. package/lib/commonjs/core/use-auth.js +0 -244
  226. package/lib/commonjs/core/use-auth.js.map +0 -1
  227. package/lib/module/core/auth-manager.js +0 -432
  228. package/lib/module/core/auth-manager.js.map +0 -1
  229. package/lib/module/core/use-auth.js +0 -235
  230. package/lib/module/core/use-auth.js.map +0 -1
  231. package/lib/typescript/core/auth-manager.d.ts +0 -136
  232. package/lib/typescript/core/auth-manager.d.ts.map +0 -1
  233. package/lib/typescript/core/use-auth.d.ts +0 -79
  234. package/lib/typescript/core/use-auth.d.ts.map +0 -1
  235. package/src/__tests__/middleware.test.ts +0 -105
  236. package/src/__tests__/setup.ts +0 -10
  237. package/src/__tests__/zero-config-auth.test.ts +0 -607
  238. package/src/core/auth-manager.ts +0 -500
  239. package/src/core/use-auth.tsx +0 -245
@@ -1,440 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AuthenticationManager = void 0;
7
- exports.getAuthManager = getAuthManager;
8
- exports.initializeAuth = initializeAuth;
9
- var _axios = _interopRequireDefault(require("axios"));
10
- var _jwtDecode = require("jwt-decode");
11
- var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- /**
14
- * Zero-Config Authentication Manager
15
- *
16
- * This module provides automatic token management, session handling,
17
- * and seamless authentication for Oxy services.
18
- */
19
-
20
- class AuthenticationManager {
21
- tokens = null;
22
- user = null;
23
- refreshPromise = null;
24
- listeners = [];
25
- storageKey = '@oxy/auth-tokens';
26
- constructor(baseURL) {
27
- this.client = _axios.default.create({
28
- baseURL,
29
- timeout: 15000,
30
- withCredentials: true // Enable cookies for session management
31
- });
32
- this.setupInterceptors();
33
- this.initializeFromStorage();
34
- }
35
-
36
- /**
37
- * Setup axios interceptors for automatic token management
38
- */
39
- setupInterceptors() {
40
- // Request interceptor - automatically add auth headers
41
- this.client.interceptors.request.use(async config => {
42
- // Skip auth for login/signup endpoints
43
- if (this.isPublicEndpoint(config.url || '')) {
44
- return config;
45
- }
46
-
47
- // Ensure we have a valid token
48
- await this.ensureValidToken();
49
-
50
- // Add authorization header if we have a token
51
- if (this.tokens?.accessToken) {
52
- config.headers = config.headers || {};
53
- config.headers.Authorization = `Bearer ${this.tokens.accessToken}`;
54
- }
55
- return config;
56
- }, error => Promise.reject(error));
57
-
58
- // Response interceptor - handle token expiration and auto-retry
59
- this.client.interceptors.response.use(response => response, async error => {
60
- const originalRequest = error.config;
61
-
62
- // If it's a 401 and we haven't already retried, attempt token refresh
63
- if (error.response?.status === 401 && !originalRequest._retry && this.tokens?.refreshToken && !this.isPublicEndpoint(originalRequest?.url || '')) {
64
- originalRequest._retry = true;
65
- try {
66
- await this.refreshTokens();
67
-
68
- // Retry original request with new token
69
- if (originalRequest && this.tokens?.accessToken) {
70
- originalRequest.headers = originalRequest.headers || {};
71
- originalRequest.headers.Authorization = `Bearer ${this.tokens.accessToken}`;
72
- return this.client(originalRequest);
73
- }
74
- } catch (refreshError) {
75
- // Refresh failed, clear tokens and notify listeners
76
- await this.logout();
77
- return Promise.reject(error);
78
- }
79
- }
80
-
81
- // For non-auth errors or failed retries, reject with formatted error
82
- return Promise.reject(this.formatError(error));
83
- });
84
- }
85
-
86
- /**
87
- * Check if endpoint is public (doesn't require authentication)
88
- */
89
- isPublicEndpoint(url) {
90
- const publicPaths = ['/auth/login', '/auth/signup', '/auth/register', '/auth/check-username', '/auth/check-email', '/health', '/'];
91
- return publicPaths.some(path => url.includes(path));
92
- }
93
-
94
- /**
95
- * Initialize authentication state from persistent storage
96
- */
97
- async initializeFromStorage() {
98
- try {
99
- const storedData = await _asyncStorage.default.getItem(this.storageKey);
100
- if (storedData) {
101
- const tokens = JSON.parse(storedData);
102
-
103
- // Validate that tokens haven't expired
104
- if (await this.validateStoredTokens(tokens)) {
105
- this.tokens = tokens;
106
- await this.fetchCurrentUser();
107
- this.notifyStateChange();
108
- } else {
109
- // Tokens expired, clear storage
110
- await _asyncStorage.default.removeItem(this.storageKey);
111
- }
112
- }
113
- } catch (error) {
114
- console.warn('[OxyAuth] Failed to initialize from storage:', error);
115
- await _asyncStorage.default.removeItem(this.storageKey);
116
- }
117
- }
118
-
119
- /**
120
- * Validate stored tokens without making network calls if possible
121
- */
122
- async validateStoredTokens(tokens) {
123
- try {
124
- // First check if access token is expired
125
- const decoded = (0, _jwtDecode.jwtDecode)(tokens.accessToken);
126
- const now = Math.floor(Date.now() / 1000);
127
-
128
- // If access token is still valid, we're good
129
- if (decoded.exp > now + 60) {
130
- // 60 second buffer
131
- return true;
132
- }
133
-
134
- // Access token expired, try refresh token
135
- const refreshDecoded = (0, _jwtDecode.jwtDecode)(tokens.refreshToken);
136
- return refreshDecoded.exp > now;
137
- } catch {
138
- return false;
139
- }
140
- }
141
-
142
- /**
143
- * Ensure we have a valid access token
144
- */
145
- async ensureValidToken() {
146
- if (!this.tokens?.accessToken) {
147
- return;
148
- }
149
- try {
150
- const decoded = (0, _jwtDecode.jwtDecode)(this.tokens.accessToken);
151
- const now = Math.floor(Date.now() / 1000);
152
-
153
- // Refresh if token expires within 5 minutes
154
- if (decoded.exp - now < 300) {
155
- await this.refreshTokens();
156
- }
157
- } catch (error) {
158
- console.warn('[OxyAuth] Token validation error:', error);
159
- // If token is malformed, try refresh
160
- if (this.tokens?.refreshToken) {
161
- await this.refreshTokens();
162
- }
163
- }
164
- }
165
-
166
- /**
167
- * Login with credentials
168
- */
169
- async login(credentials) {
170
- try {
171
- const response = await this.client.post('/auth/login', credentials);
172
- const loginData = response.data;
173
- if (loginData.success && loginData.accessToken && loginData.refreshToken) {
174
- await this.setTokens({
175
- accessToken: loginData.accessToken,
176
- refreshToken: loginData.refreshToken
177
- });
178
- this.user = loginData.user;
179
- this.notifyStateChange();
180
- return loginData;
181
- } else {
182
- throw new Error(loginData.message || 'Login failed');
183
- }
184
- } catch (error) {
185
- throw this.formatError(error);
186
- }
187
- }
188
-
189
- /**
190
- * Register new user
191
- */
192
- async register(userData) {
193
- try {
194
- const response = await this.client.post('/auth/register', userData);
195
- const registerData = response.data;
196
- if (registerData.success && registerData.accessToken && registerData.refreshToken) {
197
- await this.setTokens({
198
- accessToken: registerData.accessToken,
199
- refreshToken: registerData.refreshToken
200
- });
201
- this.user = registerData.user;
202
- this.notifyStateChange();
203
- return registerData;
204
- } else {
205
- throw new Error(registerData.message || 'Registration failed');
206
- }
207
- } catch (error) {
208
- throw this.formatError(error);
209
- }
210
- }
211
-
212
- /**
213
- * Logout user and clear all tokens
214
- */
215
- async logout() {
216
- // Attempt server-side logout if we have tokens
217
- if (this.tokens?.refreshToken) {
218
- try {
219
- await this.client.post('/auth/logout', {
220
- refreshToken: this.tokens.refreshToken
221
- });
222
- } catch (error) {
223
- console.warn('[OxyAuth] Server logout failed:', error);
224
- }
225
- }
226
-
227
- // Clear local state
228
- this.tokens = null;
229
- this.user = null;
230
-
231
- // Clear storage
232
- try {
233
- await _asyncStorage.default.removeItem(this.storageKey);
234
- } catch (error) {
235
- console.warn('[OxyAuth] Failed to clear storage:', error);
236
- }
237
- this.notifyStateChange();
238
- }
239
-
240
- /**
241
- * Refresh access token using refresh token
242
- */
243
- async refreshTokens() {
244
- if (!this.tokens?.refreshToken) {
245
- throw new Error('No refresh token available');
246
- }
247
-
248
- // If refresh is already in progress, return that promise
249
- if (this.refreshPromise) {
250
- return this.refreshPromise;
251
- }
252
- this.refreshPromise = this.performTokenRefresh();
253
- try {
254
- const newTokens = await this.refreshPromise;
255
- this.refreshPromise = null;
256
- return newTokens;
257
- } catch (error) {
258
- this.refreshPromise = null;
259
- throw error;
260
- }
261
- }
262
-
263
- /**
264
- * Perform the actual token refresh
265
- */
266
- async performTokenRefresh() {
267
- try {
268
- const response = await this.client.post('/auth/refresh', {
269
- refreshToken: this.tokens.refreshToken
270
- });
271
- const newTokens = {
272
- accessToken: response.data.accessToken,
273
- refreshToken: response.data.refreshToken
274
- };
275
- await this.setTokens(newTokens);
276
- return newTokens;
277
- } catch (error) {
278
- // Refresh failed, clear all tokens
279
- await this.logout();
280
- throw this.formatError(error);
281
- }
282
- }
283
-
284
- /**
285
- * Set tokens and persist to storage
286
- */
287
- async setTokens(newTokens) {
288
- this.tokens = newTokens;
289
- try {
290
- await _asyncStorage.default.setItem(this.storageKey, JSON.stringify(newTokens));
291
- } catch (error) {
292
- console.warn('[OxyAuth] Failed to persist tokens:', error);
293
- }
294
- }
295
-
296
- /**
297
- * Fetch current user profile
298
- */
299
- async fetchCurrentUser() {
300
- try {
301
- const response = await this.client.get('/auth/me');
302
- this.user = response.data.data || response.data;
303
- } catch (error) {
304
- console.warn('[OxyAuth] Failed to fetch current user:', error);
305
- // Don't throw here, we can still function without user profile
306
- }
307
- }
308
-
309
- /**
310
- * Get current authentication state
311
- */
312
- getAuthState() {
313
- return {
314
- isAuthenticated: !!this.tokens?.accessToken,
315
- user: this.user,
316
- tokens: this.tokens
317
- };
318
- }
319
-
320
- /**
321
- * Get current user (loads if not cached)
322
- */
323
- async getCurrentUser() {
324
- if (!this.tokens?.accessToken) {
325
- throw new Error('Not authenticated');
326
- }
327
- if (!this.user) {
328
- await this.fetchCurrentUser();
329
- }
330
- return this.user;
331
- }
332
-
333
- /**
334
- * Subscribe to authentication state changes
335
- */
336
- onAuthStateChange(callback) {
337
- this.listeners.push(callback);
338
-
339
- // Immediately call with current state
340
- callback(this.getAuthState());
341
-
342
- // Return unsubscribe function
343
- return () => {
344
- this.listeners = this.listeners.filter(listener => listener !== callback);
345
- };
346
- }
347
-
348
- /**
349
- * Notify all listeners of state changes
350
- */
351
- notifyStateChange() {
352
- const state = this.getAuthState();
353
- this.listeners.forEach(listener => {
354
- try {
355
- listener(state);
356
- } catch (error) {
357
- console.error('[OxyAuth] Listener error:', error);
358
- }
359
- });
360
- }
361
-
362
- /**
363
- * Format error responses consistently
364
- */
365
- formatError(error) {
366
- if (error?.response?.data?.message) {
367
- return new Error(error.response.data.message);
368
- }
369
- if (error?.message) {
370
- return new Error(error.message);
371
- }
372
- return new Error('An unexpected error occurred');
373
- }
374
-
375
- /**
376
- * Get authenticated HTTP client for making API calls
377
- */
378
- getClient() {
379
- return this.client;
380
- }
381
-
382
- /**
383
- * Check username availability
384
- */
385
- async checkUsernameAvailability(username) {
386
- try {
387
- const response = await this.client.get(`/auth/check-username/${encodeURIComponent(username)}`);
388
- return response.data;
389
- } catch (error) {
390
- const axiosError = error;
391
- if (axiosError?.response?.status === 400) {
392
- return axiosError.response.data;
393
- }
394
- throw this.formatError(error);
395
- }
396
- }
397
-
398
- /**
399
- * Check email availability
400
- */
401
- async checkEmailAvailability(email) {
402
- try {
403
- const response = await this.client.post('/auth/check-email', {
404
- email
405
- });
406
- return response.data;
407
- } catch (error) {
408
- const axiosError = error;
409
- if (axiosError?.response?.status === 400) {
410
- return axiosError.response.data;
411
- }
412
- throw this.formatError(error);
413
- }
414
- }
415
- }
416
-
417
- // Global auth manager instance
418
- exports.AuthenticationManager = AuthenticationManager;
419
- let globalAuthManager = null;
420
-
421
- /**
422
- * Initialize global authentication manager
423
- */
424
- function initializeAuth(baseURL) {
425
- if (!globalAuthManager) {
426
- globalAuthManager = new AuthenticationManager(baseURL);
427
- }
428
- return globalAuthManager;
429
- }
430
-
431
- /**
432
- * Get global authentication manager instance
433
- */
434
- function getAuthManager() {
435
- if (!globalAuthManager) {
436
- throw new Error('Authentication manager not initialized. Call initializeAuth() first.');
437
- }
438
- return globalAuthManager;
439
- }
440
- //# sourceMappingURL=auth-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_jwtDecode","_asyncStorage","e","__esModule","default","AuthenticationManager","tokens","user","refreshPromise","listeners","storageKey","constructor","baseURL","client","axios","create","timeout","withCredentials","setupInterceptors","initializeFromStorage","interceptors","request","use","config","isPublicEndpoint","url","ensureValidToken","accessToken","headers","Authorization","error","Promise","reject","response","originalRequest","status","_retry","refreshToken","refreshTokens","refreshError","logout","formatError","publicPaths","some","path","includes","storedData","AsyncStorage","getItem","JSON","parse","validateStoredTokens","fetchCurrentUser","notifyStateChange","removeItem","console","warn","decoded","jwtDecode","now","Math","floor","Date","exp","refreshDecoded","login","credentials","post","loginData","data","success","setTokens","Error","message","register","userData","registerData","performTokenRefresh","newTokens","setItem","stringify","get","getAuthState","isAuthenticated","getCurrentUser","onAuthStateChange","callback","push","filter","listener","state","forEach","getClient","checkUsernameAvailability","username","encodeURIComponent","axiosError","checkEmailAvailability","email","exports","globalAuthManager","initializeAuth","getAuthManager"],"sourceRoot":"../../../src","sources":["core/auth-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,244 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AuthProvider = AuthProvider;
7
- exports.useAuth = useAuth;
8
- exports.useAuthStatus = useAuthStatus;
9
- exports.useCurrentUser = useCurrentUser;
10
- exports.useOxyClient = useOxyClient;
11
- exports.withAuth = withAuth;
12
- var _react = require("react");
13
- var _authManager = require("./auth-manager");
14
- var _jsxRuntime = require("react/jsx-runtime");
15
- /**
16
- * Zero-Config Authentication Hook for React/React Native
17
- *
18
- * Provides automatic authentication state management with minimal setup required.
19
- */
20
-
21
- const AuthContext = /*#__PURE__*/(0, _react.createContext)(null);
22
- /**
23
- * Authentication Provider Component
24
- *
25
- * Wrap your app with this provider to enable zero-config authentication.
26
- * All authentication state will be automatically managed.
27
- */
28
- function AuthProvider({
29
- children,
30
- baseURL = 'https://api.oxy.so'
31
- }) {
32
- const [state, setState] = (0, _react.useState)({
33
- isAuthenticated: false,
34
- isLoading: true,
35
- user: null,
36
- error: null
37
- });
38
- const authManager = (0, _authManager.initializeAuth)(baseURL);
39
-
40
- // Update state when auth manager state changes
41
- (0, _react.useEffect)(() => {
42
- const unsubscribe = authManager.onAuthStateChange(authState => {
43
- setState(prevState => ({
44
- ...prevState,
45
- isAuthenticated: authState.isAuthenticated,
46
- user: authState.user,
47
- isLoading: false
48
- }));
49
- });
50
- return unsubscribe;
51
- }, [authManager]);
52
- const login = (0, _react.useCallback)(async (username, password) => {
53
- setState(prev => ({
54
- ...prev,
55
- isLoading: true,
56
- error: null
57
- }));
58
- try {
59
- await authManager.login({
60
- username,
61
- password
62
- });
63
- // State will be updated via the auth state change listener
64
- } catch (error) {
65
- setState(prev => ({
66
- ...prev,
67
- isLoading: false,
68
- error: error instanceof Error ? error.message : 'Login failed'
69
- }));
70
- throw error;
71
- }
72
- }, [authManager]);
73
- const register = (0, _react.useCallback)(async (username, email, password) => {
74
- setState(prev => ({
75
- ...prev,
76
- isLoading: true,
77
- error: null
78
- }));
79
- try {
80
- await authManager.register({
81
- username,
82
- email,
83
- password
84
- });
85
- // State will be updated via the auth state change listener
86
- } catch (error) {
87
- setState(prev => ({
88
- ...prev,
89
- isLoading: false,
90
- error: error instanceof Error ? error.message : 'Registration failed'
91
- }));
92
- throw error;
93
- }
94
- }, [authManager]);
95
- const logout = (0, _react.useCallback)(async () => {
96
- setState(prev => ({
97
- ...prev,
98
- isLoading: true,
99
- error: null
100
- }));
101
- try {
102
- await authManager.logout();
103
- // State will be updated via the auth state change listener
104
- } catch (error) {
105
- console.error('Logout error:', error);
106
- setState(prev => ({
107
- ...prev,
108
- isLoading: false,
109
- error: error instanceof Error ? error.message : 'Logout failed'
110
- }));
111
- }
112
- }, [authManager]);
113
- const getCurrentUser = (0, _react.useCallback)(async () => {
114
- try {
115
- return await authManager.getCurrentUser();
116
- } catch (error) {
117
- setState(prev => ({
118
- ...prev,
119
- error: error instanceof Error ? error.message : 'Failed to get current user'
120
- }));
121
- throw error;
122
- }
123
- }, [authManager]);
124
- const checkUsernameAvailability = (0, _react.useCallback)(async username => {
125
- return await authManager.checkUsernameAvailability(username);
126
- }, [authManager]);
127
- const checkEmailAvailability = (0, _react.useCallback)(async email => {
128
- return await authManager.checkEmailAvailability(email);
129
- }, [authManager]);
130
- const clearError = (0, _react.useCallback)(() => {
131
- setState(prev => ({
132
- ...prev,
133
- error: null
134
- }));
135
- }, []);
136
- const contextValue = {
137
- ...state,
138
- login,
139
- register,
140
- logout,
141
- getCurrentUser,
142
- checkUsernameAvailability,
143
- checkEmailAvailability,
144
- clearError
145
- };
146
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(AuthContext.Provider, {
147
- value: contextValue,
148
- children: children
149
- });
150
- }
151
-
152
- /**
153
- * Authentication Hook
154
- *
155
- * Use this hook in any component to access authentication state and methods.
156
- * No additional setup required - just wrap your app with AuthProvider.
157
- */
158
- function useAuth() {
159
- const context = (0, _react.useContext)(AuthContext);
160
- if (!context) {
161
- throw new Error('useAuth must be used within an AuthProvider');
162
- }
163
- return context;
164
- }
165
-
166
- /**
167
- * Higher-Order Component for authentication
168
- *
169
- * Wraps a component to ensure user is authenticated before rendering.
170
- * Automatically redirects to login if not authenticated.
171
- */
172
- function withAuth(Component, options = {}) {
173
- const {
174
- redirectTo,
175
- LoadingComponent = () => null,
176
- requireAuth = true
177
- } = options;
178
- return function AuthenticatedComponent(props) {
179
- const {
180
- isAuthenticated,
181
- isLoading
182
- } = useAuth();
183
- if (isLoading) {
184
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(LoadingComponent, {});
185
- }
186
- if (requireAuth && !isAuthenticated) {
187
- if (redirectTo) {
188
- redirectTo();
189
- return null;
190
- }
191
-
192
- // Default behavior - render nothing if not authenticated
193
- return null;
194
- }
195
- if (!requireAuth && isAuthenticated) {
196
- // Component should only be shown to non-authenticated users
197
- return null;
198
- }
199
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
200
- ...props
201
- });
202
- };
203
- }
204
-
205
- /**
206
- * Hook for authenticated API calls
207
- *
208
- * Returns an authenticated HTTP client that automatically handles tokens.
209
- */
210
- function useOxyClient() {
211
- const authManager = (0, _authManager.getAuthManager)();
212
- return authManager.getClient();
213
- }
214
-
215
- /**
216
- * Hook for authentication status only (minimal re-renders)
217
- */
218
- function useAuthStatus() {
219
- const {
220
- isAuthenticated,
221
- isLoading
222
- } = useAuth();
223
- return {
224
- isAuthenticated,
225
- isLoading
226
- };
227
- }
228
-
229
- /**
230
- * Hook for current user data
231
- */
232
- function useCurrentUser() {
233
- const {
234
- user,
235
- isLoading,
236
- getCurrentUser
237
- } = useAuth();
238
- return {
239
- user,
240
- isLoading,
241
- refetch: getCurrentUser
242
- };
243
- }
244
- //# sourceMappingURL=use-auth.js.map