UNPKG

react-native-healthkit-bridge

Version:

A comprehensive React Native bridge for Apple HealthKit with TypeScript support, advanced authorization, and flexible data queries

283 lines (257 loc) 5.61 kB
// Extended sample types with full metadata export interface QuantitySampleDetailed { value: number; startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface CategorySampleDetailed { value: number; startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface SourceRevision { source: { name: string; bundleIdentifier: string; }; version: string; productType: string; systemVersion: string; } // Statistics options export type StatisticsOptions = 'sum' | 'average' | 'min' | 'max' | 'mostRecent'; export interface StatisticsData { sum?: number; average?: number; minimum?: number; maximum?: number; mostRecent?: number; startDate: string; endDate: string; } // Workout types export interface WorkoutData { uuid: string; startDate: string; endDate: string; workoutActivityType: number; duration: number; totalEnergyBurned?: number; totalDistance?: number; totalSwimmingStrokeCount?: number; totalFlightsClimbed?: number; sourceRevision: SourceRevision; metadata?: Record<string, any>; } export enum WorkoutActivityType { AmericanFootball = 1, Archery = 2, AustralianFootball = 3, Badminton = 4, Baseball = 5, Basketball = 6, Bowling = 7, Boxing = 8, Climbing = 9, Cricket = 10, CrossTraining = 11, Curling = 12, Cycling = 13, Dance = 14, DanceInspiredTraining = 15, Elliptical = 16, EquestrianSports = 17, Fencing = 18, Fishing = 19, FunctionalStrengthTraining = 20, Golf = 21, Gymnastics = 22, Handball = 23, Hiking = 24, Hockey = 25, Hunting = 26, Lacrosse = 27, MartialArts = 28, MindAndBody = 29, MixedMetabolicCardioTraining = 30, PaddleSports = 31, Play = 32, PreparationAndRecovery = 33, Racquetball = 34, Rowing = 35, Rugby = 36, Running = 37, Sailing = 38, SkatingSports = 39, SnowSports = 40, Soccer = 41, Softball = 42, Squash = 43, StairClimbing = 44, SurfingSports = 45, Swimming = 46, TableTennis = 47, Tennis = 48, TrackAndField = 49, TraditionalStrengthTraining = 50, Volleyball = 51, Walking = 52, WaterFitness = 53, WaterPolo = 54, WaterSports = 55, Wrestling = 56, Yoga = 57, Other = 3000 } // Health categories export type HealthKitCategory = | 'activity' | 'heart' | 'body' | 'vitals' | 'lab' | 'sleep' | 'mindfulness' | 'reproductive' | 'workouts'; // Specific data types for each metric export interface BloodPressureData { systolic: number; diastolic: number; startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface BloodGlucoseData { value: number; unit: 'mg/dL' | 'mmol/L'; startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface OxygenSaturationData { value: number; // percentage startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface RespiratoryRateData { value: number; // breaths per minute startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface BodyTemperatureData { value: number; unit: '°C' | '°F'; startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface VO2MaxData { value: number; // mL/kg·min startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface HeartRateVariabilityData { value: number; // milliseconds startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface RestingHeartRateData { value: number; // bpm startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface WalkingHeartRateData { value: number; // bpm startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface BodyFatPercentageData { value: number; // percentage startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface LeanBodyMassData { value: number; // kg startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface BasalEnergyBurnedData { value: number; // kcal startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface SwimmingStrokeCountData { value: number; // count startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface CyclingDistanceData { value: number; // meters startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface SwimmingDistanceData { value: number; // meters startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface MindfulnessData { value: number; // category value startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface MenstrualFlowData { value: number; // flow intensity startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface SexualActivityData { value: number; // category value startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; } export interface AppleStandHourData { value: number; // 0 or 1 startDate: string; endDate: string; uuid: string; sourceRevision: SourceRevision; }