react-native-healthkit-bridge
Version:
A comprehensive React Native bridge for Apple HealthKit with TypeScript support, advanced authorization, and flexible data queries
114 lines (103 loc) • 2.92 kB
text/typescript
export const HEALTHKIT_CONFIG = {
// Default configurations
DEFAULT_DAYS: 7,
MOCK_DELAY: 1000,
AUTHORIZATION_CHANCE: 0.9,
// Cache
CACHE_TTL: 300000, // 5 minutos
CACHE_MAX_SIZE: 100,
CACHE_ENABLED: true,
// Performance
MAX_RETRIES: 3,
RETRY_DELAY: 1000,
QUERY_TIMEOUT: 30000, // 30 segundos
// Metrics
METRICS_ENABLED: true,
METRICS_RETENTION: 24 * 60 * 60 * 1000, // 24 horas
// Logging
LOGGING_ENABLED: true,
LOG_LEVEL: 'info' as 'debug' | 'info' | 'warn' | 'error',
// Categories
CATEGORIES: {
ACTIVITY: 'activity',
HEART: 'heart',
BODY: 'body',
NUTRITION: 'nutrition',
SLEEP: 'sleep',
MINDFULNESS: 'mindfulness',
WORKOUT: 'workout',
HEARING: 'hearing'
} as const,
// Default data types
DEFAULT_TYPES: {
QUANTITY: [
'stepCount',
'distanceWalkingRunning',
'activeEnergyBurned',
'heartRate',
'bodyMass',
'height',
'bloodPressureSystolic',
'bloodPressureDiastolic',
'bloodGlucose',
'oxygenSaturation'
],
CATEGORY: [
'sleepAnalysis',
'mindfulSession',
'workoutType'
],
SPECIAL: [
'workout',
'audiogram',
'electrocardiogram'
]
},
// Default units
DEFAULT_UNITS: {
stepCount: 'count',
distanceWalkingRunning: 'm',
activeEnergyBurned: 'kcal',
heartRate: 'count/min',
bodyMass: 'kg',
height: 'm',
bloodPressureSystolic: 'mmHg',
bloodPressureDiastolic: 'mmHg',
bloodGlucose: 'mg/dL',
oxygenSaturation: '%',
flightsClimbed: 'count',
appleExerciseTime: 'min'
},
// Validations
VALIDATION: {
MAX_DAYS: 365,
MIN_DAYS: 1,
MAX_DATE_RANGE: 365 * 24 * 60 * 60 * 1000, // 1 ano
MIN_DATE_RANGE: 60 * 1000, // 1 minuto
MAX_IDENTIFIER_LENGTH: 100,
MAX_BATCH_SIZE: 50
},
// Erros
ERROR_CODES: {
UNAUTHORIZED: 'HEALTHKIT_UNAUTHORIZED',
NOT_AVAILABLE: 'HEALTHKIT_NOT_AVAILABLE',
INVALID_PARAMETER: 'HEALTHKIT_INVALID_PARAMETER',
QUERY_FAILED: 'HEALTHKIT_QUERY_FAILED',
TIMEOUT: 'HEALTHKIT_TIMEOUT',
NETWORK_ERROR: 'HEALTHKIT_NETWORK_ERROR',
UNKNOWN_ERROR: 'HEALTHKIT_UNKNOWN_ERROR'
},
// Error messages
ERROR_MESSAGES: {
UNAUTHORIZED: 'Access to HealthKit not authorized',
NOT_AVAILABLE: 'HealthKit is not available on this platform',
INVALID_PARAMETER: 'Invalid parameter provided',
QUERY_FAILED: 'Failed to execute query on HealthKit',
TIMEOUT: 'Timeout executing operation',
NETWORK_ERROR: 'Network error accessing HealthKit',
UNKNOWN_ERROR: 'Unknown error occurred'
}
} as const;
export type HealthKitConfig = typeof HEALTHKIT_CONFIG;
export type HealthKitCategory = typeof HEALTHKIT_CONFIG.CATEGORIES[keyof typeof HEALTHKIT_CONFIG.CATEGORIES];
export type HealthKitErrorCode = typeof HEALTHKIT_CONFIG.ERROR_CODES[keyof typeof HEALTHKIT_CONFIG.ERROR_CODES];