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
text/typescript
// 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;
}