@kingstinct/react-native-healthkit 7.1.1 → 7.2.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 (47) hide show
  1. package/ios/Helpers.swift +6 -0
  2. package/ios/ReactNativeHealthkit.m +6 -0
  3. package/ios/ReactNativeHealthkit.swift +135 -56
  4. package/lib/commonjs/index.ios.js +2 -0
  5. package/lib/commonjs/index.ios.js.map +1 -1
  6. package/lib/commonjs/index.js +2 -1
  7. package/lib/commonjs/index.js.map +1 -1
  8. package/lib/commonjs/jest.setup.js +2 -1
  9. package/lib/commonjs/jest.setup.js.map +1 -1
  10. package/lib/commonjs/native-types.js.map +1 -1
  11. package/lib/commonjs/types.js.map +1 -1
  12. package/lib/commonjs/utils/saveCorrelationSample.js +20 -4
  13. package/lib/commonjs/utils/saveCorrelationSample.js.map +1 -1
  14. package/lib/commonjs/utils/saveWorkoutRoute.js +27 -0
  15. package/lib/commonjs/utils/saveWorkoutRoute.js.map +1 -0
  16. package/lib/commonjs/utils/saveWorkoutSample.js +20 -4
  17. package/lib/commonjs/utils/saveWorkoutSample.js.map +1 -1
  18. package/lib/module/index.ios.js +2 -0
  19. package/lib/module/index.ios.js.map +1 -1
  20. package/lib/module/index.js +2 -1
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/jest.setup.js +2 -1
  23. package/lib/module/jest.setup.js.map +1 -1
  24. package/lib/module/native-types.js.map +1 -1
  25. package/lib/module/types.js +5 -0
  26. package/lib/module/types.js.map +1 -1
  27. package/lib/module/utils/saveCorrelationSample.js +20 -4
  28. package/lib/module/utils/saveCorrelationSample.js.map +1 -1
  29. package/lib/module/utils/saveWorkoutRoute.js +19 -0
  30. package/lib/module/utils/saveWorkoutRoute.js.map +1 -0
  31. package/lib/module/utils/saveWorkoutSample.js +20 -4
  32. package/lib/module/utils/saveWorkoutSample.js.map +1 -1
  33. package/lib/typescript/src/index.d.ts +1 -0
  34. package/lib/typescript/src/index.ios.d.ts +2 -0
  35. package/lib/typescript/src/native-types.d.ts +21 -4
  36. package/lib/typescript/src/types.d.ts +16 -3
  37. package/lib/typescript/src/utils/saveWorkoutRoute.d.ts +3 -0
  38. package/lib/typescript/src/utils/saveWorkoutSample.d.ts +1 -1
  39. package/package.json +1 -1
  40. package/src/index.ios.tsx +2 -0
  41. package/src/index.tsx +2 -1
  42. package/src/jest.setup.ts +1 -0
  43. package/src/native-types.ts +25 -8
  44. package/src/types.ts +17 -2
  45. package/src/utils/saveCorrelationSample.ts +10 -1
  46. package/src/utils/saveWorkoutRoute.ts +21 -0
  47. package/src/utils/saveWorkoutSample.ts +9 -1
package/ios/Helpers.swift CHANGED
@@ -74,6 +74,12 @@ func sampleTypeFromString(typeIdentifier: String) -> HKSampleType? {
74
74
  return HKSampleType.workoutType()
75
75
  }
76
76
 
77
+ if #available(iOS 11.0, *) {
78
+ if typeIdentifier == HKWorkoutRouteTypeIdentifier {
79
+ return HKObjectType.seriesType(forIdentifier: typeIdentifier)
80
+ }
81
+ }
82
+
77
83
  return nil
78
84
  }
79
85
 
@@ -151,6 +151,12 @@ RCT_EXTERN_METHOD(saveWorkoutSample:(NSInteger)typeIdentifier
151
151
  reject:(RCTPromiseRejectBlock)reject
152
152
  )
153
153
 
