@appeeky/expo-healthkit 0.1.0

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 (62) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +92 -0
  3. package/README.md +453 -0
  4. package/android/build.gradle +22 -0
  5. package/android/src/main/AndroidManifest.xml +74 -0
  6. package/android/src/main/java/expo/modules/healthkit/ExpoHealthKitModule.kt +228 -0
  7. package/android/src/main/java/expo/modules/healthkit/HealthConnectMapping.kt +129 -0
  8. package/android/src/main/java/expo/modules/healthkit/HealthConnectNutrition.kt +152 -0
  9. package/android/src/main/java/expo/modules/healthkit/HealthConnectRationaleActivity.kt +62 -0
  10. package/android/src/main/java/expo/modules/healthkit/HealthConnectService.kt +1054 -0
  11. package/android/src/main/java/expo/modules/healthkit/HealthConnectUnits.kt +133 -0
  12. package/android/src/main/java/expo/modules/healthkit/HealthConnectWorkouts.kt +105 -0
  13. package/android/src/main/java/expo/modules/healthkit/HealthKitExceptions.kt +30 -0
  14. package/app.plugin.js +1 -0
  15. package/build/ExpoHealthKitModule.d.ts +39 -0
  16. package/build/ExpoHealthKitModule.d.ts.map +1 -0
  17. package/build/ExpoHealthKitModule.js +35 -0
  18. package/build/ExpoHealthKitModule.js.map +1 -0
  19. package/build/ExpoHealthKitModule.web.d.ts +39 -0
  20. package/build/ExpoHealthKitModule.web.d.ts.map +1 -0
  21. package/build/ExpoHealthKitModule.web.js +105 -0
  22. package/build/ExpoHealthKitModule.web.js.map +1 -0
  23. package/build/dates.d.ts +6 -0
  24. package/build/dates.d.ts.map +1 -0
  25. package/build/dates.js +13 -0
  26. package/build/dates.js.map +1 -0
  27. package/build/errors.d.ts +9 -0
  28. package/build/errors.d.ts.map +1 -0
  29. package/build/errors.js +18 -0
  30. package/build/errors.js.map +1 -0
  31. package/build/identifiers.d.ts +418 -0
  32. package/build/identifiers.d.ts.map +1 -0
  33. package/build/identifiers.js +402 -0
  34. package/build/identifiers.js.map +1 -0
  35. package/build/index.d.ts +454 -0
  36. package/build/index.d.ts.map +1 -0
  37. package/build/index.js +418 -0
  38. package/build/index.js.map +1 -0
  39. package/build/types.d.ts +542 -0
  40. package/build/types.d.ts.map +1 -0
  41. package/build/types.js +2 -0
  42. package/build/types.js.map +1 -0
  43. package/docs/banner.jpg +0 -0
  44. package/expo-module.config.json +9 -0
  45. package/ios/ExpoHealthKit.podspec +30 -0
  46. package/ios/ExpoHealthKitModule.swift +155 -0
  47. package/ios/HealthKitAdvancedQueries.swift +458 -0
  48. package/ios/HealthKitExceptions.swift +109 -0
  49. package/ios/HealthKitIdentifiers.swift +183 -0
  50. package/ios/HealthKitRecords.swift +214 -0
  51. package/ios/HealthKitService.swift +626 -0
  52. package/ios/PrivacyInfo.xcprivacy +14 -0
  53. package/package.json +105 -0
  54. package/plugin/build/index.d.ts +30 -0
  55. package/plugin/build/index.js +138 -0
  56. package/src/ExpoHealthKitModule.ts +116 -0
  57. package/src/ExpoHealthKitModule.web.ts +140 -0
  58. package/src/dates.ts +17 -0
  59. package/src/errors.ts +22 -0
  60. package/src/identifiers.ts +494 -0
  61. package/src/index.ts +563 -0
  62. package/src/types.ts +625 -0
