@oxyhq/services 5.9.2 → 5.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -33
- package/lib/commonjs/core/OxyServices.js +159 -0
- package/lib/commonjs/core/OxyServices.js.map +1 -0
- package/lib/commonjs/core/OxyServicesMain.js +51 -0
- package/lib/commonjs/core/OxyServicesMain.js.map +1 -0
- package/lib/commonjs/core/analytics/AnalyticsService.js +67 -0
- package/lib/commonjs/core/analytics/AnalyticsService.js.map +1 -0
- package/lib/commonjs/core/auth/AuthService.js +526 -0
- package/lib/commonjs/core/auth/AuthService.js.map +1 -0
- package/lib/commonjs/core/devices/DeviceService.js +61 -0
- package/lib/commonjs/core/devices/DeviceService.js.map +1 -0
- package/lib/commonjs/core/files/FileService.js +176 -0
- package/lib/commonjs/core/files/FileService.js.map +1 -0
- package/lib/commonjs/core/index.js +103 -1701
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/core/karma/KarmaService.js +100 -0
- package/lib/commonjs/core/karma/KarmaService.js.map +1 -0
- package/lib/commonjs/core/locations/LocationService.js +131 -0
- package/lib/commonjs/core/locations/LocationService.js.map +1 -0
- package/lib/commonjs/core/payments/PaymentService.js +124 -0
- package/lib/commonjs/core/payments/PaymentService.js.map +1 -0
- package/lib/commonjs/core/users/UserService.js +234 -0
- package/lib/commonjs/core/users/UserService.js.map +1 -0
- package/lib/commonjs/index.js +164 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/session.js +2 -0
- package/lib/commonjs/{types/middleware.js.map → models/session.js.map} +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +28 -24
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +2 -2
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +12 -12
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +2 -2
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/commonjs/ui/stores/followStore.js +4 -4
- package/lib/commonjs/ui/stores/followStore.js.map +1 -1
- package/lib/commonjs/utils/apiUtils.js +93 -0
- package/lib/commonjs/utils/apiUtils.js.map +1 -0
- package/lib/commonjs/utils/asyncUtils.js +219 -0
- package/lib/commonjs/utils/asyncUtils.js.map +1 -0
- package/lib/commonjs/utils/errorUtils.js +148 -0
- package/lib/commonjs/utils/errorUtils.js.map +1 -0
- package/lib/commonjs/utils/hookUtils.js +399 -0
- package/lib/commonjs/utils/hookUtils.js.map +1 -0
- package/lib/commonjs/utils/loggerUtils.js +160 -0
- package/lib/commonjs/utils/loggerUtils.js.map +1 -0
- package/lib/commonjs/utils/validationUtils.js +174 -0
- package/lib/commonjs/utils/validationUtils.js.map +1 -0
- package/lib/module/core/OxyServices.js +153 -0
- package/lib/module/core/OxyServices.js.map +1 -0
- package/lib/module/core/OxyServicesMain.js +47 -0
- package/lib/module/core/OxyServicesMain.js.map +1 -0
- package/lib/module/core/analytics/AnalyticsService.js +62 -0
- package/lib/module/core/analytics/AnalyticsService.js.map +1 -0
- package/lib/module/core/auth/AuthService.js +521 -0
- package/lib/module/core/auth/AuthService.js.map +1 -0
- package/lib/module/core/devices/DeviceService.js +57 -0
- package/lib/module/core/devices/DeviceService.js.map +1 -0
- package/lib/module/core/files/FileService.js +171 -0
- package/lib/module/core/files/FileService.js.map +1 -0
- package/lib/module/core/index.js +25 -1690
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/karma/KarmaService.js +95 -0
- package/lib/module/core/karma/KarmaService.js.map +1 -0
- package/lib/module/core/locations/LocationService.js +127 -0
- package/lib/module/core/locations/LocationService.js.map +1 -0
- package/lib/module/core/payments/PaymentService.js +119 -0
- package/lib/module/core/payments/PaymentService.js.map +1 -0
- package/lib/module/core/users/UserService.js +230 -0
- package/lib/module/core/users/UserService.js.map +1 -0
- package/lib/module/index.js +8 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/session.js +2 -0
- package/lib/module/{types/middleware.js.map → models/session.js.map} +1 -1
- package/lib/module/ui/context/OxyContext.js +28 -24
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +2 -2
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +12 -12
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +2 -2
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/SignInScreen.js +1 -1
- package/lib/module/ui/screens/SignInScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/stores/followStore.js +4 -4
- package/lib/module/ui/stores/followStore.js.map +1 -1
- package/lib/module/utils/apiUtils.js +85 -0
- package/lib/module/utils/apiUtils.js.map +1 -0
- package/lib/module/utils/asyncUtils.js +202 -0
- package/lib/module/utils/asyncUtils.js.map +1 -0
- package/lib/module/utils/errorUtils.js +139 -0
- package/lib/module/utils/errorUtils.js.map +1 -0
- package/lib/module/utils/hookUtils.js +381 -0
- package/lib/module/utils/hookUtils.js.map +1 -0
- package/lib/module/utils/loggerUtils.js +149 -0
- package/lib/module/utils/loggerUtils.js.map +1 -0
- package/lib/module/utils/validationUtils.js +154 -0
- package/lib/module/utils/validationUtils.js.map +1 -0
- package/lib/typescript/core/OxyServices.d.ts +64 -0
- package/lib/typescript/core/OxyServices.d.ts.map +1 -0
- package/lib/typescript/core/OxyServicesMain.d.ts +33 -0
- package/lib/typescript/core/OxyServicesMain.d.ts.map +1 -0
- package/lib/typescript/core/analytics/AnalyticsService.d.ts +26 -0
- package/lib/typescript/core/analytics/AnalyticsService.d.ts.map +1 -0
- package/lib/typescript/core/auth/AuthService.d.ts +165 -0
- package/lib/typescript/core/auth/AuthService.d.ts.map +1 -0
- package/lib/typescript/core/devices/DeviceService.d.ts +20 -0
- package/lib/typescript/core/devices/DeviceService.d.ts.map +1 -0
- package/lib/typescript/core/files/FileService.d.ts +59 -0
- package/lib/typescript/core/files/FileService.d.ts.map +1 -0
- package/lib/typescript/core/index.d.ts +19 -656
- package/lib/typescript/core/index.d.ts.map +1 -1
- package/lib/typescript/core/karma/KarmaService.d.ts +50 -0
- package/lib/typescript/core/karma/KarmaService.d.ts.map +1 -0
- package/lib/typescript/core/locations/LocationService.d.ts +39 -0
- package/lib/typescript/core/locations/LocationService.d.ts.map +1 -0
- package/lib/typescript/core/payments/PaymentService.d.ts +50 -0
- package/lib/typescript/core/payments/PaymentService.d.ts.map +1 -0
- package/lib/typescript/core/users/UserService.d.ts +111 -0
- package/lib/typescript/core/users/UserService.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +7 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/models/{secureSession.d.ts → session.d.ts} +4 -4
- package/lib/typescript/models/session.d.ts.map +1 -0
- package/lib/typescript/ui/context/OxyContext.d.ts +2 -2
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/utils/apiUtils.d.ts +61 -0
- package/lib/typescript/utils/apiUtils.d.ts.map +1 -0
- package/lib/typescript/utils/asyncUtils.d.ts +64 -0
- package/lib/typescript/utils/asyncUtils.d.ts.map +1 -0
- package/lib/typescript/utils/errorUtils.d.ts +45 -0
- package/lib/typescript/utils/errorUtils.d.ts.map +1 -0
- package/lib/typescript/utils/hookUtils.d.ts +102 -0
- package/lib/typescript/utils/hookUtils.d.ts.map +1 -0
- package/lib/typescript/utils/loggerUtils.d.ts +49 -0
- package/lib/typescript/utils/loggerUtils.d.ts.map +1 -0
- package/lib/typescript/utils/validationUtils.d.ts +80 -0
- package/lib/typescript/utils/validationUtils.d.ts.map +1 -0
- package/package.json +2 -8
- package/src/core/OxyServices.ts +168 -0
- package/src/core/OxyServicesMain.ts +57 -0
- package/src/core/analytics/AnalyticsService.ts +64 -0
- package/src/core/auth/AuthService.ts +544 -0
- package/src/core/devices/DeviceService.ts +55 -0
- package/src/core/files/FileService.ts +194 -0
- package/src/core/index.ts +27 -1765
- package/src/core/karma/KarmaService.ts +104 -0
- package/src/core/locations/LocationService.ts +141 -0
- package/src/core/payments/PaymentService.ts +133 -0
- package/src/core/users/UserService.ts +241 -0
- package/src/index.ts +29 -8
- package/src/models/{secureSession.ts → session.ts} +5 -5
- package/src/ui/context/OxyContext.tsx +34 -30
- package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
- package/src/ui/screens/FileManagementScreen.tsx +12 -12
- package/src/ui/screens/ProfileScreen.tsx +3 -3
- package/src/ui/screens/SessionManagementScreen.tsx +2 -2
- package/src/ui/screens/SignInScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +2 -2
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +3 -3
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +3 -3
- package/src/ui/stores/followStore.ts +4 -4
- package/src/utils/apiUtils.ts +102 -0
- package/src/utils/asyncUtils.ts +265 -0
- package/src/utils/errorUtils.ts +172 -0
- package/src/utils/hookUtils.ts +397 -0
- package/src/utils/loggerUtils.ts +153 -0
- package/src/utils/validationUtils.ts +158 -0
- package/lib/commonjs/middleware.js +0 -17
- package/lib/commonjs/middleware.js.map +0 -1
- package/lib/commonjs/models/secureSession.js +0 -2
- package/lib/commonjs/models/secureSession.js.map +0 -1
- package/lib/commonjs/types/middleware.js +0 -6
- package/lib/module/middleware.js +0 -12
- package/lib/module/middleware.js.map +0 -1
- package/lib/module/models/secureSession.js +0 -2
- package/lib/module/models/secureSession.js.map +0 -1
- package/lib/module/types/middleware.js +0 -4
- package/lib/typescript/middleware.d.ts +0 -9
- package/lib/typescript/middleware.d.ts.map +0 -1
- package/lib/typescript/models/secureSession.d.ts.map +0 -1
- package/lib/typescript/types/middleware.d.ts +0 -19
- package/lib/typescript/types/middleware.d.ts.map +0 -1
- package/src/middleware.ts +0 -11
- 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
|