154
+ RCT_EXTERN_METHOD(saveWorkoutRoute:(NSString)workoutUUID
155
+ locations:(NSArray)locations
156
+ resolve:(RCTPromiseResolveBlock)resolve
157
+ reject:(RCTPromiseRejectBlock)reject
158
+ )
159
+
154
160
  RCT_EXTERN_METHOD(queryCorrelationSamples:(NSString)typeIdentifier
155
161
  from:(NSDate)from
156
162
  to:(NSDate)to
@@ -16,6 +16,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
16
16
  override init() {
17
17
  self._runningQueries = [String: HKQuery]()
18
18
  self._dateFormatter = ISO8601DateFormatter()
19
+ self._dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
19
20
 
20
21
  if HKHealthStore.isHealthDataAvailable() {
21
22
  self._store = HKHealthStore.init()
@@ -25,18 +26,18 @@ class ReactNativeHealthkit: RCTEventEmitter {
25
26
 
26
27
  deinit {
27
28
  if let store = _store {
28
- for query in self._runningQueries {
29
- store.stop(query.value)
30
- }
29
+ for query in self._runningQueries {
30
+ store.stop(query.value)
31
+ }
31
32
  }
32
33
  }
33
34
 
34
35
  override func stopObserving() {
35
36
  self._hasListeners = false
36
37
  if let store = _store {
37
- for query in self._runningQueries {
38
- store.stop(query.value)
39
- }
38
+ for query in self._runningQueries {
39
+ store.stop(query.value)
40
+ }
40
41
  }
41
42
  }
42
43
 
@@ -126,7 +127,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
126
127
 
127
128
  do {
128
129
  let dateOfBirth = try store.dateOfBirthComponents()
129
-
130
+
130
131
  resolve(_dateFormatter.string(from: dateOfBirth.date!))
131
132
  } catch {
132
133
  reject(GENERIC_ERROR, error.localizedDescription, error)
@@ -292,14 +293,14 @@ class ReactNativeHealthkit: RCTEventEmitter {
292
293
  initializedSamples.insert(quantitySample)
293
294
  }
294
295
  } else if sample.keys.contains("categoryType") {
295
- let typeId = HKCategoryTypeIdentifier.init(rawValue: sample["categoryType"] as! String)
296
- if let type = HKSampleType.categoryType(forIdentifier: typeId) {
297
- let value = sample["value"] as! Int
298
- let metadata = sample["metadata"] as? [String: Any]
299
-
300
- let categorySample = HKCategorySample.init(type: type, value: value, start: start, end: end, metadata: metadata)
301
- initializedSamples.insert(categorySample)
302
- }
296
+ let typeId = HKCategoryTypeIdentifier.init(rawValue: sample["categoryType"] as! String)
297
+ if let type = HKSampleType.categoryType(forIdentifier: typeId) {
298
+ let value = sample["value"] as! Int
299
+ let metadata = sample["metadata"] as? [String: Any]
300
+
301
+ let categorySample = HKCategorySample.init(type: type, value: value, start: start, end: end, metadata: metadata)
302
+ initializedSamples.insert(categorySample)
303
+ }
303
304
  }
304
305
 
305
306
  }
@@ -321,7 +322,14 @@ class ReactNativeHealthkit: RCTEventEmitter {
321
322
  }
322
323
 
323
324
  guard let type = HKWorkoutActivityType.init(rawValue: typeIdentifier) else {
324
- return reject(TYPE_IDENTIFIER_ERROR, "Failed to initialize HKWorkoutActivityType " + typeIdentifier.description, nil)
325
+ return reject(TYPE_IDENTIFIER_ERROR, "Failed to initialize HKWorkoutActivityType " + typeIdentifier.description, nil)
326
+ }
327
+
328
+ // if start and end both exist, ensure that start date is before end date
329
+ if let startDate = start as Date?, let endDate = end as Date? {
330
+ if startDate > endDate {
331
+ return reject(GENERIC_ERROR, "Start date must be before end date", nil)
332
+ }
325
333
  }
326
334
 
327
335
  var initializedSamples = [HKSample]()
@@ -330,15 +338,18 @@ class ReactNativeHealthkit: RCTEventEmitter {
330
338
  var totalSwimmingStrokeCount: HKQuantity?
331
339
  var totalFlightsClimbed: HKQuantity?
332
340
 
341
+ // generating quantity samples
333
342
  for quantity in quantities {
334
343
  let typeId = HKQuantityTypeIdentifier.init(rawValue: quantity["quantityType"] as! String)
335
344
  if let type = HKSampleType.quantityType(forIdentifier: typeId) {
336
345
  let unitStr = quantity["unit"] as! String
337
346
  let quantityVal = quantity["quantity"] as! Double
338
347
  let metadata = quantity["metadata"] as? [String: Any]
339
-
348
+ let quantityStart = quantity["startDate"] as? String
349
+ let quantityEnd = quantity["endDate"] as? String
340
350
  let unit = HKUnit.init(from: unitStr)
341
351
  let quantity = HKQuantity.init(unit: unit, doubleValue: quantityVal)
352
+
342
353
  if quantity.is(compatibleWith: HKUnit.kilocalorie()) {
343
354
  totalEnergyBurned = quantity
344
355
  }
@@ -351,43 +362,115 @@ class ReactNativeHealthkit: RCTEventEmitter {
351
362
  if typeId == HKQuantityTypeIdentifier.flightsClimbed {
352
363
  totalFlightsClimbed = quantity
353
364
  }
354
- let quantitySample = HKQuantitySample.init(type: type, quantity: quantity, start: start, end: end, metadata: metadata)
355
- initializedSamples.append(quantitySample)
365
+
366
+ if let quantityStart, let quantityEnd {
367
+ let quantityStartDate = self._dateFormatter.date(from: quantityStart) ?? start
368
+ let quantityEndDate = self._dateFormatter.date(from: quantityEnd) ?? end
369
+ let quantitySample = HKQuantitySample.init(type: type, quantity: quantity, start: quantityStartDate, end: quantityEndDate, metadata: metadata)
370
+ initializedSamples.append(quantitySample)
371
+ } else {
372
+ // Handle the case where either startDate or endDate is nil
373
+ let quantitySample = HKQuantitySample.init(type: type, quantity: quantity, start: start, end: end, metadata: metadata)
374
+ initializedSamples.append(quantitySample)
375
+ }
356
376
  }
357
377
  }
358
378
 
379
+ // creating workout
359
380
  var workout: HKWorkout?
360
381
 
361
382
  if totalSwimmingStrokeCount != nil {
362
383
  workout = HKWorkout.init(activityType: type, start: start, end: end, workoutEvents: nil, totalEnergyBurned: totalEnergyBurned, totalDistance: totalDistance, totalSwimmingStrokeCount: totalSwimmingStrokeCount, device: nil, metadata: metadata)
363
384
  } else {
364
- if #available(iOS 11, *) {
365
- if totalFlightsClimbed != nil {
366
- workout = HKWorkout.init(activityType: type, start: start, end: end, workoutEvents: nil, totalEnergyBurned: totalEnergyBurned, totalDistance: totalDistance, totalFlightsClimbed: totalFlightsClimbed, device: nil, metadata: metadata)
367
- }
385
+ if #available(iOS 11, *) {
386
+ if totalFlightsClimbed != nil {
387
+ workout = HKWorkout.init(activityType: type, start: start, end: end, workoutEvents: nil, totalEnergyBurned: totalEnergyBurned, totalDistance: totalDistance, totalFlightsClimbed: totalFlightsClimbed, device: nil, metadata: metadata)
368
388
  }
389
+ }
369
390
  }
370
391
 
371
392
  if workout == nil {
372
393
  workout = HKWorkout.init(activityType: type, start: start, end: end, workoutEvents: nil, totalEnergyBurned: totalEnergyBurned, totalDistance: totalDistance, metadata: metadata)
373
394
  }
374
395
 
375
- store.save(workout!) { (success: Bool, error: Error?) in
376
- guard let err = error else {
377
- if success {
378
- store.add(initializedSamples, to: workout!) { (success, error: Error?) in
379
- guard let err = error else {
380
- return resolve(success)
381
- }
382
- reject(GENERIC_ERROR, err.localizedDescription, error)
383
- }
396
+ guard let workout = workout else {
397
+ reject(GENERIC_ERROR, "Could not create workout", nil)
398
+ return
399
+ }
400
+
401
+ // saving workout, samples and route
402
+ store.save(workout) { (_: Bool, error: Error?) in
403
+ guard error == nil else {
404
+ reject(GENERIC_ERROR, error!.localizedDescription, error)
405
+ return
406
+ }
407
+
408
+ store.add(initializedSamples, to: workout) { (_, error: Error?) in
409
+ guard error == nil else {
410
+ reject(GENERIC_ERROR, error!.localizedDescription, error)
384
411
  return
385
412
  }
386
- return resolve(success)
413
+ return resolve(workout.uuid.uuidString)
387
414
  }
388
- reject(GENERIC_ERROR, err.localizedDescription, error)
389
415
  }
416
+ }
390
417
 
418
+ // function which will take an array of location in string format and create an array of CLLocations
419
+ func _createCLLocations(from locations: [[String: Any]]) -> [CLLocation] {
420
+ var clLocations: [CLLocation] = []
421
+ for location in locations {
422
+ guard let latitude = location["latitude"] as? CLLocationDegrees,
423
+ let longitude = location["longitude"] as? CLLocationDegrees,
424
+ let altitude = location["altitude"] as? CLLocationDistance,
425
+ let horizontalAccuracy = location["horizontalAccuracy"] as? CLLocationAccuracy,
426
+ let verticalAccuracy = location["verticalAccuracy"] as? CLLocationAccuracy,
427
+ let course = location["course"] as? CLLocationDirection,
428
+ let speed = location["speed"] as? CLLocationSpeed,
429
+ let timestamp = location["timestamp"] as? String else {
430
+ continue
431
+ }
432
+
433
+ let date = self._dateFormatter.date(from: timestamp) ?? Date()
434
+ let clLocation = CLLocation(coordinate: CLLocationCoordinate2D(latitude: latitude, longitude: longitude), altitude: altitude, horizontalAccuracy: horizontalAccuracy, verticalAccuracy: verticalAccuracy, course: course, speed: speed, timestamp: date)
435
+ clLocations.append(clLocation)
436
+ }
437
+ return clLocations
438
+ }
439
+
440
+ @available(iOS 13.0.0, *)
441
+ @objc(saveWorkoutRoute:locations:resolve:reject:)
442
+ func saveWorkoutRoute(workoutUUID: String, locations: [[String: Any]], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
443
+ guard let store = _store else {
444
+ return reject(INIT_ERROR, INIT_ERROR_MESSAGE, nil)
445
+ }
446
+
447
+ Task {
448
+ if let uuid = UUID(uuidString: workoutUUID) {
449
+ do {
450
+ let workout = await self.getWorkoutByID(store: store, workoutUUID: uuid)
451
+ if let workout {
452
+ // create CLLocations and return if locations are empty
453
+ let clLocations = self._createCLLocations(from: locations)
454
+ if clLocations.isEmpty {
455
+ return reject(GENERIC_ERROR, "No locations provided", nil)
456
+ }
457
+
458
+ // create route
459
+ let routeBuilder = HKWorkoutRouteBuilder(healthStore: store, device: nil)
460
+ try await routeBuilder.insertRouteData(clLocations)
461
+ try await routeBuilder.finishRoute(with: workout, metadata: nil)
462
+
463
+ return resolve(true)
464
+ } else {
465
+ return reject(GENERIC_ERROR, "No workout found", nil)
466
+ }
467
+ } catch {
468
+ return reject(GENERIC_ERROR, error.localizedDescription, error)
469
+ }
470
+ } else {
471
+ return reject(GENERIC_ERROR, "Invalid UUID", nil)
472
+ }
473
+ }
391
474
  }
392
475
 
393
476
  @objc(saveCategorySample:value:start:end:metadata:resolve:reject:)
@@ -623,7 +706,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
623
706
 
624
707
  @objc(queryWorkoutSamples:distanceUnitString:from:to:limit:ascending:resolve:reject:)
625
708
  func queryWorkoutSamples(energyUnitString: String, distanceUnitString: String, from: Date, to: Date, limit: Int, ascending: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
626
-
709
+
627
710
  guard let store = _store else {
628
711
  return reject(INIT_ERROR, INIT_ERROR_MESSAGE, nil)
629
712
  }
@@ -663,16 +746,16 @@ class ReactNativeHealthkit: RCTEventEmitter {
663
746
  "metadata": serializeMetadata(metadata: workout.metadata),
664
747
  "sourceRevision": serializeSourceRevision(_sourceRevision: workout.sourceRevision) as Any
665
748
  ]
666
-
667
- //this is used for our laps functionality to get markers
668
- //https://developer.apple.com/documentation/healthkit/hkworkoutevent
749
+
750
+ // this is used for our laps functionality to get markers
751
+ // https://developer.apple.com/documentation/healthkit/hkworkoutevent
669
752
  var eventArray: [[String: Any]] = []
670
753
  if let events = workout.workoutEvents {
671
754
  for event in events {
672
755
  let eventStartDate = self._dateFormatter.string(from: event.dateInterval.start)
673
756
  let eventEndDate = self._dateFormatter.string(from: event.dateInterval.end)
674
757
  let eventDict: [String: Any] = [
675
- "type": event.type.rawValue, //https://developer.apple.com/documentation/healthkit/hkworkouteventtype
758
+ "type": event.type.rawValue, // https://developer.apple.com/documentation/healthkit/hkworkouteventtype
676
759
  "startDate": eventStartDate,
677
760
  "endDate": eventEndDate
678
761
  ]
@@ -680,23 +763,23 @@ class ReactNativeHealthkit: RCTEventEmitter {
680
763
  }
681
764
  }
682
765
  dict["events"] = eventArray
683
-
684
- //also used for our laps functionality to get activities for custom workouts defined by the user
685
- //https://developer.apple.com/documentation/healthkit/hkworkout/1615340-init
686
- //it seems this might be depricated in the latest beta so this might need updating!
766
+
767
+ // also used for our laps functionality to get activities for custom workouts defined by the user
768
+ // https://developer.apple.com/documentation/healthkit/hkworkout/1615340-init
769
+ // it seems this might be depricated in the latest beta so this might need updating!
687
770
  var activitiesArray: [[String: Any]] = []
688
771
  if #available(iOS 16.0, *) {
689
772
  let activities: [HKWorkoutActivity] = workout.workoutActivities
690
-
691
- if !activities.isEmpty{
773
+
774
+ if !activities.isEmpty {
692
775
  for activity in activities {
693
776
  var activityStartDate = ""
694
777
  var activityEndDate = ""
695
778
  if let start = activity.startDate as Date? {
696
- activityStartDate = self._dateFormatter.string(from: activity.startDate)
779
+ activityStartDate = self._dateFormatter.string(from: start)
697
780
  }
698
781
  if let end = activity.endDate as Date? {
699
- activityEndDate = self._dateFormatter.string(from: activity.endDate!)
782
+ activityEndDate = self._dateFormatter.string(from: end)
700
783
  }
701
784
  let activityDict: [String: Any] = [
702
785
  "startDate": activityStartDate,
@@ -709,11 +792,11 @@ class ReactNativeHealthkit: RCTEventEmitter {
709
792
  }
710
793
  }
711
794
  dict["activities"] = activitiesArray
712
-
795
+
713
796
  if #available(iOS 11, *) {
714
797
  dict.setValue(serializeQuantity(unit: HKUnit.count(), quantity: workout.totalFlightsClimbed), forKey: "totalFlightsClimbed")
715
798
  }
716
-
799
+
717
800
  #if canImport(WorkoutKit)
718
801
  if #available(iOS 17.0, *) {
719
802
  Task {
@@ -728,7 +811,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
728
811
  }
729
812
  }
730
813
  #endif
731
-
814
+
732
815
  arr.add(dict)
733
816
  }
734
817
  }
@@ -1072,18 +1155,14 @@ class ReactNativeHealthkit: RCTEventEmitter {
1072
1155
 
1073
1156
  let samples = try! await withCheckedThrowingContinuation {
1074
1157
  (continuation: CheckedContinuation<[HKSample], Error>) in
1075
- let query = HKAnchoredObjectQuery(type: HKSeriesType.workoutType(),
1076
- predicate: workoutPredicate,
1077
- anchor: nil,
1078
- limit: 1) {
1079
- (_, samples, _, _, error) in
1158
+ let query = HKSampleQuery(sampleType: HKObjectType.workoutType(), predicate: workoutPredicate, limit: 1, sortDescriptors: nil) { (_, results, error) in
1080
1159
 
1081
1160
  if let hasError = error {
1082
1161
  continuation.resume(throwing: hasError)
1083
1162
  return
1084
1163
  }
1085
1164
 
1086
- guard let samples = samples else {
1165
+ guard let samples = results else {
1087
1166
  fatalError("Should not fail")
1088
1167
  }
1089
1168
 
@@ -36,6 +36,7 @@ var _requestAuthorization = _interopRequireDefault(require("./utils/requestAutho
36
36
  var _saveCategorySample = _interopRequireDefault(require("./utils/saveCategorySample"));
37
37
  var _saveCorrelationSample = _interopRequireDefault(require("./utils/saveCorrelationSample"));
38
38
  var _saveQuantitySample = _interopRequireDefault(require("./utils/saveQuantitySample"));
39
+ var _saveWorkoutRoute = _interopRequireDefault(require("./utils/saveWorkoutRoute"));
39
40
  var _saveWorkoutSample = _interopRequireDefault(require("./utils/saveWorkoutSample"));
40
41
  var _subscribeToChanges = _interopRequireDefault(require("./utils/subscribeToChanges"));
41
42
  var _types = require("./types");
@@ -179,6 +180,7 @@ var _default = {
179
180
  saveCorrelationSample: _saveCorrelationSample.default,
180
181
  saveQuantitySample: _saveQuantitySample.default,
181
182
  saveWorkoutSample: _saveWorkoutSample.default,
183
+ saveWorkoutRoute: _saveWorkoutRoute.default,
182
184
  // subscriptions
183
185
  subscribeToChanges: _subscribeToChanges.default,
184
186
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_useHealthkitAuthorization","_interopRequireDefault","_useIsHealthDataAvailable","_useMostRecentCategorySample","_useMostRecentQuantitySample","_useMostRecentWorkout","_useSubscribeToChanges","_nativeTypes","_interopRequireWildcard","_deleteQuantitySample","_deleteSamples","_getDateOfBirth","_getMostRecentCategorySample","_getMostRecentQuantitySample","_getMostRecentWorkout","_getPreferredUnit","_getPreferredUnits","_getRequestStatusForAuthorization","_queryCategorySamples","_queryCategorySamplesWithAnchor","_queryCorrelationSamples","_queryHeartbeatSeriesSamples","_queryHeartbeatSeriesSamplesWithAnchor","_queryQuantitySamples","_queryQuantitySamplesWithAnchor","_querySources","_queryStatisticsForQuantity","_queryWorkouts","_requestAuthorization","_saveCategorySample","_saveCorrelationSample","_saveQuantitySample","_saveWorkoutSample","_subscribeToChanges","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","currentMajorVersionIOS","Platform","OS","parseInt","Version","allQuantityTypesList","values","HKQuantityTypeIdentifier","availableQuantityTypes","majorVersionIOS","arguments","length","undefined","filter","type","cyclingCadence","cyclingFunctionalThresholdPower","cyclingPower","cyclingSpeed","physicalEffort","timeInDaylight","includes","authorizationStatusFor","Native","bind","isHealthDataAvailable","canAccessProtectedData","disableBackgroundDelivery","disableAllBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","getWorkoutRoutes","_default","isProtectedDataAvailable","getDateOfBirth","getMostRecentQuantitySample","getMostRecentCategorySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","queryCategorySamples","queryCategorySamplesWithAnchor","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","queryQuantitySamplesWithAnchor","queryStatisticsForQuantity","queryWorkouts","querySources","requestAuthorization","deleteQuantitySample","deleteSamples","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useIsHealthDataAvailable","useHealthkitAuthorization"],"sources":["index.ios.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport useHealthkitAuthorization from './hooks/useHealthkitAuthorization'\nimport useIsHealthDataAvailable from './hooks/useIsHealthDataAvailable'\nimport useMostRecentCategorySample from './hooks/useMostRecentCategorySample'\nimport useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample'\nimport useMostRecentWorkout from './hooks/useMostRecentWorkout'\nimport useSubscribeToChanges from './hooks/useSubscribeToChanges'\nimport Native, { HKQuantityTypeIdentifier } from './native-types'\nimport deleteQuantitySample from './utils/deleteQuantitySample'\nimport deleteSamples from './utils/deleteSamples'\nimport getDateOfBirth from './utils/getDateOfBirth'\nimport getMostRecentCategorySample from './utils/getMostRecentCategorySample'\nimport getMostRecentQuantitySample from './utils/getMostRecentQuantitySample'\nimport getMostRecentWorkout from './utils/getMostRecentWorkout'\nimport getPreferredUnit from './utils/getPreferredUnit'\nimport getPreferredUnits from './utils/getPreferredUnits'\nimport getRequestStatusForAuthorization from './utils/getRequestStatusForAuthorization'\nimport queryCategorySamples from './utils/queryCategorySamples'\nimport queryCategorySamplesWithAnchor from './utils/queryCategorySamplesWithAnchor'\nimport queryCorrelationSamples from './utils/queryCorrelationSamples'\nimport queryHeartbeatSeriesSamples from './utils/queryHeartbeatSeriesSamples'\nimport queryHeartbeatSeriesSamplesWithAnchor from './utils/queryHeartbeatSeriesSamplesWithAnchor'\nimport queryQuantitySamples from './utils/queryQuantitySamples'\nimport queryQuantitySamplesWithAnchor from './utils/queryQuantitySamplesWithAnchor'\nimport querySources from './utils/querySources'\nimport queryStatisticsForQuantity from './utils/queryStatisticsForQuantity'\nimport queryWorkouts from './utils/queryWorkouts'\nimport requestAuthorization from './utils/requestAuthorization'\nimport saveCategorySample from './utils/saveCategorySample'\nimport saveCorrelationSample from './utils/saveCorrelationSample'\nimport saveQuantitySample from './utils/saveQuantitySample'\nimport saveWorkoutSample from './utils/saveWorkoutSample'\nimport subscribeToChanges from './utils/subscribeToChanges'\n\nconst currentMajorVersionIOS = Platform.OS === 'ios' ? parseInt(Platform.Version, 10) : 0\n\nconst allQuantityTypesList = [...Object.values(HKQuantityTypeIdentifier)]\n\nconst availableQuantityTypes = (majorVersionIOS = currentMajorVersionIOS) => {\n if (majorVersionIOS >= 17) {\n return allQuantityTypesList\n }\n\n // remove types that are not available before iOS 17\n return allQuantityTypesList.filter((type) => ![\n HKQuantityTypeIdentifier.cyclingCadence,\n HKQuantityTypeIdentifier.cyclingFunctionalThresholdPower,\n HKQuantityTypeIdentifier.cyclingPower,\n HKQuantityTypeIdentifier.cyclingSpeed,\n HKQuantityTypeIdentifier.physicalEffort,\n HKQuantityTypeIdentifier.timeInDaylight,\n ].includes(type))\n}\n\nconst authorizationStatusFor = Native.authorizationStatusFor.bind(Native)\nconst isHealthDataAvailable = Native.isHealthDataAvailable.bind(Native)\n// Todo [>8]: Rename to align with Apple function name (isProtectedDataAvailable)\nconst canAccessProtectedData = Native.canAccessProtectedData.bind(Native)\nconst disableBackgroundDelivery = Native.disableBackgroundDelivery.bind(Native)\nconst disableAllBackgroundDelivery = Native.disableAllBackgroundDelivery.bind(Native)\nconst enableBackgroundDelivery = Native.enableBackgroundDelivery.bind(Native)\nconst getBiologicalSex = Native.getBiologicalSex.bind(Native)\nconst getFitzpatrickSkinType = Native.getFitzpatrickSkinType.bind(Native)\nconst getWheelchairUse = Native.getWheelchairUse.bind(Native)\nconst getBloodType = Native.getBloodType.bind(Native)\nconst getWorkoutRoutes = Native.getWorkoutRoutes.bind(Native)\n\n/**\n * @see {@link https://developer.apple.com/documentation/healthkit/about_the_healthkit_framework About the HealthKit Framework (Apple Docs)}\n */\nexport default {\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614154-authorizationstatus authorizationStatus(for:) (Apple Docs) }\n * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Authorizing access to health data (Apple Docs) }\n */\n authorizationStatusFor,\n\n /**\n *\n * @returns All available quantity types for the current iOS version (currently excluding types that are not available before iOS 17)\n */\n availableQuantityTypes,\n\n /**\n * @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable isHealthDataAvailable() (Apple Docs)}\n * @returns {boolean} true if HealthKit is available; otherwise, false.\n */\n isHealthDataAvailable,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614181-isprotecteddataavailable isProtectedDataAvailable() (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/protecting_user_privacy#3705074 Protecting User Privacy - Access encrypted data (Apple Docs)}\n * @returns {boolean} A Boolean value that indicates whether content protection is active.\n */\n isProtectedDataAvailable: canAccessProtectedData,\n\n // Todo [>8]: Remove to align with Apple function name (isProtectedDataAvailable)\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614181-isprotecteddataavailable isProtectedDataAvailable() (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/protecting_user_privacy#3705074 Protecting User Privacy - Access encrypted data (Apple Docs)}\n * @deprecated Use {@link isProtectedDataAvailable} instead. Will be removed in next major version.\n * @returns {boolean} A Boolean value that indicates whether content protection is active.\n */\n canAccessProtectedData,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614158-disableallbackgrounddelivery disableAllBackgroundDelivery(completion:) (Apple Docs)}\n */\n disableAllBackgroundDelivery,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614177-disablebackgrounddelivery disableBackgroundDelivery(for:withCompletion:) (Apple Docs)}\n */\n disableBackgroundDelivery,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614175-enablebackgrounddelivery enableBackgroundDelivery(for:frequency:withCompletion:) (Apple Docs)}\n */\n enableBackgroundDelivery,\n\n // simple convenience getters\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614171-biologicalsex biologicalSex() (Apple Docs)}\n */\n getBiologicalSex,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614161-fitzpatrickskintype fitzpatrickSkinType() (Apple Docs)}\n */\n getFitzpatrickSkinType,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1648356-wheelchairuse wheelchairUse() (Apple Docs)}\n */\n getWheelchairUse,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614164-bloodtype bloodType() (Apple Docs)}\n */\n getBloodType,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1648357-dateofbirthcomponents dateOfBirthComponents() (Apple Docs)}\n */\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/workouts_and_activity_rings/reading_route_data Reading route data (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/hkworkoutroutequery HKWorkoutRouteQuery (Apple Docs)}\n */\n getWorkoutRoutes,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n // query methods\n queryCategorySamples,\n queryCategorySamplesWithAnchor,\n queryCorrelationSamples,\n queryHeartbeatSeriesSamples,\n queryHeartbeatSeriesSamplesWithAnchor,\n queryQuantitySamples,\n queryQuantitySamplesWithAnchor,\n queryStatisticsForQuantity,\n queryWorkouts,\n querySources,\n\n requestAuthorization,\n\n // delete methods\n deleteQuantitySample,\n deleteSamples,\n\n // save methods\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614168-savecategorysample save(_:withCompletion:) (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/saving_data_to_healthkit Saving data to HealthKit (Apple Docs)}\n */\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n\n // subscriptions\n subscribeToChanges,\n\n /**\n * @returns the most recent sample for the given category type.\n */\n useMostRecentCategorySample,\n /**\n * @returns the most recent sample for the given quantity type.\n */\n useMostRecentQuantitySample,\n /**\n * @returns the most recent workout sample.\n */\n useMostRecentWorkout,\n useSubscribeToChanges,\n /**\n * @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable Apple Docs}\n * @returns {boolean | null} true if HealthKit is available; otherwise, false. null while initializing.\n */\n useIsHealthDataAvailable,\n /**\n * @description Hook to retrieve the current authorization status for the given types, and request authorization if needed.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614152-requestauthorization Apple Docs - requestAuthorization}\n * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Apple Docs - Authorizing access to health data}\n */\n useHealthkitAuthorization,\n}\n\nexport * from './types'\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_useHealthkitAuthorization","_interopRequireDefault","_useIsHealthDataAvailable","_useMostRecentCategorySample","_useMostRecentQuantitySample","_useMostRecentWorkout","_useSubscribeToChanges","_nativeTypes","_interopRequireWildcard","_deleteQuantitySample","_deleteSamples","_getDateOfBirth","_getMostRecentCategorySample","_getMostRecentQuantitySample","_getMostRecentWorkout","_getPreferredUnit","_getPreferredUnits","_getRequestStatusForAuthorization","_queryCategorySamples","_queryCategorySamplesWithAnchor","_queryCorrelationSamples","_queryHeartbeatSeriesSamples","_queryHeartbeatSeriesSamplesWithAnchor","_queryQuantitySamples","_queryQuantitySamplesWithAnchor","_querySources","_queryStatisticsForQuantity","_queryWorkouts","_requestAuthorization","_saveCategorySample","_saveCorrelationSample","_saveQuantitySample","_saveWorkoutRoute","_saveWorkoutSample","_subscribeToChanges","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","currentMajorVersionIOS","Platform","OS","parseInt","Version","allQuantityTypesList","values","HKQuantityTypeIdentifier","availableQuantityTypes","majorVersionIOS","arguments","length","undefined","filter","type","cyclingCadence","cyclingFunctionalThresholdPower","cyclingPower","cyclingSpeed","physicalEffort","timeInDaylight","includes","authorizationStatusFor","Native","bind","isHealthDataAvailable","canAccessProtectedData","disableBackgroundDelivery","disableAllBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","getWorkoutRoutes","_default","isProtectedDataAvailable","getDateOfBirth","getMostRecentQuantitySample","getMostRecentCategorySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","queryCategorySamples","queryCategorySamplesWithAnchor","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","queryQuantitySamplesWithAnchor","queryStatisticsForQuantity","queryWorkouts","querySources","requestAuthorization","deleteQuantitySample","deleteSamples","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","saveWorkoutRoute","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useIsHealthDataAvailable","useHealthkitAuthorization"],"sources":["index.ios.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport useHealthkitAuthorization from './hooks/useHealthkitAuthorization'\nimport useIsHealthDataAvailable from './hooks/useIsHealthDataAvailable'\nimport useMostRecentCategorySample from './hooks/useMostRecentCategorySample'\nimport useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample'\nimport useMostRecentWorkout from './hooks/useMostRecentWorkout'\nimport useSubscribeToChanges from './hooks/useSubscribeToChanges'\nimport Native, { HKQuantityTypeIdentifier } from './native-types'\nimport deleteQuantitySample from './utils/deleteQuantitySample'\nimport deleteSamples from './utils/deleteSamples'\nimport getDateOfBirth from './utils/getDateOfBirth'\nimport getMostRecentCategorySample from './utils/getMostRecentCategorySample'\nimport getMostRecentQuantitySample from './utils/getMostRecentQuantitySample'\nimport getMostRecentWorkout from './utils/getMostRecentWorkout'\nimport getPreferredUnit from './utils/getPreferredUnit'\nimport getPreferredUnits from './utils/getPreferredUnits'\nimport getRequestStatusForAuthorization from './utils/getRequestStatusForAuthorization'\nimport queryCategorySamples from './utils/queryCategorySamples'\nimport queryCategorySamplesWithAnchor from './utils/queryCategorySamplesWithAnchor'\nimport queryCorrelationSamples from './utils/queryCorrelationSamples'\nimport queryHeartbeatSeriesSamples from './utils/queryHeartbeatSeriesSamples'\nimport queryHeartbeatSeriesSamplesWithAnchor from './utils/queryHeartbeatSeriesSamplesWithAnchor'\nimport queryQuantitySamples from './utils/queryQuantitySamples'\nimport queryQuantitySamplesWithAnchor from './utils/queryQuantitySamplesWithAnchor'\nimport querySources from './utils/querySources'\nimport queryStatisticsForQuantity from './utils/queryStatisticsForQuantity'\nimport queryWorkouts from './utils/queryWorkouts'\nimport requestAuthorization from './utils/requestAuthorization'\nimport saveCategorySample from './utils/saveCategorySample'\nimport saveCorrelationSample from './utils/saveCorrelationSample'\nimport saveQuantitySample from './utils/saveQuantitySample'\nimport saveWorkoutRoute from './utils/saveWorkoutRoute'\nimport saveWorkoutSample from './utils/saveWorkoutSample'\nimport subscribeToChanges from './utils/subscribeToChanges'\n\nconst currentMajorVersionIOS = Platform.OS === 'ios' ? parseInt(Platform.Version, 10) : 0\n\nconst allQuantityTypesList = [...Object.values(HKQuantityTypeIdentifier)]\n\nconst availableQuantityTypes = (majorVersionIOS = currentMajorVersionIOS) => {\n if (majorVersionIOS >= 17) {\n return allQuantityTypesList\n }\n\n // remove types that are not available before iOS 17\n return allQuantityTypesList.filter((type) => ![\n HKQuantityTypeIdentifier.cyclingCadence,\n HKQuantityTypeIdentifier.cyclingFunctionalThresholdPower,\n HKQuantityTypeIdentifier.cyclingPower,\n HKQuantityTypeIdentifier.cyclingSpeed,\n HKQuantityTypeIdentifier.physicalEffort,\n HKQuantityTypeIdentifier.timeInDaylight,\n ].includes(type))\n}\n\nconst authorizationStatusFor = Native.authorizationStatusFor.bind(Native)\nconst isHealthDataAvailable = Native.isHealthDataAvailable.bind(Native)\n// Todo [>8]: Rename to align with Apple function name (isProtectedDataAvailable)\nconst canAccessProtectedData = Native.canAccessProtectedData.bind(Native)\nconst disableBackgroundDelivery = Native.disableBackgroundDelivery.bind(Native)\nconst disableAllBackgroundDelivery = Native.disableAllBackgroundDelivery.bind(Native)\nconst enableBackgroundDelivery = Native.enableBackgroundDelivery.bind(Native)\nconst getBiologicalSex = Native.getBiologicalSex.bind(Native)\nconst getFitzpatrickSkinType = Native.getFitzpatrickSkinType.bind(Native)\nconst getWheelchairUse = Native.getWheelchairUse.bind(Native)\nconst getBloodType = Native.getBloodType.bind(Native)\nconst getWorkoutRoutes = Native.getWorkoutRoutes.bind(Native)\n\n/**\n * @see {@link https://developer.apple.com/documentation/healthkit/about_the_healthkit_framework About the HealthKit Framework (Apple Docs)}\n */\nexport default {\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614154-authorizationstatus authorizationStatus(for:) (Apple Docs) }\n * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Authorizing access to health data (Apple Docs) }\n */\n authorizationStatusFor,\n\n /**\n *\n * @returns All available quantity types for the current iOS version (currently excluding types that are not available before iOS 17)\n */\n availableQuantityTypes,\n\n /**\n * @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable isHealthDataAvailable() (Apple Docs)}\n * @returns {boolean} true if HealthKit is available; otherwise, false.\n */\n isHealthDataAvailable,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614181-isprotecteddataavailable isProtectedDataAvailable() (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/protecting_user_privacy#3705074 Protecting User Privacy - Access encrypted data (Apple Docs)}\n * @returns {boolean} A Boolean value that indicates whether content protection is active.\n */\n isProtectedDataAvailable: canAccessProtectedData,\n\n // Todo [>8]: Remove to align with Apple function name (isProtectedDataAvailable)\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614181-isprotecteddataavailable isProtectedDataAvailable() (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/protecting_user_privacy#3705074 Protecting User Privacy - Access encrypted data (Apple Docs)}\n * @deprecated Use {@link isProtectedDataAvailable} instead. Will be removed in next major version.\n * @returns {boolean} A Boolean value that indicates whether content protection is active.\n */\n canAccessProtectedData,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614158-disableallbackgrounddelivery disableAllBackgroundDelivery(completion:) (Apple Docs)}\n */\n disableAllBackgroundDelivery,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614177-disablebackgrounddelivery disableBackgroundDelivery(for:withCompletion:) (Apple Docs)}\n */\n disableBackgroundDelivery,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614175-enablebackgrounddelivery enableBackgroundDelivery(for:frequency:withCompletion:) (Apple Docs)}\n */\n enableBackgroundDelivery,\n\n // simple convenience getters\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614171-biologicalsex biologicalSex() (Apple Docs)}\n */\n getBiologicalSex,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614161-fitzpatrickskintype fitzpatrickSkinType() (Apple Docs)}\n */\n getFitzpatrickSkinType,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1648356-wheelchairuse wheelchairUse() (Apple Docs)}\n */\n getWheelchairUse,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614164-bloodtype bloodType() (Apple Docs)}\n */\n getBloodType,\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1648357-dateofbirthcomponents dateOfBirthComponents() (Apple Docs)}\n */\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/workouts_and_activity_rings/reading_route_data Reading route data (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/hkworkoutroutequery HKWorkoutRouteQuery (Apple Docs)}\n */\n getWorkoutRoutes,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n // query methods\n queryCategorySamples,\n queryCategorySamplesWithAnchor,\n queryCorrelationSamples,\n queryHeartbeatSeriesSamples,\n queryHeartbeatSeriesSamplesWithAnchor,\n queryQuantitySamples,\n queryQuantitySamplesWithAnchor,\n queryStatisticsForQuantity,\n queryWorkouts,\n querySources,\n\n requestAuthorization,\n\n // delete methods\n deleteQuantitySample,\n deleteSamples,\n\n // save methods\n /**\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614168-savecategorysample save(_:withCompletion:) (Apple Docs)}\n * @see {@link https://developer.apple.com/documentation/healthkit/saving_data_to_healthkit Saving data to HealthKit (Apple Docs)}\n */\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n saveWorkoutRoute,\n\n // subscriptions\n subscribeToChanges,\n\n /**\n * @returns the most recent sample for the given category type.\n */\n useMostRecentCategorySample,\n /**\n * @returns the most recent sample for the given quantity type.\n */\n useMostRecentQuantitySample,\n /**\n * @returns the most recent workout sample.\n */\n useMostRecentWorkout,\n useSubscribeToChanges,\n /**\n * @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable Apple Docs}\n * @returns {boolean | null} true if HealthKit is available; otherwise, false. null while initializing.\n */\n useIsHealthDataAvailable,\n /**\n * @description Hook to retrieve the current authorization status for the given types, and request authorization if needed.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614152-requestauthorization Apple Docs - requestAuthorization}\n * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Apple Docs - Authorizing access to health data}\n */\n useHealthkitAuthorization,\n}\n\nexport * from './types'\n"],"mappings":"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"}
@@ -86,7 +86,8 @@ const Healthkit = {
86
86
  saveCategorySample: UnavailableFn(Promise.resolve(false)),
87
87
  saveCorrelationSample: UnavailableFn(Promise.resolve(false)),
88
88
  saveQuantitySample: UnavailableFn(Promise.resolve(false)),
89
- saveWorkoutSample: UnavailableFn(Promise.resolve(false)),
89
+ saveWorkoutSample: UnavailableFn(Promise.resolve(null)),
90
+ saveWorkoutRoute: UnavailableFn(Promise.resolve(false)),
90
91
  subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),
91
92
  useMostRecentCategorySample: UnavailableFn(null),
92
93
  useMostRecentQuantitySample: UnavailableFn(null),
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_nativeTypes","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","notAvailableError","Platform","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","HKAuthorizationStatus","notDetermined","availableQuantityTypes","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","HKBiologicalSex","notSet","getBloodType","HKBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","HKFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","HKUnits","Count","getPreferredUnits","getRequestStatusForAuthorization","HKAuthorizationRequestStatus","unknown","getWheelchairUse","HKWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCategorySamplesWithAnchor","samples","deletedSamples","newAnchor","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","queryQuantitySamplesWithAnchor","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","querySources","requestAuthorization","deleteQuantitySample","deleteSamples","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useHealthkitAuthorization","useIsHealthDataAvailable","canAccessProtectedData","isProtectedDataAvailable","_default","default"],"sources":["index.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport {\n HKAuthorizationRequestStatus, HKAuthorizationStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnits, HKWheelchairUse,\n} from './native-types'\n\nimport type ReactNativeHealthkit from './index.ios'\nimport type { QueryCategorySamplesFn } from './utils/queryCategorySamples'\nimport type { QueryQuantitySamplesFn } from './utils/queryQuantitySamples'\n\nconst notAvailableError = `[@kingstinct/react-native-healthkit] Platform \"${\n Platform.OS\n}\" not supported`\n\nlet hasWarned = false\n\nfunction UnavailableFn<T = unknown>(retVal: T) {\n return () => {\n if (!hasWarned) {\n // eslint-disable-next-line no-console\n console.warn(notAvailableError)\n hasWarned = true\n }\n return retVal\n }\n}\n\nconst Healthkit = {\n authorizationStatusFor: UnavailableFn(Promise.resolve(HKAuthorizationStatus.notDetermined)),\n availableQuantityTypes: UnavailableFn([]),\n disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n getBiologicalSex: UnavailableFn(Promise.resolve(HKBiologicalSex.notSet)),\n getBloodType: UnavailableFn(Promise.resolve(HKBloodType.notSet)),\n getDateOfBirth: UnavailableFn(Promise.resolve(new Date(0))),\n getFitzpatrickSkinType: UnavailableFn(Promise.resolve(HKFitzpatrickSkinType.notSet)),\n getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),\n getPreferredUnit: UnavailableFn(Promise.resolve(HKUnits.Count)),\n getPreferredUnits: UnavailableFn(Promise.resolve([])),\n getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),\n getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),\n getWorkoutRoutes: UnavailableFn(Promise.resolve([])),\n isHealthDataAvailable: async () => Promise.resolve(false),\n queryCategorySamples: UnavailableFn(Promise.resolve([])) as unknown as QueryCategorySamplesFn,\n queryCategorySamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryCorrelationSamples: UnavailableFn(Promise.resolve([])),\n queryHeartbeatSeriesSamples: UnavailableFn(Promise.resolve([])),\n queryHeartbeatSeriesSamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryQuantitySamples: UnavailableFn(Promise.resolve([])) as unknown as QueryQuantitySamplesFn,\n queryQuantitySamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryStatisticsForQuantity: UnavailableFn(Promise.resolve({\n averageQuantity: undefined,\n maximumQuantity: undefined,\n minimumQuantity: undefined,\n sumQuantity: undefined,\n mostRecentQuantity: undefined,\n mostRecentQuantityDateInterval: undefined,\n duration: undefined,\n })),\n queryWorkouts: UnavailableFn(Promise.resolve([])),\n querySources: UnavailableFn(Promise.resolve([])),\n requestAuthorization: UnavailableFn(Promise.resolve(false)),\n deleteQuantitySample: UnavailableFn(Promise.resolve(false)),\n deleteSamples: UnavailableFn(Promise.resolve(false)),\n saveCategorySample: UnavailableFn(Promise.resolve(false)),\n saveCorrelationSample: UnavailableFn(Promise.resolve(false)),\n saveQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveWorkoutSample: UnavailableFn(Promise.resolve(false)),\n subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),\n useMostRecentCategorySample: UnavailableFn(null),\n useMostRecentQuantitySample: UnavailableFn(null),\n useMostRecentWorkout: UnavailableFn(null),\n useSubscribeToChanges: UnavailableFn([null, () => null]),\n useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(HKAuthorizationRequestStatus.unknown)] as const),\n useIsHealthDataAvailable: () => false,\n canAccessProtectedData: async () => Promise.resolve(false),\n isProtectedDataAvailable: async () => Promise.resolve(false),\n} as typeof ReactNativeHealthkit\n\nexport * from './types'\n\nexport default Healthkit as typeof ReactNativeHealthkit\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_nativeTypes","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","notAvailableError","Platform","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","HKAuthorizationStatus","notDetermined","availableQuantityTypes","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","HKBiologicalSex","notSet","getBloodType","HKBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","HKFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","HKUnits","Count","getPreferredUnits","getRequestStatusForAuthorization","HKAuthorizationRequestStatus","unknown","getWheelchairUse","HKWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCategorySamplesWithAnchor","samples","deletedSamples","newAnchor","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","queryQuantitySamplesWithAnchor","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","querySources","requestAuthorization","deleteQuantitySample","deleteSamples","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","saveWorkoutRoute","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useHealthkitAuthorization","useIsHealthDataAvailable","canAccessProtectedData","isProtectedDataAvailable","_default","default"],"sources":["index.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport {\n HKAuthorizationRequestStatus, HKAuthorizationStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnits, HKWheelchairUse,\n} from './native-types'\n\nimport type ReactNativeHealthkit from './index.ios'\nimport type { QueryCategorySamplesFn } from './utils/queryCategorySamples'\nimport type { QueryQuantitySamplesFn } from './utils/queryQuantitySamples'\n\nconst notAvailableError = `[@kingstinct/react-native-healthkit] Platform \"${\n Platform.OS\n}\" not supported`\n\nlet hasWarned = false\n\nfunction UnavailableFn<T = unknown>(retVal: T) {\n return () => {\n if (!hasWarned) {\n // eslint-disable-next-line no-console\n console.warn(notAvailableError)\n hasWarned = true\n }\n return retVal\n }\n}\n\nconst Healthkit = {\n authorizationStatusFor: UnavailableFn(Promise.resolve(HKAuthorizationStatus.notDetermined)),\n availableQuantityTypes: UnavailableFn([]),\n disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n getBiologicalSex: UnavailableFn(Promise.resolve(HKBiologicalSex.notSet)),\n getBloodType: UnavailableFn(Promise.resolve(HKBloodType.notSet)),\n getDateOfBirth: UnavailableFn(Promise.resolve(new Date(0))),\n getFitzpatrickSkinType: UnavailableFn(Promise.resolve(HKFitzpatrickSkinType.notSet)),\n getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),\n getPreferredUnit: UnavailableFn(Promise.resolve(HKUnits.Count)),\n getPreferredUnits: UnavailableFn(Promise.resolve([])),\n getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),\n getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),\n getWorkoutRoutes: UnavailableFn(Promise.resolve([])),\n isHealthDataAvailable: async () => Promise.resolve(false),\n queryCategorySamples: UnavailableFn(Promise.resolve([])) as unknown as QueryCategorySamplesFn,\n queryCategorySamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryCorrelationSamples: UnavailableFn(Promise.resolve([])),\n queryHeartbeatSeriesSamples: UnavailableFn(Promise.resolve([])),\n queryHeartbeatSeriesSamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryQuantitySamples: UnavailableFn(Promise.resolve([])) as unknown as QueryQuantitySamplesFn,\n queryQuantitySamplesWithAnchor: UnavailableFn(Promise.resolve({\n samples: [],\n deletedSamples: [],\n newAnchor: '',\n })),\n queryStatisticsForQuantity: UnavailableFn(Promise.resolve({\n averageQuantity: undefined,\n maximumQuantity: undefined,\n minimumQuantity: undefined,\n sumQuantity: undefined,\n mostRecentQuantity: undefined,\n mostRecentQuantityDateInterval: undefined,\n duration: undefined,\n })),\n queryWorkouts: UnavailableFn(Promise.resolve([])),\n querySources: UnavailableFn(Promise.resolve([])),\n requestAuthorization: UnavailableFn(Promise.resolve(false)),\n deleteQuantitySample: UnavailableFn(Promise.resolve(false)),\n deleteSamples: UnavailableFn(Promise.resolve(false)),\n saveCategorySample: UnavailableFn(Promise.resolve(false)),\n saveCorrelationSample: UnavailableFn(Promise.resolve(false)),\n saveQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveWorkoutSample: UnavailableFn(Promise.resolve(null)),\n saveWorkoutRoute: UnavailableFn(Promise.resolve(false)),\n subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),\n useMostRecentCategorySample: UnavailableFn(null),\n useMostRecentQuantitySample: UnavailableFn(null),\n useMostRecentWorkout: UnavailableFn(null),\n useSubscribeToChanges: UnavailableFn([null, () => null]),\n useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(HKAuthorizationRequestStatus.unknown)] as const),\n useIsHealthDataAvailable: () => false,\n canAccessProtectedData: async () => Promise.resolve(false),\n isProtectedDataAvailable: async () => Promise.resolve(false),\n} as typeof ReactNativeHealthkit\n\nexport * from './types'\n\nexport default Healthkit as typeof ReactNativeHealthkit\n"],"mappings":"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"}
@@ -37,7 +37,8 @@ const mockModule = {
37
37
  subscribeToObserverQuery: jest.fn(),
38
38
  unsubscribeQuery: jest.fn(),
39
39
  // Todo [>8]: Remove to align with Apple function name (isProtectedDataAvailable)
40
- canAccessProtectedData: jest.fn()
40
+ canAccessProtectedData: jest.fn(),
41
+ saveWorkoutRoute: jest.fn()
41
42
  };
42
43
  _reactNative.NativeModules.ReactNativeHealthkit = mockModule;
43
44
  //# sourceMappingURL=jest.setup.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","mockModule","isHealthDataAvailable","jest","fn","addListener","removeListeners","authorizationStatusFor","requestAuthorization","saveQuantitySample","deleteQuantitySample","deleteSamples","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","getBiologicalSex","getBloodType","getDateOfBirth","getFitzpatrickSkinType","getPreferredUnits","getRequestStatusForAuthorization","getWheelchairUse","getWorkoutRoutes","queryCategorySamples","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","querySources","queryStatisticsForQuantity","queryWorkoutSamples","saveCategorySample","saveCorrelationSample","saveWorkoutSample","subscribeToObserverQuery","unsubscribeQuery","canAccessProtectedData","NativeModules","ReactNativeHealthkit"],"sources":["jest.setup.ts"],"sourcesContent":["import { NativeModule, NativeModules } from 'react-native'\n\nimport type Native from './native-types'\n\nconst mockModule: (NativeModule & typeof Native) = {\n isHealthDataAvailable: jest.fn(),\n addListener: jest.fn(),\n removeListeners: jest.fn(),\n authorizationStatusFor: jest.fn(),\n requestAuthorization: jest.fn(),\n saveQuantitySample: jest.fn(),\n deleteQuantitySample: jest.fn(),\n deleteSamples: jest.fn(),\n disableAllBackgroundDelivery: jest.fn(),\n disableBackgroundDelivery: jest.fn(),\n enableBackgroundDelivery: jest.fn(),\n queryCategorySamplesWithAnchor: jest.fn(),\n queryQuantitySamplesWithAnchor: jest.fn(),\n getBiologicalSex: jest.fn(),\n getBloodType: jest.fn(),\n getDateOfBirth: jest.fn(),\n getFitzpatrickSkinType: jest.fn(),\n getPreferredUnits: jest.fn(),\n getRequestStatusForAuthorization: jest.fn(),\n getWheelchairUse: jest.fn(),\n getWorkoutRoutes: jest.fn(),\n queryCategorySamples: jest.fn(),\n queryCorrelationSamples: jest.fn(),\n queryHeartbeatSeriesSamples: jest.fn(),\n queryHeartbeatSeriesSamplesWithAnchor: jest.fn(),\n queryQuantitySamples: jest.fn(),\n querySources: jest.fn(),\n queryStatisticsForQuantity: jest.fn(),\n queryWorkoutSamples: jest.fn(),\n saveCategorySample: jest.fn(),\n saveCorrelationSample: jest.fn(),\n saveWorkoutSample: jest.fn(),\n subscribeToObserverQuery: jest.fn(),\n unsubscribeQuery: jest.fn(),\n // Todo [>8]: Remove to align with Apple function name (isProtectedDataAvailable)\n canAccessProtectedData: jest.fn(),\n}\n\nNativeModules.ReactNativeHealthkit = mockModule\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,MAAMC,UAA0C,GAAG;EACjDC,qBAAqB,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;EAChCC,WAAW,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;EACtBE,eAAe,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;EAC1BG,sBAAsB,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;EACjCI,oBAAoB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BK,kBAAkB,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;EAC7BM,oBAAoB,EAAEP,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BO,aAAa,EAAER,IAAI,CAACC,EAAE,CAAC,CAAC;EACxBQ,4BAA4B,EAAET,IAAI,CAACC,EAAE,CAAC,CAAC;EACvCS,yBAAyB,EAAEV,IAAI,CAACC,EAAE,CAAC,CAAC;EACpCU,wBAAwB,EAAEX,IAAI,CAACC,EAAE,CAAC,CAAC;EACnCW,8BAA8B,EAAEZ,IAAI,CAACC,EAAE,CAAC,CAAC;EACzCY,8BAA8B,EAAEb,IAAI,CAACC,EAAE,CAAC,CAAC;EACzCa,gBAAgB,EAAEd,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3Bc,YAAY,EAAEf,IAAI,CAACC,EAAE,CAAC,CAAC;EACvBe,cAAc,EAAEhB,IAAI,CAACC,EAAE,CAAC,CAAC;EACzBgB,sBAAsB,EAAEjB,IAAI,CAACC,EAAE,CAAC,CAAC;EACjCiB,iBAAiB,EAAElB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC5BkB,gCAAgC,EAAEnB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3CmB,gBAAgB,EAAEpB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3BoB,gBAAgB,EAAErB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3BqB,oBAAoB,EAAEtB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BsB,uBAAuB,EAAEvB,IAAI,CAACC,EAAE,CAAC,CAAC;EAClCuB,2BAA2B,EAAExB,IAAI,CAACC,EAAE,CAAC,CAAC;EACtCwB,qCAAqC,EAAEzB,IAAI,CAACC,EAAE,CAAC,CAAC;EAChDyB,oBAAoB,EAAE1B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/B0B,YAAY,EAAE3B,IAAI,CAACC,EAAE,CAAC,CAAC;EACvB2B,0BAA0B,EAAE5B,IAAI,CAACC,EAAE,CAAC,CAAC;EACrC4B,mBAAmB,EAAE7B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC9B6B,kBAAkB,EAAE9B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC7B8B,qBAAqB,EAAE/B,IAAI,CAACC,EAAE,CAAC,CAAC;EAChC+B,iBAAiB,EAAEhC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC5BgC,wBAAwB,EAAEjC,IAAI,CAACC,EAAE,CAAC,CAAC;EACnCiC,gBAAgB,EAAElC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3B;EACAkC,sBAAsB,EAAEnC,IAAI,CAACC,EAAE,CAAC;AAClC,CAAC;AAEDmC,0BAAa,CAACC,oBAAoB,GAAGvC,UAAU"}
1
+ {"version":3,"names":["_reactNative","require","mockModule","isHealthDataAvailable","jest","fn","addListener","removeListeners","authorizationStatusFor","requestAuthorization","saveQuantitySample","deleteQuantitySample","deleteSamples","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","getBiologicalSex","getBloodType","getDateOfBirth","getFitzpatrickSkinType","getPreferredUnits","getRequestStatusForAuthorization","getWheelchairUse","getWorkoutRoutes","queryCategorySamples","queryCorrelationSamples","queryHeartbeatSeriesSamples","queryHeartbeatSeriesSamplesWithAnchor","queryQuantitySamples","querySources","queryStatisticsForQuantity","queryWorkoutSamples","saveCategorySample","saveCorrelationSample","saveWorkoutSample","subscribeToObserverQuery","unsubscribeQuery","canAccessProtectedData","saveWorkoutRoute","NativeModules","ReactNativeHealthkit"],"sources":["jest.setup.ts"],"sourcesContent":["import { NativeModule, NativeModules } from 'react-native'\n\nimport type Native from './native-types'\n\nconst mockModule: (NativeModule & typeof Native) = {\n isHealthDataAvailable: jest.fn(),\n addListener: jest.fn(),\n removeListeners: jest.fn(),\n authorizationStatusFor: jest.fn(),\n requestAuthorization: jest.fn(),\n saveQuantitySample: jest.fn(),\n deleteQuantitySample: jest.fn(),\n deleteSamples: jest.fn(),\n disableAllBackgroundDelivery: jest.fn(),\n disableBackgroundDelivery: jest.fn(),\n enableBackgroundDelivery: jest.fn(),\n queryCategorySamplesWithAnchor: jest.fn(),\n queryQuantitySamplesWithAnchor: jest.fn(),\n getBiologicalSex: jest.fn(),\n getBloodType: jest.fn(),\n getDateOfBirth: jest.fn(),\n getFitzpatrickSkinType: jest.fn(),\n getPreferredUnits: jest.fn(),\n getRequestStatusForAuthorization: jest.fn(),\n getWheelchairUse: jest.fn(),\n getWorkoutRoutes: jest.fn(),\n queryCategorySamples: jest.fn(),\n queryCorrelationSamples: jest.fn(),\n queryHeartbeatSeriesSamples: jest.fn(),\n queryHeartbeatSeriesSamplesWithAnchor: jest.fn(),\n queryQuantitySamples: jest.fn(),\n querySources: jest.fn(),\n queryStatisticsForQuantity: jest.fn(),\n queryWorkoutSamples: jest.fn(),\n saveCategorySample: jest.fn(),\n saveCorrelationSample: jest.fn(),\n saveWorkoutSample: jest.fn(),\n subscribeToObserverQuery: jest.fn(),\n unsubscribeQuery: jest.fn(),\n // Todo [>8]: Remove to align with Apple function name (isProtectedDataAvailable)\n canAccessProtectedData: jest.fn(),\n saveWorkoutRoute: jest.fn(),\n}\n\nNativeModules.ReactNativeHealthkit = mockModule\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,MAAMC,UAA0C,GAAG;EACjDC,qBAAqB,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;EAChCC,WAAW,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;EACtBE,eAAe,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;EAC1BG,sBAAsB,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;EACjCI,oBAAoB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BK,kBAAkB,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;EAC7BM,oBAAoB,EAAEP,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BO,aAAa,EAAER,IAAI,CAACC,EAAE,CAAC,CAAC;EACxBQ,4BAA4B,EAAET,IAAI,CAACC,EAAE,CAAC,CAAC;EACvCS,yBAAyB,EAAEV,IAAI,CAACC,EAAE,CAAC,CAAC;EACpCU,wBAAwB,EAAEX,IAAI,CAACC,EAAE,CAAC,CAAC;EACnCW,8BAA8B,EAAEZ,IAAI,CAACC,EAAE,CAAC,CAAC;EACzCY,8BAA8B,EAAEb,IAAI,CAACC,EAAE,CAAC,CAAC;EACzCa,gBAAgB,EAAEd,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3Bc,YAAY,EAAEf,IAAI,CAACC,EAAE,CAAC,CAAC;EACvBe,cAAc,EAAEhB,IAAI,CAACC,EAAE,CAAC,CAAC;EACzBgB,sBAAsB,EAAEjB,IAAI,CAACC,EAAE,CAAC,CAAC;EACjCiB,iBAAiB,EAAElB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC5BkB,gCAAgC,EAAEnB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3CmB,gBAAgB,EAAEpB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3BoB,gBAAgB,EAAErB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3BqB,oBAAoB,EAAEtB,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/BsB,uBAAuB,EAAEvB,IAAI,CAACC,EAAE,CAAC,CAAC;EAClCuB,2BAA2B,EAAExB,IAAI,CAACC,EAAE,CAAC,CAAC;EACtCwB,qCAAqC,EAAEzB,IAAI,CAACC,EAAE,CAAC,CAAC;EAChDyB,oBAAoB,EAAE1B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC/B0B,YAAY,EAAE3B,IAAI,CAACC,EAAE,CAAC,CAAC;EACvB2B,0BAA0B,EAAE5B,IAAI,CAACC,EAAE,CAAC,CAAC;EACrC4B,mBAAmB,EAAE7B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC9B6B,kBAAkB,EAAE9B,IAAI,CAACC,EAAE,CAAC,CAAC;EAC7B8B,qBAAqB,EAAE/B,IAAI,CAACC,EAAE,CAAC,CAAC;EAChC+B,iBAAiB,EAAEhC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC5BgC,wBAAwB,EAAEjC,IAAI,CAACC,EAAE,CAAC,CAAC;EACnCiC,gBAAgB,EAAElC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC3B;EACAkC,sBAAsB,EAAEnC,IAAI,CAACC,EAAE,CAAC,CAAC;EACjCmC,gBAAgB,EAAEpC,IAAI,CAACC,EAAE,CAAC;AAC5B,CAAC;AAEDoC,0BAAa,CAACC,oBAAoB,GAAGxC,UAAU"}