@@ -0,0 +1,494 @@
1
+ /**
2
+ * HealthKit type identifiers.
3
+ *
4
+ * Values match Apple's `HK*TypeIdentifier` raw strings so they can be passed
5
+ * straight through to native APIs. Unknown identifiers are still accepted at
6
+ * runtime if HealthKit recognizes them — add a constant here when you want
7
+ * typed autocomplete.
8
+ */
9
+
10
+ /* eslint-disable @typescript-eslint/no-redeclare */
11
+
12
+ export const QuantityType = {
13
+ // Activity
14
+ stepCount: 'HKQuantityTypeIdentifierStepCount',
15
+ distanceWalkingRunning: 'HKQuantityTypeIdentifierDistanceWalkingRunning',
16
+ distanceCycling: 'HKQuantityTypeIdentifierDistanceCycling',
17
+ distanceSwimming: 'HKQuantityTypeIdentifierDistanceSwimming',
18
+ distanceWheelchair: 'HKQuantityTypeIdentifierDistanceWheelchair',
19
+ distanceDownhillSnowSports: 'HKQuantityTypeIdentifierDistanceDownhillSnowSports',
20
+ basalEnergyBurned: 'HKQuantityTypeIdentifierBasalEnergyBurned',
21
+ activeEnergyBurned: 'HKQuantityTypeIdentifierActiveEnergyBurned',
22
+ flightsClimbed: 'HKQuantityTypeIdentifierFlightsClimbed',
23
+ appleExerciseTime: 'HKQuantityTypeIdentifierAppleExerciseTime',
24
+ appleMoveTime: 'HKQuantityTypeIdentifierAppleMoveTime',
25
+ appleStandTime: 'HKQuantityTypeIdentifierAppleStandTime',
26
+ nikeFuel: 'HKQuantityTypeIdentifierNikeFuel',
27
+ pushCount: 'HKQuantityTypeIdentifierPushCount',
28
+ swimmingStrokeCount: 'HKQuantityTypeIdentifierSwimmingStrokeCount',
29
+ vo2Max: 'HKQuantityTypeIdentifierVO2Max',
30
+ appleSleepingBreathingDisturbances: 'HKQuantityTypeIdentifierAppleSleepingBreathingDisturbances',
31
+ physicalEffort: 'HKQuantityTypeIdentifierPhysicalEffort',
32
+ estimatedWorkoutEffortScore: 'HKQuantityTypeIdentifierEstimatedWorkoutEffortScore',
33
+ workoutEffortScore: 'HKQuantityTypeIdentifierWorkoutEffortScore',
34
+
35
+ // Running / cycling
36
+ runningStrideLength: 'HKQuantityTypeIdentifierRunningStrideLength',
37
+ runningVerticalOscillation: 'HKQuantityTypeIdentifierRunningVerticalOscillation',
38
+ runningGroundContactTime: 'HKQuantityTypeIdentifierRunningGroundContactTime',
39
+ runningPower: 'HKQuantityTypeIdentifierRunningPower',
40
+ runningSpeed: 'HKQuantityTypeIdentifierRunningSpeed',
41
+ cyclingPower: 'HKQuantityTypeIdentifierCyclingPower',
42
+ cyclingCadence: 'HKQuantityTypeIdentifierCyclingCadence',
43
+ cyclingFunctionalThresholdPower: 'HKQuantityTypeIdentifierCyclingFunctionalThresholdPower',
44
+ cyclingSpeed: 'HKQuantityTypeIdentifierCyclingSpeed',
45
+
46
+ // Vitals
47
+ heartRate: 'HKQuantityTypeIdentifierHeartRate',
48
+ restingHeartRate: 'HKQuantityTypeIdentifierRestingHeartRate',
49
+ walkingHeartRateAverage: 'HKQuantityTypeIdentifierWalkingHeartRateAverage',
50
+ heartRateVariabilitySDNN: 'HKQuantityTypeIdentifierHeartRateVariabilitySDNN',
51
+ heartRateRecoveryOneMinute: 'HKQuantityTypeIdentifierHeartRateRecoveryOneMinute',
52
+ atrialFibrillationBurden: 'HKQuantityTypeIdentifierAtrialFibrillationBurden',
53
+ oxygenSaturation: 'HKQuantityTypeIdentifierOxygenSaturation',
54
+ peripheralPerfusionIndex: 'HKQuantityTypeIdentifierPeripheralPerfusionIndex',
55
+ respiratoryRate: 'HKQuantityTypeIdentifierRespiratoryRate',
56
+ bodyTemperature: 'HKQuantityTypeIdentifierBodyTemperature',
57
+ basalBodyTemperature: 'HKQuantityTypeIdentifierBasalBodyTemperature',
58
+ bloodPressureSystolic: 'HKQuantityTypeIdentifierBloodPressureSystolic',
59
+ bloodPressureDiastolic: 'HKQuantityTypeIdentifierBloodPressureDiastolic',
60
+ bloodGlucose: 'HKQuantityTypeIdentifierBloodGlucose',
61
+ bloodAlcoholContent: 'HKQuantityTypeIdentifierBloodAlcoholContent',
62
+ electrodermalActivity: 'HKQuantityTypeIdentifierElectrodermalActivity',
63
+ insulinDelivery: 'HKQuantityTypeIdentifierInsulinDelivery',
64
+ numberOfTimesFallen: 'HKQuantityTypeIdentifierNumberOfTimesFallen',
65
+ inhalerUsage: 'HKQuantityTypeIdentifierInhalerUsage',
66
+ forcedVitalCapacity: 'HKQuantityTypeIdentifierForcedVitalCapacity',
67
+ forcedExpiratoryVolume1: 'HKQuantityTypeIdentifierForcedExpiratoryVolume1',
68
+ peakExpiratoryFlowRate: 'HKQuantityTypeIdentifierPeakExpiratoryFlowRate',
69
+
70
+ // Body
71
+ height: 'HKQuantityTypeIdentifierHeight',
72
+ bodyMass: 'HKQuantityTypeIdentifierBodyMass',
73
+ bodyMassIndex: 'HKQuantityTypeIdentifierBodyMassIndex',
74
+ leanBodyMass: 'HKQuantityTypeIdentifierLeanBodyMass',
75
+ bodyFatPercentage: 'HKQuantityTypeIdentifierBodyFatPercentage',
76
+ waistCircumference: 'HKQuantityTypeIdentifierWaistCircumference',
77
+ appleSleepingWristTemperature: 'HKQuantityTypeIdentifierAppleSleepingWristTemperature',
78
+
79
+ // Mobility
80
+ sixMinuteWalkTestDistance: 'HKQuantityTypeIdentifierSixMinuteWalkTestDistance',
81
+ walkingSpeed: 'HKQuantityTypeIdentifierWalkingSpeed',
82
+ walkingStepLength: 'HKQuantityTypeIdentifierWalkingStepLength',
83
+ walkingAsymmetryPercentage: 'HKQuantityTypeIdentifierWalkingAsymmetryPercentage',
84
+ walkingDoubleSupportPercentage: 'HKQuantityTypeIdentifierWalkingDoubleSupportPercentage',
85
+ stairAscentSpeed: 'HKQuantityTypeIdentifierStairAscentSpeed',
86
+ stairDescentSpeed: 'HKQuantityTypeIdentifierStairDescentSpeed',
87
+ appleWalkingSteadiness: 'HKQuantityTypeIdentifierAppleWalkingSteadiness',
88
+
89
+ // Hearing
90
+ environmentalAudioExposure: 'HKQuantityTypeIdentifierEnvironmentalAudioExposure',
91
+ headphoneAudioExposure: 'HKQuantityTypeIdentifierHeadphoneAudioExposure',
92
+
93
+ // Nutrition
94
+ dietaryEnergyConsumed: 'HKQuantityTypeIdentifierDietaryEnergyConsumed',
95
+ dietaryWater: 'HKQuantityTypeIdentifierDietaryWater',
96
+ dietaryCarbohydrates: 'HKQuantityTypeIdentifierDietaryCarbohydrates',
97
+ dietaryProtein: 'HKQuantityTypeIdentifierDietaryProtein',
98
+ dietaryFatTotal: 'HKQuantityTypeIdentifierDietaryFatTotal',
99
+ dietaryFatSaturated: 'HKQuantityTypeIdentifierDietaryFatSaturated',
100
+ dietaryFatMonounsaturated: 'HKQuantityTypeIdentifierDietaryFatMonounsaturated',
101
+ dietaryFatPolyunsaturated: 'HKQuantityTypeIdentifierDietaryFatPolyunsaturated',
102
+ dietaryCholesterol: 'HKQuantityTypeIdentifierDietaryCholesterol',
103
+ dietarySodium: 'HKQuantityTypeIdentifierDietarySodium',
104
+ dietarySugar: 'HKQuantityTypeIdentifierDietarySugar',
105
+ dietaryFiber: 'HKQuantityTypeIdentifierDietaryFiber',
106
+ dietaryCaffeine: 'HKQuantityTypeIdentifierDietaryCaffeine',
107
+ dietaryCalcium: 'HKQuantityTypeIdentifierDietaryCalcium',
108
+ dietaryIron: 'HKQuantityTypeIdentifierDietaryIron',
109
+ dietaryPotassium: 'HKQuantityTypeIdentifierDietaryPotassium',
110
+ dietaryVitaminA: 'HKQuantityTypeIdentifierDietaryVitaminA',
111
+ dietaryVitaminC: 'HKQuantityTypeIdentifierDietaryVitaminC',
112
+ dietaryVitaminD: 'HKQuantityTypeIdentifierDietaryVitaminD',
113
+ dietaryVitaminE: 'HKQuantityTypeIdentifierDietaryVitaminE',
114
+ dietaryVitaminK: 'HKQuantityTypeIdentifierDietaryVitaminK',
115
+ dietaryVitaminB6: 'HKQuantityTypeIdentifierDietaryVitaminB6',
116
+ dietaryVitaminB12: 'HKQuantityTypeIdentifierDietaryVitaminB12',
117
+ dietaryBiotin: 'HKQuantityTypeIdentifierDietaryBiotin',
118
+ dietaryFolate: 'HKQuantityTypeIdentifierDietaryFolate',
119
+ dietaryNiacin: 'HKQuantityTypeIdentifierDietaryNiacin',
120
+ dietaryPantothenicAcid: 'HKQuantityTypeIdentifierDietaryPantothenicAcid',
121
+ dietaryRiboflavin: 'HKQuantityTypeIdentifierDietaryRiboflavin',
122
+ dietaryThiamin: 'HKQuantityTypeIdentifierDietaryThiamin',
123
+ dietaryMagnesium: 'HKQuantityTypeIdentifierDietaryMagnesium',
124
+ dietaryManganese: 'HKQuantityTypeIdentifierDietaryManganese',
125
+ dietaryPhosphorus: 'HKQuantityTypeIdentifierDietaryPhosphorus',
126
+ dietarySelenium: 'HKQuantityTypeIdentifierDietarySelenium',
127
+ dietaryZinc: 'HKQuantityTypeIdentifierDietaryZinc',
128
+ dietaryIodine: 'HKQuantityTypeIdentifierDietaryIodine',
129
+ dietaryChromium: 'HKQuantityTypeIdentifierDietaryChromium',
130
+ dietaryCopper: 'HKQuantityTypeIdentifierDietaryCopper',
131
+ dietaryMolybdenum: 'HKQuantityTypeIdentifierDietaryMolybdenum',
132
+ dietaryChloride: 'HKQuantityTypeIdentifierDietaryChloride',
133
+ } as const;
134
+
135
+ export type QuantityType = (typeof QuantityType)[keyof typeof QuantityType];
136
+
137
+ export const CategoryType = {
138
+ sleepAnalysis: 'HKCategoryTypeIdentifierSleepAnalysis',
139
+ appleStandHour: 'HKCategoryTypeIdentifierAppleStandHour',
140
+ cervicalMucusQuality: 'HKCategoryTypeIdentifierCervicalMucusQuality',
141
+ ovulationTestResult: 'HKCategoryTypeIdentifierOvulationTestResult',
142
+ menstrualFlow: 'HKCategoryTypeIdentifierMenstrualFlow',
143
+ intermenstrualBleeding: 'HKCategoryTypeIdentifierIntermenstrualBleeding',
144
+ sexualActivity: 'HKCategoryTypeIdentifierSexualActivity',
145
+ mindfulSession: 'HKCategoryTypeIdentifierMindfulSession',
146
+ highHeartRateEvent: 'HKCategoryTypeIdentifierHighHeartRateEvent',
147
+ lowHeartRateEvent: 'HKCategoryTypeIdentifierLowHeartRateEvent',
148
+ irregularHeartRhythmEvent: 'HKCategoryTypeIdentifierIrregularHeartRhythmEvent',
149
+ toothbrushingEvent: 'HKCategoryTypeIdentifierToothbrushingEvent',
150
+ pregnancy: 'HKCategoryTypeIdentifierPregnancy',
151
+ lactation: 'HKCategoryTypeIdentifierLactation',
152
+ contraceptive: 'HKCategoryTypeIdentifierContraceptive',
153
+ audioExposureEvent: 'HKCategoryTypeIdentifierAudioExposureEvent',
154
+ environmentalAudioExposureEvent: 'HKCategoryTypeIdentifierEnvironmentalAudioExposureEvent',
155
+ headphoneAudioExposureEvent: 'HKCategoryTypeIdentifierHeadphoneAudioExposureEvent',
156
+ appleWalkingSteadinessEvent: 'HKCategoryTypeIdentifierAppleWalkingSteadinessEvent',
157
+ lowCardioFitnessEvent: 'HKCategoryTypeIdentifierLowCardioFitnessEvent',
158
+ handwashingEvent: 'HKCategoryTypeIdentifierHandwashingEvent',
159
+ pregnancyTestResult: 'HKCategoryTypeIdentifierPregnancyTestResult',
160
+ progesteroneTestResult: 'HKCategoryTypeIdentifierProgesteroneTestResult',
161
+ } as const;
162
+
163
+ export type CategoryType = (typeof CategoryType)[keyof typeof CategoryType];
164
+
165
+ export const CharacteristicType = {
166
+ biologicalSex: 'HKCharacteristicTypeIdentifierBiologicalSex',
167
+ bloodType: 'HKCharacteristicTypeIdentifierBloodType',
168
+ dateOfBirth: 'HKCharacteristicTypeIdentifierDateOfBirth',
169
+ fitzpatrickSkinType: 'HKCharacteristicTypeIdentifierFitzpatrickSkinType',
170
+ wheelchairUse: 'HKCharacteristicTypeIdentifierWheelchairUse',
171
+ activityMoveMode: 'HKCharacteristicTypeIdentifierActivityMoveMode',
172
+ } as const;
173
+
174
+ export type CharacteristicType = (typeof CharacteristicType)[keyof typeof CharacteristicType];
175
+
176
+ export const CorrelationType = {
177
+ bloodPressure: 'HKCorrelationTypeIdentifierBloodPressure',
178
+ food: 'HKCorrelationTypeIdentifierFood',
179
+ } as const;
180
+
181
+ export type CorrelationType = (typeof CorrelationType)[keyof typeof CorrelationType];
182
+
183
+ export const WorkoutType = {
184
+ workout: 'HKWorkoutTypeIdentifier',
185
+ } as const;
186
+
187
+ export type WorkoutType = (typeof WorkoutType)[keyof typeof WorkoutType];
188
+
189
+ export const ElectrocardiogramType = {
190
+ electrocardiogram: 'HKElectrocardiogramTypeIdentifier',
191
+ } as const;
192
+
193
+ export type ElectrocardiogramType =
194
+ (typeof ElectrocardiogramType)[keyof typeof ElectrocardiogramType];
195
+
196
+ export const AudiogramType = {
197
+ audiogram: 'HKAudiogramSampleTypeIdentifier',
198
+ } as const;
199
+
200
+ export type AudiogramType = (typeof AudiogramType)[keyof typeof AudiogramType];
201
+
202
+ export const SeriesType = {
203
+ workoutRoute: 'HKWorkoutRouteTypeIdentifier',
204
+ heartbeat: 'HKDataTypeIdentifierHeartbeatSeries',
205
+ } as const;
206
+
207
+ export type SeriesType = (typeof SeriesType)[keyof typeof SeriesType];
208
+
209
+ export const ActivitySummaryType = {
210
+ activitySummary: 'HKActivitySummaryTypeIdentifier',
211
+ } as const;
212
+
213
+ export type ActivitySummaryType = (typeof ActivitySummaryType)[keyof typeof ActivitySummaryType];
214
+
215
+ export const ClinicalType = {
216
+ allergyRecord: 'HKClinicalTypeIdentifierAllergyRecord',
217
+ conditionRecord: 'HKClinicalTypeIdentifierConditionRecord',
218
+ immunizationRecord: 'HKClinicalTypeIdentifierImmunizationRecord',
219
+ labResultRecord: 'HKClinicalTypeIdentifierLabResultRecord',
220
+ medicationRecord: 'HKClinicalTypeIdentifierMedicationRecord',
221
+ procedureRecord: 'HKClinicalTypeIdentifierProcedureRecord',
222
+ vitalSignRecord: 'HKClinicalTypeIdentifierVitalSignRecord',
223
+ coverageRecord: 'HKClinicalTypeIdentifierCoverageRecord',
224
+ } as const;
225
+
226
+ export type ClinicalType = (typeof ClinicalType)[keyof typeof ClinicalType];
227
+
228
+ export type ObjectType =
229
+ | QuantityType
230
+ | CategoryType
231
+ | CharacteristicType
232
+ | CorrelationType
233
+ | WorkoutType
234
+ | ElectrocardiogramType
235
+ | AudiogramType
236
+ | SeriesType
237
+ | ActivitySummaryType
238
+ | ClinicalType
239
+ | (string & {});
240
+
241
+ export const Unit = {
242
+ count: 'count',
243
+ countPerMinute: 'count/min',
244
+ countPerSecond: 'count/s',
245
+ percent: '%',
246
+ kilogram: 'kg',
247
+ gram: 'g',
248
+ milligram: 'mg',
249
+ pound: 'lb',
250
+ meter: 'm',
251
+ kilometer: 'km',
252
+ centimeter: 'cm',
253
+ mile: 'mi',
254
+ foot: 'ft',
255
+ inch: 'in',
256
+ meterPerSecond: 'm/s',
257
+ kilometerPerHour: 'km/hr',
258
+ milePerHour: 'mi/hr',
259
+ kilocalorie: 'kcal',
260
+ joule: 'J',
261
+ degreeCelsius: 'degC',
262
+ degreeFahrenheit: 'degF',
263
+ millimeterOfMercury: 'mmHg',
264
+ milliliter: 'mL',
265
+ liter: 'L',
266
+ milligramPerDeciliter: 'mg/dL',
267
+ millimolePerLiter: 'mmol<mol>/L',
268
+ second: 's',
269
+ minute: 'min',
270
+ hour: 'hr',
271
+ watt: 'W',
272
+ decibelAWeightedSoundPressureLevel: 'dBASPL',
273
+ hertz: 'Hz',
274
+ decibelHearingLevel: 'dBHL',
275
+ volt: 'V',
276
+ microvolt: 'uV',
277
+ } as const;
278
+
279
+ export type Unit = (typeof Unit)[keyof typeof Unit];
280
+
281
+ /** Matches `HKWorkoutActivityType` raw values. */
282
+ export const WorkoutActivityType = {
283
+ americanFootball: 1,
284
+ archery: 2,
285
+ australianFootball: 3,
286
+ badminton: 4,
287
+ baseball: 5,
288
+ basketball: 6,
289
+ bowling: 7,
290
+ boxing: 8,
291
+ climbing: 9,
292
+ cricket: 10,
293
+ crossTraining: 11,
294
+ curling: 12,
295
+ cycling: 13,
296
+ dance: 14,
297
+ danceInspiredTraining: 15,
298
+ elliptical: 16,
299
+ equestrianSports: 17,
300
+ fencing: 18,
301
+ fishing: 19,
302
+ functionalStrengthTraining: 20,
303
+ golf: 21,
304
+ gymnastics: 22,
305
+ handball: 23,
306
+ hiking: 24,
307
+ hockey: 25,
308
+ hunting: 26,
309
+ lacrosse: 27,
310
+ martialArts: 28,
311
+ mindAndBody: 29,
312
+ mixedMetabolicCardioTraining: 30,
313
+ paddleSports: 31,
314
+ play: 32,
315
+ preparationAndRecovery: 33,
316
+ racquetball: 34,
317
+ rowing: 35,
318
+ rugby: 36,
319
+ running: 37,
320
+ sailing: 38,
321
+ skatingSports: 39,
322
+ snowSports: 40,
323
+ soccer: 41,
324
+ softball: 42,
325
+ squash: 43,
326
+ stairClimbing: 44,
327
+ surfingSports: 45,
328
+ swimming: 46,
329
+ tableTennis: 47,
330
+ tennis: 48,
331
+ trackAndField: 49,
332
+ traditionalStrengthTraining: 50,
333
+ volleyball: 51,
334
+ walking: 52,
335
+ waterFitness: 53,
336
+ waterPolo: 54,
337
+ waterSports: 55,
338
+ wrestling: 56,
339
+ yoga: 57,
340
+ barre: 58,
341
+ coreTraining: 59,
342
+ crossCountrySkiing: 60,
343
+ downhillSkiing: 61,
344
+ flexibility: 62,
345
+ highIntensityIntervalTraining: 63,
346
+ jumpRope: 64,
347
+ kickboxing: 65,
348
+ pilates: 66,
349
+ snowboarding: 67,
350
+ stairs: 68,
351
+ stepTraining: 69,
352
+ wheelchairWalkPace: 70,
353
+ wheelchairRunPace: 71,
354
+ taiChi: 72,
355
+ mixedCardio: 73,
356
+ handCycling: 74,
357
+ discSports: 75,
358
+ fitnessGaming: 76,
359
+ cardioDance: 77,
360
+ socialDance: 78,
361
+ pickleball: 79,
362
+ cooldown: 80,
363
+ swimBikeRun: 82,
364
+ transition: 83,
365
+ underwaterDiving: 84,
366
+ other: 3000,
367
+ } as const;
368
+
369
+ export type WorkoutActivityType = (typeof WorkoutActivityType)[keyof typeof WorkoutActivityType];
370
+
371
+ /** Matches `HKCategoryValueSleepAnalysis`. */
372
+ export const SleepAnalysisValue = {
373
+ inBed: 0,
374
+ asleepUnspecified: 1,
375
+ awake: 2,
376
+ asleepCore: 3,
377
+ asleepDeep: 4,
378
+ asleepREM: 5,
379
+ } as const;
380
+
381
+ export type SleepAnalysisValue = (typeof SleepAnalysisValue)[keyof typeof SleepAnalysisValue];
382
+
383
+ /** Matches `HKUpdateFrequency`. */
384
+ export const UpdateFrequency = {
385
+ immediate: 1,
386
+ hourly: 2,
387
+ daily: 3,
388
+ weekly: 4,
389
+ } as const;
390
+
391
+ export type UpdateFrequency = (typeof UpdateFrequency)[keyof typeof UpdateFrequency];
392
+
393
+ /** Matches `HKStatisticsOptions` bitmask values used by this module. */
394
+ export const StatisticsOption = {
395
+ none: 0,
396
+ discreteAverage: 1,
397
+ discreteMin: 2,
398
+ discreteMax: 4,
399
+ cumulativeSum: 8,
400
+ discreteMostRecent: 32,
401
+ } as const;
402
+
403
+ export type StatisticsOption = (typeof StatisticsOption)[keyof typeof StatisticsOption];
404
+
405
+ /** Matches `HKAuthorizationStatus`. */
406
+ export const AuthorizationStatus = {
407
+ notDetermined: 0,
408
+ sharingDenied: 1,
409
+ sharingAuthorized: 2,
410
+ } as const;
411
+
412
+ export type AuthorizationStatus = (typeof AuthorizationStatus)[keyof typeof AuthorizationStatus];
413
+
414
+ /** Matches `HKAuthorizationRequestStatus`. */
415
+ export const AuthorizationRequestStatus = {
416
+ unknown: 0,
417
+ shouldRequest: 1,
418
+ unnecessary: 2,
419
+ } as const;
420
+
421
+ export type AuthorizationRequestStatus =
422
+ (typeof AuthorizationRequestStatus)[keyof typeof AuthorizationRequestStatus];
423
+
424
+ /** Matches `HKBiologicalSex`. */
425
+ export const BiologicalSex = {
426
+ notSet: 0,
427
+ female: 1,
428
+ male: 2,
429
+ other: 3,
430
+ } as const;
431
+
432
+ export type BiologicalSex = (typeof BiologicalSex)[keyof typeof BiologicalSex];
433
+
434
+ /** Matches `HKBloodType`. */
435
+ export const BloodType = {
436
+ notSet: 0,
437
+ aPositive: 1,
438
+ aNegative: 2,
439
+ bPositive: 3,
440
+ bNegative: 4,
441
+ abPositive: 5,
442
+ abNegative: 6,
443
+ oPositive: 7,
444
+ oNegative: 8,
445
+ } as const;
446
+
447
+ export type BloodType = (typeof BloodType)[keyof typeof BloodType];
448
+
449
+ /** Matches `HKFitzpatrickSkinType`. */
450
+ export const FitzpatrickSkinType = {
451
+ notSet: 0,
452
+ I: 1,
453
+ II: 2,
454
+ III: 3,
455
+ IV: 4,
456
+ V: 5,
457
+ VI: 6,
458
+ } as const;
459
+
460
+ export type FitzpatrickSkinType = (typeof FitzpatrickSkinType)[keyof typeof FitzpatrickSkinType];
461
+
462
+ /** Matches `HKWheelchairUse`. */
463
+ export const WheelchairUse = {
464
+ notSet: 0,
465
+ no: 1,
466
+ yes: 2,
467
+ } as const;
468
+
469
+ export type WheelchairUse = (typeof WheelchairUse)[keyof typeof WheelchairUse];
470
+
471
+ /** Matches `HKElectrocardiogram.Classification`. */
472
+ export const ElectrocardiogramClassification = {
473
+ notSet: 0,
474
+ sinusRhythm: 1,
475
+ atrialFibrillation: 2,
476
+ inconclusiveLowHeartRate: 3,
477
+ inconclusiveHighHeartRate: 4,
478
+ inconclusivePoorReading: 5,
479
+ inconclusiveOther: 6,
480
+ unrecognized: 100,
481
+ } as const;
482
+
483
+ export type ElectrocardiogramClassification =
484
+ (typeof ElectrocardiogramClassification)[keyof typeof ElectrocardiogramClassification];
485
+
486
+ /** Matches `HKElectrocardiogram.SymptomsStatus`. */
487
+ export const ElectrocardiogramSymptomsStatus = {
488
+ notSet: 0,
489
+ none: 1,
490
+ present: 2,
491
+ } as const;
492
+
493
+ export type ElectrocardiogramSymptomsStatus =
494
+ (typeof ElectrocardiogramSymptomsStatus)[keyof typeof ElectrocardiogramSymptomsStatus];