@oxyhq/services 5.9.2 → 5.9.4

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 (202) hide show
  1. package/README.md +1 -33
  2. package/lib/commonjs/core/OxyServices.js +322 -0
  3. package/lib/commonjs/core/OxyServices.js.map +1 -0
  4. package/lib/commonjs/core/OxyServicesMain.js +51 -0
  5. package/lib/commonjs/core/OxyServicesMain.js.map +1 -0
  6. package/lib/commonjs/core/analytics/AnalyticsService.js +67 -0
  7. package/lib/commonjs/core/analytics/AnalyticsService.js.map +1 -0
  8. package/lib/commonjs/core/auth/AuthService.js +526 -0
  9. package/lib/commonjs/core/auth/AuthService.js.map +1 -0
  10. package/lib/commonjs/core/devices/DeviceService.js +61 -0
  11. package/lib/commonjs/core/devices/DeviceService.js.map +1 -0
  12. package/lib/commonjs/core/files/FileService.js +176 -0
  13. package/lib/commonjs/core/files/FileService.js.map +1 -0
  14. package/lib/commonjs/core/index.js +103 -1701
  15. package/lib/commonjs/core/index.js.map +1 -1
  16. package/lib/commonjs/core/karma/KarmaService.js +100 -0
  17. package/lib/commonjs/core/karma/KarmaService.js.map +1 -0
  18. package/lib/commonjs/core/locations/LocationService.js +131 -0
  19. package/lib/commonjs/core/locations/LocationService.js.map +1 -0
  20. package/lib/commonjs/core/payments/PaymentService.js +124 -0
  21. package/lib/commonjs/core/payments/PaymentService.js.map +1 -0
  22. package/lib/commonjs/core/users/UserService.js +234 -0
  23. package/lib/commonjs/core/users/UserService.js.map +1 -0
  24. package/lib/commonjs/index.js +164 -3
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/models/session.js +2 -0
  27. package/lib/commonjs/{types/middleware.js.map → models/session.js.map} +1 -1
  28. package/lib/commonjs/ui/context/OxyContext.js +28 -24
  29. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  30. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +2 -2
  31. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  32. package/lib/commonjs/ui/screens/FileManagementScreen.js +12 -12
  33. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  34. package/lib/commonjs/ui/screens/ProfileScreen.js +2 -2
  35. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  36. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  37. package/lib/commonjs/ui/screens/SignInScreen.js +1 -1
  38. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  39. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
  40. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
  42. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -1
  44. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  45. package/lib/commonjs/ui/stores/followStore.js +4 -4
  46. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  47. package/lib/commonjs/utils/apiUtils.js +93 -0
  48. package/lib/commonjs/utils/apiUtils.js.map +1 -0
  49. package/lib/commonjs/utils/asyncUtils.js +219 -0
  50. package/lib/commonjs/utils/asyncUtils.js.map +1 -0
  51. package/lib/commonjs/utils/errorUtils.js +148 -0
  52. package/lib/commonjs/utils/errorUtils.js.map +1 -0
  53. package/lib/commonjs/utils/hookUtils.js +399 -0
  54. package/lib/commonjs/utils/hookUtils.js.map +1 -0
  55. package/lib/commonjs/utils/loggerUtils.js +160 -0
  56. package/lib/commonjs/utils/loggerUtils.js.map +1 -0
  57. package/lib/commonjs/utils/validationUtils.js +174 -0
  58. package/lib/commonjs/utils/validationUtils.js.map +1 -0
  59. package/lib/module/core/OxyServices.js +316 -0
  60. package/lib/module/core/OxyServices.js.map +1 -0
  61. package/lib/module/core/OxyServicesMain.js +47 -0
  62. package/lib/module/core/OxyServicesMain.js.map +1 -0
  63. package/lib/module/core/analytics/AnalyticsService.js +62 -0
  64. package/lib/module/core/analytics/AnalyticsService.js.map +1 -0
  65. package/lib/module/core/auth/AuthService.js +521 -0
  66. package/lib/module/core/auth/AuthService.js.map +1 -0
  67. package/lib/module/core/devices/DeviceService.js +57 -0
  68. package/lib/module/core/devices/DeviceService.js.map +1 -0
  69. package/lib/module/core/files/FileService.js +171 -0
  70. package/lib/module/core/files/FileService.js.map +1 -0
  71. package/lib/module/core/index.js +25 -1690
  72. package/lib/module/core/index.js.map +1 -1
  73. package/lib/module/core/karma/KarmaService.js +95 -0
  74. package/lib/module/core/karma/KarmaService.js.map +1 -0
  75. package/lib/module/core/locations/LocationService.js +127 -0
  76. package/lib/module/core/locations/LocationService.js.map +1 -0
  77. package/lib/module/core/payments/PaymentService.js +119 -0
  78. package/lib/module/core/payments/PaymentService.js.map +1 -0
  79. package/lib/module/core/users/UserService.js +230 -0
  80. package/lib/module/core/users/UserService.js.map +1 -0
  81. package/lib/module/index.js +8 -4
  82. package/lib/module/index.js.map +1 -1
  83. package/lib/module/models/session.js +2 -0
  84. package/lib/module/{types/middleware.js.map → models/session.js.map} +1 -1
  85. package/lib/module/ui/context/OxyContext.js +28 -24
  86. package/lib/module/ui/context/OxyContext.js.map +1 -1
  87. package/lib/module/ui/screens/AccountSwitcherScreen.js +2 -2
  88. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  89. package/lib/module/ui/screens/FileManagementScreen.js +12 -12
  90. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  91. package/lib/module/ui/screens/ProfileScreen.js +2 -2
  92. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  93. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  94. package/lib/module/ui/screens/SignInScreen.js +1 -1
  95. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  96. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
  97. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  98. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
  99. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  100. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
  101. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  102. package/lib/module/ui/stores/followStore.js +4 -4
  103. package/lib/module/ui/stores/followStore.js.map +1 -1
  104. package/lib/module/utils/apiUtils.js +85 -0
  105. package/lib/module/utils/apiUtils.js.map +1 -0
  106. package/lib/module/utils/asyncUtils.js +202 -0
  107. package/lib/module/utils/asyncUtils.js.map +1 -0
  108. package/lib/module/utils/errorUtils.js +139 -0
  109. package/lib/module/utils/errorUtils.js.map +1 -0
  110. package/lib/module/utils/hookUtils.js +381 -0
  111. package/lib/module/utils/hookUtils.js.map +1 -0
  112. package/lib/module/utils/loggerUtils.js +149 -0
  113. package/lib/module/utils/loggerUtils.js.map +1 -0
  114. package/lib/module/utils/validationUtils.js +154 -0
  115. package/lib/module/utils/validationUtils.js.map +1 -0
  116. package/lib/typescript/core/OxyServices.d.ts +99 -0
  117. package/lib/typescript/core/OxyServices.d.ts.map +1 -0
  118. package/lib/typescript/core/OxyServicesMain.d.ts +33 -0
  119. package/lib/typescript/core/OxyServicesMain.d.ts.map +1 -0
  120. package/lib/typescript/core/analytics/AnalyticsService.d.ts +26 -0
  121. package/lib/typescript/core/analytics/AnalyticsService.d.ts.map +1 -0
  122. package/lib/typescript/core/auth/AuthService.d.ts +165 -0
  123. package/lib/typescript/core/auth/AuthService.d.ts.map +1 -0
  124. package/lib/typescript/core/devices/DeviceService.d.ts +20 -0
  125. package/lib/typescript/core/devices/DeviceService.d.ts.map +1 -0
  126. package/lib/typescript/core/files/FileService.d.ts +59 -0
  127. package/lib/typescript/core/files/FileService.d.ts.map +1 -0
  128. package/lib/typescript/core/index.d.ts +19 -656
  129. package/lib/typescript/core/index.d.ts.map +1 -1
  130. package/lib/typescript/core/karma/KarmaService.d.ts +50 -0
  131. package/lib/typescript/core/karma/KarmaService.d.ts.map +1 -0
  132. package/lib/typescript/core/locations/LocationService.d.ts +39 -0
  133. package/lib/typescript/core/locations/LocationService.d.ts.map +1 -0
  134. package/lib/typescript/core/payments/PaymentService.d.ts +50 -0
  135. package/lib/typescript/core/payments/PaymentService.d.ts.map +1 -0
  136. package/lib/typescript/core/users/UserService.d.ts +111 -0
  137. package/lib/typescript/core/users/UserService.d.ts.map +1 -0
  138. package/lib/typescript/index.d.ts +7 -3
  139. package/lib/typescript/index.d.ts.map +1 -1
  140. package/lib/typescript/models/{secureSession.d.ts → session.d.ts} +4 -4
  141. package/lib/typescript/models/session.d.ts.map +1 -0
  142. package/lib/typescript/ui/context/OxyContext.d.ts +2 -2
  143. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  144. package/lib/typescript/utils/apiUtils.d.ts +61 -0
  145. package/lib/typescript/utils/apiUtils.d.ts.map +1 -0
  146. package/lib/typescript/utils/asyncUtils.d.ts +64 -0
  147. package/lib/typescript/utils/asyncUtils.d.ts.map +1 -0
  148. package/lib/typescript/utils/errorUtils.d.ts +45 -0
  149. package/lib/typescript/utils/errorUtils.d.ts.map +1 -0
  150. package/lib/typescript/utils/hookUtils.d.ts +102 -0
  151. package/lib/typescript/utils/hookUtils.d.ts.map +1 -0
  152. package/lib/typescript/utils/loggerUtils.d.ts +49 -0
  153. package/lib/typescript/utils/loggerUtils.d.ts.map +1 -0
  154. package/lib/typescript/utils/validationUtils.d.ts +80 -0
  155. package/lib/typescript/utils/validationUtils.d.ts.map +1 -0
  156. package/package.json +2 -8
  157. package/src/core/OxyServices.ts +351 -0
  158. package/src/core/OxyServicesMain.ts +57 -0
  159. package/src/core/analytics/AnalyticsService.ts +64 -0
  160. package/src/core/auth/AuthService.ts +544 -0
  161. package/src/core/devices/DeviceService.ts +55 -0
  162. package/src/core/files/FileService.ts +194 -0
  163. package/src/core/index.ts +27 -1765
  164. package/src/core/karma/KarmaService.ts +104 -0
  165. package/src/core/locations/LocationService.ts +141 -0
  166. package/src/core/payments/PaymentService.ts +133 -0
  167. package/src/core/users/UserService.ts +241 -0
  168. package/src/index.ts +29 -8
  169. package/src/models/{secureSession.ts → session.ts} +5 -5
  170. package/src/ui/context/OxyContext.tsx +34 -30
  171. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  172. package/src/ui/screens/FileManagementScreen.tsx +12 -12
  173. package/src/ui/screens/ProfileScreen.tsx +3 -3
  174. package/src/ui/screens/SessionManagementScreen.tsx +2 -2
  175. package/src/ui/screens/SignInScreen.tsx +1 -1
  176. package/src/ui/screens/karma/KarmaCenterScreen.tsx +2 -2
  177. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +3 -3
  178. package/src/ui/screens/karma/KarmaRulesScreen.tsx +3 -3
  179. package/src/ui/stores/followStore.ts +4 -4
  180. package/src/utils/apiUtils.ts +102 -0
  181. package/src/utils/asyncUtils.ts +265 -0
  182. package/src/utils/errorUtils.ts +172 -0
  183. package/src/utils/hookUtils.ts +397 -0
  184. package/src/utils/loggerUtils.ts +153 -0
  185. package/src/utils/validationUtils.ts +158 -0
  186. package/lib/commonjs/middleware.js +0 -17
  187. package/lib/commonjs/middleware.js.map +0 -1
  188. package/lib/commonjs/models/secureSession.js +0 -2
  189. package/lib/commonjs/models/secureSession.js.map +0 -1
  190. package/lib/commonjs/types/middleware.js +0 -6
  191. package/lib/module/middleware.js +0 -12
  192. package/lib/module/middleware.js.map +0 -1
  193. package/lib/module/models/secureSession.js +0 -2
  194. package/lib/module/models/secureSession.js.map +0 -1
  195. package/lib/module/types/middleware.js +0 -4
  196. package/lib/typescript/middleware.d.ts +0 -9
  197. package/lib/typescript/middleware.d.ts.map +0 -1
  198. package/lib/typescript/models/secureSession.d.ts.map +0 -1
  199. package/lib/typescript/types/middleware.d.ts +0 -19
  200. package/lib/typescript/types/middleware.d.ts.map +0 -1
  201. package/src/middleware.ts +0 -11
  202. package/src/types/middleware.ts +0 -20
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Error handling utilities for consistent error processing
5
+ */
6
+
7
+ /**
8
+ * Common error codes
9
+ */
10
+ export const ErrorCodes = {
11
+ // Authentication errors
12
+ UNAUTHORIZED: 'UNAUTHORIZED',
13
+ FORBIDDEN: 'FORBIDDEN',
14
+ INVALID_TOKEN: 'INVALID_TOKEN',
15
+ MISSING_TOKEN: 'MISSING_TOKEN',
16
+ // Validation errors
17
+ VALIDATION_ERROR: 'VALIDATION_ERROR',
18
+ MISSING_PARAMETER: 'MISSING_PARAMETER',
19
+ INVALID_FORMAT: 'INVALID_FORMAT',
20
+ // Resource errors
21
+ NOT_FOUND: 'NOT_FOUND',
22
+ ALREADY_EXISTS: 'ALREADY_EXISTS',
23
+ CONFLICT: 'CONFLICT',
24
+ // Server errors
25
+ INTERNAL_ERROR: 'INTERNAL_ERROR',
26
+ SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
27
+ TIMEOUT: 'TIMEOUT',
28
+ // Network errors
29
+ NETWORK_ERROR: 'NETWORK_ERROR',
30
+ CONNECTION_FAILED: 'CONNECTION_FAILED'
31
+ };
32
+
33
+ /**
34
+ * Create a standardized API error
35
+ */
36
+ export function createApiError(message, code = ErrorCodes.INTERNAL_ERROR, status = 500, details) {
37
+ return {
38
+ message,
39
+ code,
40
+ status,
41
+ details
42
+ };
43
+ }
44
+
45
+ /**
46
+ * Handle common HTTP errors and convert to ApiError
47
+ */
48
+ export function handleHttpError(error) {
49
+ // If it's already an ApiError, return it
50
+ if (error && typeof error === 'object' && 'code' in error && 'status' in error) {
51
+ return error;
52
+ }
53
+
54
+ // Handle axios errors
55
+ if (error?.response) {
56
+ const {
57
+ status,
58
+ data
59
+ } = error.response;
60
+ return createApiError(data?.message || `HTTP ${status} error`, data?.code || getErrorCodeFromStatus(status), status, data);
61
+ }
62
+
63
+ // Handle network errors
64
+ if (error?.request) {
65
+ return createApiError('Network error - no response received', ErrorCodes.NETWORK_ERROR, 0);
66
+ }
67
+
68
+ // Handle other errors
69
+ return createApiError(error?.message || 'Unknown error occurred', ErrorCodes.INTERNAL_ERROR, 500);
70
+ }
71
+
72
+ /**
73
+ * Get error code from HTTP status
74
+ */
75
+ function getErrorCodeFromStatus(status) {
76
+ switch (status) {
77
+ case 400:
78
+ return ErrorCodes.VALIDATION_ERROR;
79
+ case 401:
80
+ return ErrorCodes.UNAUTHORIZED;
81
+ case 403:
82
+ return ErrorCodes.FORBIDDEN;
83
+ case 404:
84
+ return ErrorCodes.NOT_FOUND;
85
+ case 409:
86
+ return ErrorCodes.CONFLICT;
87
+ case 422:
88
+ return ErrorCodes.VALIDATION_ERROR;
89
+ case 500:
90
+ return ErrorCodes.INTERNAL_ERROR;
91
+ case 503:
92
+ return ErrorCodes.SERVICE_UNAVAILABLE;
93
+ default:
94
+ return ErrorCodes.INTERNAL_ERROR;
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Validate required fields and throw error if missing
100
+ */
101
+ export function validateRequiredFields(data, fields) {
102
+ const missing = fields.filter(field => !data[field]);
103
+ if (missing.length > 0) {
104
+ throw createApiError(`Missing required fields: ${missing.join(', ')}`, ErrorCodes.MISSING_PARAMETER, 400);
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Safe error logging with context
110
+ */
111
+ export function logError(error, context) {
112
+ const prefix = context ? `[${context}]` : '[Error]';
113
+ if (error instanceof Error) {
114
+ console.error(`${prefix} ${error.message}`, error.stack);
115
+ } else {
116
+ console.error(`${prefix}`, error);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Retry function with exponential backoff
122
+ */
123
+ export async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000) {
124
+ let lastError;
125
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
126
+ try {
127
+ return await fn();
128
+ } catch (error) {
129
+ lastError = error;
130
+ if (attempt === maxRetries) {
131
+ break;
132
+ }
133
+ const delay = baseDelay * Math.pow(2, attempt);
134
+ await new Promise(resolve => setTimeout(resolve, delay));
135
+ }
136
+ }
137
+ throw lastError;
138
+ }
139
+ //# sourceMappingURL=errorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ErrorCodes","UNAUTHORIZED","FORBIDDEN","INVALID_TOKEN","MISSING_TOKEN","VALIDATION_ERROR","MISSING_PARAMETER","INVALID_FORMAT","NOT_FOUND","ALREADY_EXISTS","CONFLICT","INTERNAL_ERROR","SERVICE_UNAVAILABLE","TIMEOUT","NETWORK_ERROR","CONNECTION_FAILED","createApiError","message","code","status","details","handleHttpError","error","response","data","getErrorCodeFromStatus","request","validateRequiredFields","fields","missing","filter","field","length","join","logError","context","prefix","Error","console","stack","retryWithBackoff","fn","maxRetries","baseDelay","lastError","attempt","delay","Math","pow","Promise","resolve","setTimeout"],"sourceRoot":"../../../src","sources":["utils/errorUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * React hook utilities for common patterns and state management
5
+ */
6
+
7
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
8
+
9
+ /**
10
+ * Hook for managing async operations with loading, error, and data states
11
+ */
12
+ export function useAsync(asyncFn, deps = []) {
13
+ const [data, setData] = useState(null);
14
+ const [loading, setLoading] = useState(false);
15
+ const [error, setError] = useState(null);
16
+ const execute = useCallback(async () => {
17
+ setLoading(true);
18
+ setError(null);
19
+ try {
20
+ const result = await asyncFn();
21
+ setData(result);
22
+ return result;
23
+ } catch (err) {
24
+ const error = err instanceof Error ? err : new Error(String(err));
25
+ setError(error);
26
+ throw error;
27
+ } finally {
28
+ setLoading(false);
29
+ }
30
+ }, deps);
31
+ return {
32
+ data,
33
+ loading,
34
+ error,
35
+ execute
36
+ };
37
+ }
38
+
39
+ /**
40
+ * Hook for managing async operations that execute on mount
41
+ */
42
+ export function useAsyncEffect(asyncFn, deps = []) {
43
+ const [data, setData] = useState(null);
44
+ const [loading, setLoading] = useState(true);
45
+ const [error, setError] = useState(null);
46
+ useEffect(() => {
47
+ let mounted = true;
48
+ const execute = async () => {
49
+ try {
50
+ const result = await asyncFn();
51
+ if (mounted) {
52
+ setData(result);
53
+ setLoading(false);
54
+ }
55
+ } catch (err) {
56
+ if (mounted) {
57
+ const error = err instanceof Error ? err : new Error(String(err));
58
+ setError(error);
59
+ setLoading(false);
60
+ }
61
+ }
62
+ };
63
+ execute();
64
+ return () => {
65
+ mounted = false;
66
+ };
67
+ }, deps);
68
+ return {
69
+ data,
70
+ loading,
71
+ error
72
+ };
73
+ }
74
+
75
+ /**
76
+ * Hook for debounced values
77
+ */
78
+ export function useDebounce(value, delay) {
79
+ const [debouncedValue, setDebouncedValue] = useState(value);
80
+ useEffect(() => {
81
+ const handler = setTimeout(() => {
82
+ setDebouncedValue(value);
83
+ }, delay);
84
+ return () => {
85
+ clearTimeout(handler);
86
+ };
87
+ }, [value, delay]);
88
+ return debouncedValue;
89
+ }
90
+
91
+ /**
92
+ * Hook for throttled values
93
+ */
94
+ export function useThrottle(value, delay) {
95
+ const [throttledValue, setThrottledValue] = useState(value);
96
+ const lastRun = useRef(Date.now());
97
+ useEffect(() => {
98
+ const handler = setTimeout(() => {
99
+ if (Date.now() - lastRun.current >= delay) {
100
+ setThrottledValue(value);
101
+ lastRun.current = Date.now();
102
+ }
103
+ }, delay - (Date.now() - lastRun.current));
104
+ return () => {
105
+ clearTimeout(handler);
106
+ };
107
+ }, [value, delay]);
108
+ return throttledValue;
109
+ }
110
+
111
+ /**
112
+ * Hook for previous value
113
+ */
114
+ export function usePrevious(value) {
115
+ const ref = useRef();
116
+ useEffect(() => {
117
+ ref.current = value;
118
+ });
119
+ return ref.current;
120
+ }
121
+
122
+ /**
123
+ * Hook for boolean state with toggle
124
+ */
125
+ export function useToggle(initialValue = false) {
126
+ const [value, setValue] = useState(initialValue);
127
+ const toggle = useCallback(() => setValue(v => !v), []);
128
+ const setTrue = useCallback(() => setValue(true), []);
129
+ const setFalse = useCallback(() => setValue(false), []);
130
+ return {
131
+ value,
132
+ toggle,
133
+ setTrue,
134
+ setFalse,
135
+ setValue
136
+ };
137
+ }
138
+
139
+ /**
140
+ * Hook for counter state
141
+ */
142
+ export function useCounter(initialValue = 0) {
143
+ const [count, setCount] = useState(initialValue);
144
+ const increment = useCallback(() => setCount(c => c + 1), []);
145
+ const decrement = useCallback(() => setCount(c => c - 1), []);
146
+ const reset = useCallback(() => setCount(initialValue), [initialValue]);
147
+ const setValue = useCallback(value => setCount(value), []);
148
+ return {
149
+ count,
150
+ increment,
151
+ decrement,
152
+ reset,
153
+ setValue
154
+ };
155
+ }
156
+
157
+ /**
158
+ * Hook for local storage
159
+ */
160
+ export function useLocalStorage(key, initialValue) {
161
+ const [storedValue, setStoredValue] = useState(() => {
162
+ try {
163
+ const item = window.localStorage.getItem(key);
164
+ return item ? JSON.parse(item) : initialValue;
165
+ } catch (error) {
166
+ console.error(`Error reading localStorage key "${key}":`, error);
167
+ return initialValue;
168
+ }
169
+ });
170
+ const setValue = useCallback(value => {
171
+ try {
172
+ const valueToStore = value instanceof Function ? value(storedValue) : value;
173
+ setStoredValue(valueToStore);
174
+ window.localStorage.setItem(key, JSON.stringify(valueToStore));
175
+ } catch (error) {
176
+ console.error(`Error setting localStorage key "${key}":`, error);
177
+ }
178
+ }, [key, storedValue]);
179
+ return [storedValue, setValue];
180
+ }
181
+
182
+ /**
183
+ * Hook for session storage
184
+ */
185
+ export function useSessionStorage(key, initialValue) {
186
+ const [storedValue, setStoredValue] = useState(() => {
187
+ try {
188
+ const item = window.sessionStorage.getItem(key);
189
+ return item ? JSON.parse(item) : initialValue;
190
+ } catch (error) {
191
+ console.error(`Error reading sessionStorage key "${key}":`, error);
192
+ return initialValue;
193
+ }
194
+ });
195
+ const setValue = useCallback(value => {
196
+ try {
197
+ const valueToStore = value instanceof Function ? value(storedValue) : value;
198
+ setStoredValue(valueToStore);
199
+ window.sessionStorage.setItem(key, JSON.stringify(valueToStore));
200
+ } catch (error) {
201
+ console.error(`Error setting sessionStorage key "${key}":`, error);
202
+ }
203
+ }, [key, storedValue]);
204
+ return [storedValue, setValue];
205
+ }
206
+
207
+ /**
208
+ * Hook for window size
209
+ */
210
+ export function useWindowSize() {
211
+ const [windowSize, setWindowSize] = useState({
212
+ width: window.innerWidth,
213
+ height: window.innerHeight
214
+ });
215
+ useEffect(() => {
216
+ const handleResize = () => {
217
+ setWindowSize({
218
+ width: window.innerWidth,
219
+ height: window.innerHeight
220
+ });
221
+ };
222
+ window.addEventListener('resize', handleResize);
223
+ return () => window.removeEventListener('resize', handleResize);
224
+ }, []);
225
+ return windowSize;
226
+ }
227
+
228
+ /**
229
+ * Hook for scroll position
230
+ */
231
+ export function useScrollPosition() {
232
+ const [scrollPosition, setScrollPosition] = useState(0);
233
+ useEffect(() => {
234
+ const handleScroll = () => {
235
+ setScrollPosition(window.pageYOffset);
236
+ };
237
+ window.addEventListener('scroll', handleScroll);
238
+ return () => window.removeEventListener('scroll', handleScroll);
239
+ }, []);
240
+ return scrollPosition;
241
+ }
242
+
243
+ /**
244
+ * Hook for online/offline status
245
+ */
246
+ export function useOnlineStatus() {
247
+ const [isOnline, setIsOnline] = useState(navigator.onLine);
248
+ useEffect(() => {
249
+ const handleOnline = () => setIsOnline(true);
250
+ const handleOffline = () => setIsOnline(false);
251
+ window.addEventListener('online', handleOnline);
252
+ window.addEventListener('offline', handleOffline);
253
+ return () => {
254
+ window.removeEventListener('online', handleOnline);
255
+ window.removeEventListener('offline', handleOffline);
256
+ };
257
+ }, []);
258
+ return isOnline;
259
+ }
260
+
261
+ /**
262
+ * Hook for media queries
263
+ */
264
+ export function useMediaQuery(query) {
265
+ const [matches, setMatches] = useState(false);
266
+ useEffect(() => {
267
+ const media = window.matchMedia(query);
268
+ if (media.matches !== matches) {
269
+ setMatches(media.matches);
270
+ }
271
+ const listener = () => setMatches(media.matches);
272
+ media.addEventListener('change', listener);
273
+ return () => media.removeEventListener('change', listener);
274
+ }, [matches, query]);
275
+ return matches;
276
+ }
277
+
278
+ /**
279
+ * Hook for keyboard events
280
+ */
281
+ export function useKeyPress(targetKey) {
282
+ const [keyPressed, setKeyPressed] = useState(false);
283
+ useEffect(() => {
284
+ const downHandler = ({
285
+ key
286
+ }) => {
287
+ if (key === targetKey) {
288
+ setKeyPressed(true);
289
+ }
290
+ };
291
+ const upHandler = ({
292
+ key
293
+ }) => {
294
+ if (key === targetKey) {
295
+ setKeyPressed(false);
296
+ }
297
+ };
298
+ window.addEventListener('keydown', downHandler);
299
+ window.addEventListener('keyup', upHandler);
300
+ return () => {
301
+ window.removeEventListener('keydown', downHandler);
302
+ window.removeEventListener('keyup', upHandler);
303
+ };
304
+ }, [targetKey]);
305
+ return keyPressed;
306
+ }
307
+
308
+ /**
309
+ * Hook for click outside detection
310
+ */
311
+ export function useClickOutside(ref, handler) {
312
+ useEffect(() => {
313
+ const listener = event => {
314
+ if (!ref.current || ref.current.contains(event.target)) {
315
+ return;
316
+ }
317
+ handler();
318
+ };
319
+ document.addEventListener('mousedown', listener);
320
+ document.addEventListener('touchstart', listener);
321
+ return () => {
322
+ document.removeEventListener('mousedown', listener);
323
+ document.removeEventListener('touchstart', listener);
324
+ };
325
+ }, [ref, handler]);
326
+ }
327
+
328
+ /**
329
+ * Hook for form validation
330
+ */
331
+ export function useFormValidation(initialValues, validationSchema) {
332
+ const [values, setValues] = useState(initialValues);
333
+ const [errors, setErrors] = useState({});
334
+ const [touched, setTouched] = useState({});
335
+ const validate = useCallback(valuesToValidate => {
336
+ return validationSchema(valuesToValidate);
337
+ }, [validationSchema]);
338
+ const setValue = useCallback((field, value) => {
339
+ setValues(prev => ({
340
+ ...prev,
341
+ [field]: value
342
+ }));
343
+ if (touched[field]) {
344
+ const newErrors = validate({
345
+ ...values,
346
+ [field]: value
347
+ });
348
+ setErrors(prev => ({
349
+ ...prev,
350
+ [field]: newErrors[field]
351
+ }));
352
+ }
353
+ }, [values, touched, validate]);
354
+ const setTouchedField = useCallback(field => {
355
+ setTouched(prev => ({
356
+ ...prev,
357
+ [field]: true
358
+ }));
359
+ const newErrors = validate(values);
360
+ setErrors(prev => ({
361
+ ...prev,
362
+ [field]: newErrors[field]
363
+ }));
364
+ }, [values, validate]);
365
+ const isValid = useMemo(() => {
366
+ const validationErrors = validate(values);
367
+ return Object.keys(validationErrors).length === 0;
368
+ }, [values, validate]);
369
+ return {
370
+ values,
371
+ errors,
372
+ touched,
373
+ isValid,
374
+ setValue,
375
+ setTouchedField,
376
+ setValues,
377
+ setErrors,
378
+ setTouched
379
+ };
380
+ }
381
+ //# sourceMappingURL=hookUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useEffect","useCallback","useRef","useMemo","useAsync","asyncFn","deps","data","setData","loading","setLoading","error","setError","execute","result","err","Error","String","useAsyncEffect","mounted","useDebounce","value","delay","debouncedValue","setDebouncedValue","handler","setTimeout","clearTimeout","useThrottle","throttledValue","setThrottledValue","lastRun","Date","now","current","usePrevious","ref","useToggle","initialValue","setValue","toggle","v","setTrue","setFalse","useCounter","count","setCount","increment","c","decrement","reset","useLocalStorage","key","storedValue","setStoredValue","item","window","localStorage","getItem","JSON","parse","console","valueToStore","Function","setItem","stringify","useSessionStorage","sessionStorage","useWindowSize","windowSize","setWindowSize","width","innerWidth","height","innerHeight","handleResize","addEventListener","removeEventListener","useScrollPosition","scrollPosition","setScrollPosition","handleScroll","pageYOffset","useOnlineStatus","isOnline","setIsOnline","navigator","onLine","handleOnline","handleOffline","useMediaQuery","query","matches","setMatches","media","matchMedia","listener","useKeyPress","targetKey","keyPressed","setKeyPressed","downHandler","upHandler","useClickOutside","event","contains","target","document","useFormValidation","initialValues","validationSchema","values","setValues","errors","setErrors","touched","setTouched","validate","valuesToValidate","field","prev","newErrors","setTouchedField","isValid","validationErrors","Object","keys","length"],"sourceRoot":"../../../src","sources":["utils/hookUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Centralized logging utilities for consistent logging across the application
5
+ */
6
+
7
+ export let LogLevel = /*#__PURE__*/function (LogLevel) {
8
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
9
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
10
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
11
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
12
+ LogLevel[LogLevel["NONE"] = 4] = "NONE";
13
+ return LogLevel;
14
+ }({});
15
+ class Logger {
16
+ level = LogLevel.INFO;
17
+ isDevelopment = process.env.NODE_ENV === 'development';
18
+ setLevel(level) {
19
+ this.level = level;
20
+ }
21
+ shouldLog(level) {
22
+ return level >= this.level;
23
+ }
24
+ formatMessage(level, message, context) {
25
+ const timestamp = new Date().toISOString();
26
+ const contextStr = context ? ` [${Object.entries(context).map(([k, v]) => `${k}:${v}`).join(', ')}]` : '';
27
+ return `[${timestamp}] ${level}${contextStr}: ${message}`;
28
+ }
29
+ debug(message, context, ...args) {
30
+ if (this.shouldLog(LogLevel.DEBUG)) {
31
+ const formattedMessage = this.formatMessage('DEBUG', message, context);
32
+ if (this.isDevelopment) {
33
+ console.log(formattedMessage, ...args);
34
+ }
35
+ }
36
+ }
37
+ info(message, context, ...args) {
38
+ if (this.shouldLog(LogLevel.INFO)) {
39
+ const formattedMessage = this.formatMessage('INFO', message, context);
40
+ console.log(formattedMessage, ...args);
41
+ }
42
+ }
43
+ warn(message, context, ...args) {
44
+ if (this.shouldLog(LogLevel.WARN)) {
45
+ const formattedMessage = this.formatMessage('WARN', message, context);
46
+ console.warn(formattedMessage, ...args);
47
+ }
48
+ }
49
+ error(message, error, context, ...args) {
50
+ if (this.shouldLog(LogLevel.ERROR)) {
51
+ const formattedMessage = this.formatMessage('ERROR', message, context);
52
+ if (error) {
53
+ console.error(formattedMessage, error, ...args);
54
+ } else {
55
+ console.error(formattedMessage, ...args);
56
+ }
57
+ }
58
+ }
59
+
60
+ // Specialized logging methods for common patterns
61
+ auth(message, context, ...args) {
62
+ this.info(`🔐 ${message}`, {
63
+ ...context,
64
+ category: 'auth'
65
+ }, ...args);
66
+ }
67
+ api(message, context, ...args) {
68
+ this.info(`🌐 ${message}`, {
69
+ ...context,
70
+ category: 'api'
71
+ }, ...args);
72
+ }
73
+ session(message, context, ...args) {
74
+ this.info(`📱 ${message}`, {
75
+ ...context,
76
+ category: 'session'
77
+ }, ...args);
78
+ }
79
+ user(message, context, ...args) {
80
+ this.info(`👤 ${message}`, {
81
+ ...context,
82
+ category: 'user'
83
+ }, ...args);
84
+ }
85
+ device(message, context, ...args) {
86
+ this.info(`📱 ${message}`, {
87
+ ...context,
88
+ category: 'device'
89
+ }, ...args);
90
+ }
91
+ payment(message, context, ...args) {
92
+ this.info(`💳 ${message}`, {
93
+ ...context,
94
+ category: 'payment'
95
+ }, ...args);
96
+ }
97
+
98
+ // Performance logging
99
+ performance(operation, duration, context) {
100
+ const level = duration > 1000 ? LogLevel.WARN : LogLevel.INFO;
101
+ const message = `⏱️ ${operation} completed in ${duration}ms`;
102
+ if (level === LogLevel.WARN) {
103
+ this.warn(message, {
104
+ ...context,
105
+ category: 'performance',
106
+ duration
107
+ });
108
+ } else {
109
+ this.info(message, {
110
+ ...context,
111
+ category: 'performance',
112
+ duration
113
+ });
114
+ }
115
+ }
116
+
117
+ // Error logging with stack trace
118
+ errorWithStack(message, error, context) {
119
+ this.error(message, error, {
120
+ ...context,
121
+ stack: error.stack
122
+ });
123
+ }
124
+
125
+ // Group related log messages
126
+ group(label, fn) {
127
+ if (this.isDevelopment && this.shouldLog(LogLevel.DEBUG)) {
128
+ console.group(label);
129
+ fn();
130
+ console.groupEnd();
131
+ } else {
132
+ fn();
133
+ }
134
+ }
135
+ }
136
+
137
+ // Create singleton instance
138
+ export const logger = new Logger();
139
+
140
+ // Convenience functions for common logging patterns
141
+ export const logAuth = (message, context, ...args) => logger.auth(message, context, ...args);
142
+ export const logApi = (message, context, ...args) => logger.api(message, context, ...args);
143
+ export const logSession = (message, context, ...args) => logger.session(message, context, ...args);
144
+ export const logUser = (message, context, ...args) => logger.user(message, context, ...args);
145
+ export const logDevice = (message, context, ...args) => logger.device(message, context, ...args);
146
+ export const logPayment = (message, context, ...args) => logger.payment(message, context, ...args);
147
+ export const logError = (message, error, context, ...args) => logger.error(message, error, context, ...args);
148
+ export const logPerformance = (operation, duration, context) => logger.performance(operation, duration, context);
149
+ //# sourceMappingURL=loggerUtils.js.map