@kingstinct/react-native-healthkit 12.1.2 → 12.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 (266) hide show
  1. package/ios/CategoryTypeModule.swift +49 -97
  2. package/ios/CharacteristicTypeModule.swift +77 -63
  3. package/ios/CoreModule.swift +324 -280
  4. package/ios/CorrelationTypeModule.swift +192 -144
  5. package/ios/ElectrocardiogramModule.swift +185 -194
  6. package/ios/HeartbeatSeriesModule.swift +123 -171
  7. package/ios/Helpers.swift +312 -571
  8. package/ios/MedicationModule.swift +259 -0
  9. package/ios/PredicateHelpers.swift +334 -0
  10. package/ios/QuantityTypeModule.swift +297 -378
  11. package/ios/Serializers.swift +273 -210
  12. package/ios/SourceProxy.swift +2 -2
  13. package/ios/StateOfMindModule.swift +179 -125
  14. package/ios/WorkoutProxy.swift +235 -112
  15. package/ios/WorkoutsModule.swift +214 -262
  16. package/lib/commonjs/healthkit.ios.js +22 -2
  17. package/lib/commonjs/healthkit.js +35 -5
  18. package/lib/commonjs/hooks/useStatisticsForQuantity.js +1 -1
  19. package/lib/commonjs/hooks/useSubscribeToCategorySamples.js +20 -0
  20. package/lib/commonjs/modules.js +2 -1
  21. package/lib/commonjs/specs/MedicationModule.nitro.js +27 -0
  22. package/lib/commonjs/types/Constants.js +2 -1
  23. package/lib/commonjs/types/QuantityType.js +8 -1
  24. package/lib/commonjs/types/QueryOptions.js +18 -0
  25. package/lib/commonjs/types/WeatherCondition.js +32 -32
  26. package/lib/commonjs/types/Workouts.js +1 -50
  27. package/lib/commonjs/utils/getCategorySampleById.js +1 -1
  28. package/lib/commonjs/utils/getQuantitySampleById.js +1 -1
  29. package/lib/commonjs/utils/getWorkoutById.js +1 -1
  30. package/lib/commonjs/utils/subscribeToCategorySamples.js +29 -0
  31. package/lib/commonjs/utils/subscribeToQuantitySamples.js +8 -25
  32. package/lib/module/healthkit.ios.js +20 -2
  33. package/lib/module/healthkit.js +32 -2
  34. package/lib/module/hooks/useStatisticsForQuantity.js +1 -1
  35. package/lib/module/hooks/useSubscribeToCategorySamples.js +17 -0
  36. package/lib/module/modules.js +1 -0
  37. package/lib/module/specs/MedicationModule.nitro.js +26 -0
  38. package/lib/module/types/Constants.js +1 -0
  39. package/lib/module/types/QuantityType.js +7 -0
  40. package/lib/module/types/QueryOptions.js +17 -1
  41. package/lib/module/types/WeatherCondition.js +31 -31
  42. package/lib/module/types/Workouts.js +0 -49
  43. package/lib/module/utils/getCategorySampleById.js +1 -1
  44. package/lib/module/utils/getQuantitySampleById.js +1 -1
  45. package/lib/module/utils/getWorkoutById.js +1 -1
  46. package/lib/module/utils/subscribeToCategorySamples.js +26 -0
  47. package/lib/module/utils/subscribeToQuantitySamples.js +8 -25
  48. package/lib/typescript/healthkit.d.ts +18 -9
  49. package/lib/typescript/healthkit.ios.d.ts +33 -15
  50. package/lib/typescript/hooks/useSubscribeToCategorySamples.d.ts +3 -0
  51. package/lib/typescript/modules.d.ts +2 -0
  52. package/lib/typescript/specs/CategoryTypeModule.nitro.d.ts +2 -2
  53. package/lib/typescript/specs/CoreModule.nitro.d.ts +2 -1
  54. package/lib/typescript/specs/CorrelationTypeModule.nitro.d.ts +4 -2
  55. package/lib/typescript/specs/ElectrocardiogramModule.nitro.d.ts +1 -1
  56. package/lib/typescript/specs/HeartbeatSeriesModule.nitro.d.ts +1 -1
  57. package/lib/typescript/specs/MedicationModule.nitro.d.ts +56 -0
  58. package/lib/typescript/specs/QuantityTypeModule.nitro.d.ts +4 -4
  59. package/lib/typescript/specs/StateOfMindModule.nitro.d.ts +4 -3
  60. package/lib/typescript/types/CategoryType.d.ts +10 -20
  61. package/lib/typescript/types/Constants.d.ts +1 -0
  62. package/lib/typescript/types/CorrelationType.d.ts +8 -10
  63. package/lib/typescript/types/ElectrocardiogramSample.d.ts +2 -12
  64. package/lib/typescript/types/HeartbeatSeries.d.ts +2 -14
  65. package/lib/typescript/types/QuantitySample.d.ts +2 -8
  66. package/lib/typescript/types/QuantityType.d.ts +7 -8
  67. package/lib/typescript/types/QuantityTypeIdentifier.d.ts +23 -23
  68. package/lib/typescript/types/QueryOptions.d.ts +43 -28
  69. package/lib/typescript/types/Shared.d.ts +52 -7
  70. package/lib/typescript/types/StateOfMind.d.ts +7 -10
  71. package/lib/typescript/types/Subscriptions.d.ts +12 -3
  72. package/lib/typescript/types/WeatherCondition.d.ts +1 -1
  73. package/lib/typescript/types/Workouts.d.ts +28 -81
  74. package/lib/typescript/utils/subscribeToCategorySamples.d.ts +5 -0
  75. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.cpp +57 -0
  76. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.hpp +592 -389
  77. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Umbrella.hpp +65 -30
  78. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.mm +8 -0
  79. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.swift +15 -0
  80. package/nitrogen/generated/ios/c++/HybridCategoryTypeModuleSpecSwift.hpp +32 -26
  81. package/nitrogen/generated/ios/c++/HybridCoreModuleSpecSwift.hpp +36 -37
  82. package/nitrogen/generated/ios/c++/HybridCorrelationTypeModuleSpecSwift.hpp +55 -2
  83. package/nitrogen/generated/ios/c++/HybridElectrocardiogramModuleSpecSwift.hpp +36 -30
  84. package/nitrogen/generated/ios/c++/HybridHeartbeatSeriesModuleSpecSwift.hpp +35 -29
  85. package/nitrogen/generated/ios/c++/HybridMedicationModuleSpecSwift.cpp +11 -0
  86. package/nitrogen/generated/ios/c++/HybridMedicationModuleSpecSwift.hpp +181 -0
  87. package/nitrogen/generated/ios/c++/HybridQuantityTypeModuleSpecSwift.hpp +48 -42
  88. package/nitrogen/generated/ios/c++/HybridStateOfMindModuleSpecSwift.hpp +59 -36
  89. package/nitrogen/generated/ios/c++/HybridWorkoutProxySpecSwift.hpp +150 -29
  90. package/nitrogen/generated/ios/c++/HybridWorkoutsModuleSpecSwift.hpp +13 -28
  91. package/nitrogen/generated/ios/swift/AggregationStyle.swift +48 -0
  92. package/nitrogen/generated/ios/swift/CategorySample.swift +571 -24
  93. package/nitrogen/generated/ios/swift/ComparisonPredicateOperator.swift +2 -2
  94. package/nitrogen/generated/ios/swift/CorrelationSample.swift +640 -17
  95. package/nitrogen/generated/ios/swift/{PredicateWithStartAndEnd.swift → DateFilter.swift} +5 -5
  96. package/nitrogen/generated/ios/swift/ECGQueryOptionsWithAnchor.swift +11 -91
  97. package/nitrogen/generated/ios/swift/ECGQueryOptionsWithSortOrder.swift +11 -91
  98. package/nitrogen/generated/ios/swift/ElectrocardiogramSample.swift +570 -72
  99. package/nitrogen/generated/ios/swift/FilterForSamples.swift +349 -12
  100. package/nitrogen/generated/ios/swift/FilterForSamplesBase.swift +234 -0
  101. package/nitrogen/generated/ios/swift/FilterForWorkouts.swift +366 -0
  102. package/nitrogen/generated/ios/swift/FilterForWorkoutsBase.swift +240 -0
  103. package/nitrogen/generated/ios/swift/Func_void_MedicationDoseEventsWithAnchorResponse.swift +47 -0
  104. package/nitrogen/generated/ios/swift/Func_void_QueryCorrelationSamplesWithAnchorResponse.swift +47 -0
  105. package/nitrogen/generated/ios/swift/Func_void_StateOfMindSamplesWithAnchorResponse.swift +47 -0
  106. package/nitrogen/generated/ios/swift/Func_void_std__vector_MedicationDoseEvent_.swift +47 -0
  107. package/nitrogen/generated/ios/swift/Func_void_std__vector_UserAnnotatedMedication_.swift +47 -0
  108. package/nitrogen/generated/ios/swift/GeneralForm.swift +104 -0
  109. package/nitrogen/generated/ios/swift/HeartRateMotionContext.swift +44 -0
  110. package/nitrogen/generated/ios/swift/HeartbeatSeriesSample.swift +565 -37
  111. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec.swift +1 -1
  112. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec_cxx.swift +2 -2
  113. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec.swift +2 -1
  114. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec_cxx.swift +19 -31
  115. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec.swift +2 -1
  116. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec_cxx.swift +21 -2
  117. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec.swift +1 -1
  118. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec_cxx.swift +2 -2
  119. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec.swift +1 -1
  120. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec_cxx.swift +2 -2
  121. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec.swift +60 -0
  122. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec_cxx.swift +208 -0
  123. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec.swift +2 -2
  124. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec_cxx.swift +9 -43
  125. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec.swift +2 -1
  126. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec_cxx.swift +21 -2
  127. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec.swift +34 -6
  128. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec_cxx.swift +376 -36
  129. package/nitrogen/generated/ios/swift/InsulinDeliveryReason.swift +40 -0
  130. package/nitrogen/generated/ios/swift/MedicationConcept.swift +80 -0
  131. package/nitrogen/generated/ios/swift/MedicationDoseEvent.swift +781 -0
  132. package/nitrogen/generated/ios/swift/MedicationDoseEventLogStatus.swift +56 -0
  133. package/nitrogen/generated/ios/swift/MedicationDoseEventScheduleType.swift +40 -0
  134. package/nitrogen/generated/ios/swift/MedicationDoseEventsWithAnchorResponse.swift +81 -0
  135. package/nitrogen/generated/ios/swift/ObjectTypeIdentifier.swift +16 -16
  136. package/nitrogen/generated/ios/swift/PredicateWithMetadataKey.swift +7 -7
  137. package/nitrogen/generated/ios/swift/QuantitySample.swift +574 -27
  138. package/nitrogen/generated/ios/swift/QuantityTypeIdentifier.swift +16 -16
  139. package/nitrogen/generated/ios/swift/QueryCorrelationSamplesWithAnchorResponse.swift +81 -0
  140. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchor.swift +11 -91
  141. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchorAndUnit.swift +11 -91
  142. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrder.swift +11 -91
  143. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrderAndUnit.swift +11 -91
  144. package/nitrogen/generated/ios/swift/RelatedCoding.swift +76 -0
  145. package/nitrogen/generated/ios/swift/SampleType.swift +68 -0
  146. package/nitrogen/generated/ios/swift/SampleTypeIdentifier.swift +16 -16
  147. package/nitrogen/generated/ios/swift/SampleTypeIdentifierWriteable.swift +0 -16
  148. package/nitrogen/generated/ios/swift/StateOfMindSample.swift +586 -58
  149. package/nitrogen/generated/ios/swift/StateOfMindSamplesWithAnchorResponse.swift +81 -0
  150. package/nitrogen/generated/ios/swift/StatisticsQueryOptions.swift +7 -75
  151. package/nitrogen/generated/ios/swift/UserAnnotatedMedication.swift +87 -0
  152. package/nitrogen/generated/ios/swift/WeatherCondition.swift +144 -0
  153. package/nitrogen/generated/ios/swift/WorkoutQueryOptions.swift +11 -105
  154. package/nitrogen/generated/ios/swift/WorkoutQueryOptionsWithAnchor.swift +11 -105
  155. package/nitrogen/generated/ios/swift/WorkoutSample.swift +751 -78
  156. package/nitrogen/generated/shared/c++/AggregationStyle.hpp +64 -0
  157. package/nitrogen/generated/shared/c++/CategorySample.hpp +126 -23
  158. package/nitrogen/generated/shared/c++/CorrelationSample.hpp +134 -12
  159. package/nitrogen/generated/shared/c++/{PredicateWithStartAndEnd.hpp → DateFilter.hpp} +10 -10
  160. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithAnchor.hpp +12 -31
  161. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithSortOrder.hpp +12 -31
  162. package/nitrogen/generated/shared/c++/ElectrocardiogramSample.hpp +135 -36
  163. package/nitrogen/generated/shared/c++/FilterForSamples.hpp +124 -0
  164. package/nitrogen/generated/shared/c++/FilterForSamplesBase.hpp +109 -0
  165. package/nitrogen/generated/shared/c++/FilterForWorkouts.hpp +131 -0
  166. package/nitrogen/generated/shared/c++/FilterForWorkoutsBase.hpp +116 -0
  167. package/nitrogen/generated/shared/c++/GeneralForm.hpp +140 -0
  168. package/nitrogen/generated/shared/c++/HeartRateMotionContext.hpp +67 -0
  169. package/nitrogen/generated/shared/c++/HeartbeatSeriesSample.hpp +131 -28
  170. package/nitrogen/generated/shared/c++/HybridCategoryTypeModuleSpec.hpp +1 -2
  171. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.cpp +1 -0
  172. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.hpp +10 -28
  173. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.cpp +1 -0
  174. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.hpp +11 -1
  175. package/nitrogen/generated/shared/c++/HybridElectrocardiogramModuleSpec.hpp +1 -2
  176. package/nitrogen/generated/shared/c++/HybridHeartbeatSeriesModuleSpec.hpp +1 -2
  177. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.cpp +24 -0
  178. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.hpp +80 -0
  179. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.cpp +1 -1
  180. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.hpp +6 -25
  181. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.cpp +1 -0
  182. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.hpp +9 -2
  183. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.cpp +33 -5
  184. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.hpp +56 -16
  185. package/nitrogen/generated/shared/c++/InsulinDeliveryReason.hpp +62 -0
  186. package/nitrogen/generated/shared/c++/MedicationConcept.hpp +93 -0
  187. package/nitrogen/generated/shared/c++/MedicationDoseEvent.hpp +240 -0
  188. package/nitrogen/generated/shared/c++/MedicationDoseEventLogStatus.hpp +66 -0
  189. package/nitrogen/generated/shared/c++/MedicationDoseEventScheduleType.hpp +62 -0
  190. package/nitrogen/generated/shared/c++/MedicationDoseEventsWithAnchorResponse.hpp +89 -0
  191. package/nitrogen/generated/shared/c++/ObjectTypeIdentifier.hpp +105 -105
  192. package/nitrogen/generated/shared/c++/PredicateWithMetadataKey.hpp +8 -8
  193. package/nitrogen/generated/shared/c++/QuantitySample.hpp +130 -27
  194. package/nitrogen/generated/shared/c++/QuantityTypeIdentifier.hpp +105 -105
  195. package/nitrogen/generated/shared/c++/QueryCorrelationSamplesWithAnchorResponse.hpp +89 -0
  196. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchor.hpp +12 -31
  197. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchorAndUnit.hpp +12 -31
  198. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrder.hpp +12 -31
  199. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrderAndUnit.hpp +12 -31
  200. package/nitrogen/generated/shared/c++/RelatedCoding.hpp +84 -0
  201. package/nitrogen/generated/shared/c++/SampleType.hpp +87 -0
  202. package/nitrogen/generated/shared/c++/SampleTypeIdentifier.hpp +105 -105
  203. package/nitrogen/generated/shared/c++/SampleTypeIdentifierWriteable.hpp +105 -121
  204. package/nitrogen/generated/shared/c++/StateOfMindSample.hpp +139 -36
  205. package/nitrogen/generated/shared/c++/StateOfMindSamplesWithAnchorResponse.hpp +89 -0
  206. package/nitrogen/generated/shared/c++/StatisticsQueryOptions.hpp +8 -27
  207. package/nitrogen/generated/shared/c++/UserAnnotatedMedication.hpp +90 -0
  208. package/nitrogen/generated/shared/c++/WeatherCondition.hpp +88 -0
  209. package/nitrogen/generated/shared/c++/WorkoutQueryOptions.hpp +12 -37
  210. package/nitrogen/generated/shared/c++/WorkoutQueryOptionsWithAnchor.hpp +12 -37
  211. package/nitrogen/generated/shared/c++/WorkoutSample.hpp +159 -35
  212. package/package.json +1 -1
  213. package/src/healthkit.ios.ts +30 -0
  214. package/src/healthkit.ts +68 -3
  215. package/src/hooks/useStatisticsForQuantity.ts +1 -1
  216. package/src/hooks/useSubscribeToCategorySamples.ts +31 -0
  217. package/src/modules.ts +4 -0
  218. package/src/specs/CategoryTypeModule.nitro.ts +2 -2
  219. package/src/specs/CoreModule.nitro.ts +3 -0
  220. package/src/specs/CorrelationTypeModule.nitro.ts +11 -3
  221. package/src/specs/ElectrocardiogramModule.nitro.ts +1 -1
  222. package/src/specs/HeartbeatSeriesModule.nitro.ts +1 -1
  223. package/src/specs/MedicationModule.nitro.ts +140 -0
  224. package/src/specs/QuantityTypeModule.nitro.ts +4 -7
  225. package/src/specs/StateOfMindModule.nitro.ts +10 -2
  226. package/src/types/CategoryType.ts +15 -22
  227. package/src/types/Constants.ts +3 -0
  228. package/src/types/CorrelationType.ts +10 -15
  229. package/src/types/ElectrocardiogramSample.ts +2 -14
  230. package/src/types/HeartbeatSeries.ts +2 -15
  231. package/src/types/QuantitySample.ts +2 -8
  232. package/src/types/QuantityType.ts +8 -17
  233. package/src/types/QuantityTypeIdentifier.ts +25 -25
  234. package/src/types/QueryOptions.ts +54 -43
  235. package/src/types/Shared.ts +74 -17
  236. package/src/types/StateOfMind.ts +8 -10
  237. package/src/types/Subscriptions.ts +19 -3
  238. package/src/types/WeatherCondition.ts +1 -1
  239. package/src/types/Workouts.ts +28 -91
  240. package/src/utils/getCategorySampleById.ts +1 -1
  241. package/src/utils/getQuantitySampleById.ts +1 -1
  242. package/src/utils/getWorkoutById.ts +1 -2
  243. package/src/utils/subscribeToCategorySamples.ts +38 -0
  244. package/src/utils/subscribeToQuantitySamples.ts +12 -37
  245. package/nitrogen/generated/ios/swift/FilterForSamplesAnd.swift +0 -94
  246. package/nitrogen/generated/ios/swift/FilterForSamplesOr.swift +0 -94
  247. package/nitrogen/generated/ios/swift/PredicateForSamples.swift +0 -21
  248. package/nitrogen/generated/ios/swift/PredicateForWorkouts.swift +0 -23
  249. package/nitrogen/generated/ios/swift/PredicateForWorkoutsAnd.swift +0 -108
  250. package/nitrogen/generated/ios/swift/PredicateForWorkoutsOr.swift +0 -108
  251. package/nitrogen/generated/ios/swift/PredicateFromWorkout.swift +0 -45
  252. package/nitrogen/generated/ios/swift/PredicateWithMetadataOperator.swift +0 -48
  253. package/nitrogen/generated/ios/swift/PredicateWithUUID.swift +0 -35
  254. package/nitrogen/generated/ios/swift/PredicateWithUUIDs.swift +0 -47
  255. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_FilterForSamplesAnd_FilterForSamplesOr.swift +0 -23
  256. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_WorkoutActivityTypePredicate_WorkoutDurationPredicate_PredicateForWorkoutsOr_PredicateForWorkoutsAnd.swift +0 -25
  257. package/nitrogen/generated/ios/swift/WorkoutActivityTypePredicate.swift +0 -35
  258. package/nitrogen/generated/shared/c++/FilterForSamplesAnd.hpp +0 -90
  259. package/nitrogen/generated/shared/c++/FilterForSamplesOr.hpp +0 -90
  260. package/nitrogen/generated/shared/c++/PredicateForWorkoutsAnd.hpp +0 -96
  261. package/nitrogen/generated/shared/c++/PredicateForWorkoutsOr.hpp +0 -96
  262. package/nitrogen/generated/shared/c++/PredicateFromWorkout.hpp +0 -77
  263. package/nitrogen/generated/shared/c++/PredicateWithMetadataOperator.hpp +0 -84
  264. package/nitrogen/generated/shared/c++/PredicateWithUUID.hpp +0 -75
  265. package/nitrogen/generated/shared/c++/PredicateWithUUIDs.hpp +0 -76
  266. package/nitrogen/generated/shared/c++/WorkoutActivityTypePredicate.hpp +0 -76
@@ -1,189 +1,141 @@
1
1
  import HealthKit
2
2
  import NitroModules
3
3
 
4
- func getHeartbeatSeriesByID(
5
- seriesUUID: UUID
6
- ) async -> HKHeartbeatSeriesSample? {
7
- let seriesPredicate = HKQuery.predicateForObject(with: seriesUUID)
8
-
9
- let samples = try! await withCheckedThrowingContinuation {
10
- (continuation: CheckedContinuation<[HKSample], Error>) in
11
- let query = HKSampleQuery(
12
- sampleType: HKSeriesType.heartbeat(),
13
- predicate: seriesPredicate,
14
- limit: 1,
15
- sortDescriptors: nil
16
- ) { (_, results, error) in
17
-
18
- if let hasError = error {
19
- continuation.resume(throwing: hasError)
20
- return
21
- }
22
-
23
- guard let samples = results else {
24
- return continuation.resume(throwing: RuntimeError.error(withMessage: "Empty response"))
25
- }
26
-
27
- continuation.resume(returning: samples)
28
- }
29
- store.execute(query)
30
- }
4
+ func serializeHeartbeatSeriesSample(sample: HKHeartbeatSeriesSample) async throws
5
+ -> HeartbeatSeriesSample {
6
+ let heartbeats = try await getHeartbeatSeriesHeartbeats(sample: sample)
7
+
8
+ return HeartbeatSeriesSample(
9
+ heartbeats: heartbeats,
10
+ sampleType: serializeSampleType(sample.sampleType),
11
+ startDate: sample.startDate,
12
+ endDate: sample.endDate,
13
+ hasUndeterminedDuration: sample.hasUndeterminedDuration,
14
+
15
+ metadataWeatherCondition: serializeWeatherCondition(
16
+ sample.metadata?[HKMetadataKeyWeatherCondition] as? HKWeatherCondition),
17
+ metadataWeatherHumidity: serializeUnknownQuantityTyped(
18
+ quantity: sample.metadata?[HKMetadataKeyWeatherHumidity] as? HKQuantity),
19
+ metadataWeatherTemperature: serializeUnknownQuantityTyped(
20
+ quantity: sample.metadata?[HKMetadataKeyWeatherTemperature] as? HKQuantity),
21
+ metadataInsulinDeliveryReason: serializeInsulinDeliveryReason(
22
+ sample.metadata?[HKMetadataKeyInsulinDeliveryReason] as? HKInsulinDeliveryReason),
23
+ metadataHeartRateMotionContext: serializeHeartRateMotionContext(
24
+ sample.metadata?[HKMetadataKeyHeartRateMotionContext] as? HKHeartRateMotionContext),
25
+
26
+ uuid: sample.uuid.uuidString,
27
+ sourceRevision: serializeSourceRevision(sample.sourceRevision),
28
+ device: serializeDevice(hkDevice: sample.device),
29
+ metadata: serializeMetadata(sample.metadata),
30
+
31
+ metadataExternalUUID: sample.metadata?[HKMetadataKeyExternalUUID] as? String,
32
+ metadataTimeZone: sample.metadata?[HKMetadataKeyTimeZone] as? String,
33
+ metadataWasUserEntered: sample.metadata?[HKMetadataKeyWasUserEntered] as? Bool,
34
+ metadataDeviceSerialNumber: sample.metadata?[HKMetadataKeyDeviceSerialNumber] as? String,
35
+ metadataUdiDeviceIdentifier: sample.metadata?[HKMetadataKeyUDIDeviceIdentifier] as? String,
36
+ metadataUdiProductionIdentifier: sample.metadata?[HKMetadataKeyUDIProductionIdentifier]
37
+ as? String,
38
+ metadataDigitalSignature: sample.metadata?[HKMetadataKeyDigitalSignature] as? String,
39
+ metadataDeviceName: sample.metadata?[HKMetadataKeyDeviceName] as? String,
40
+ metadataDeviceManufacturerName: sample.metadata?[HKMetadataKeyDeviceManufacturerName]
41
+ as? String,
42
+ metadataSyncIdentifier: sample.metadata?[HKMetadataKeySyncIdentifier] as? String,
43
+ metadataSyncVersion: sample.metadata?[HKMetadataKeySyncVersion] as? Double,
44
+ metadataWasTakenInLab: sample.metadata?[HKMetadataKeyWasTakenInLab] as? Bool,
45
+ metadataReferenceRangeLowerLimit: sample.metadata?[HKMetadataKeyReferenceRangeLowerLimit]
46
+ as? Double,
47
+ metadataReferenceRangeUpperLimit: sample.metadata?[HKMetadataKeyReferenceRangeUpperLimit]
48
+ as? Double,
49
+ metadataAlgorithmVersion: sample.metadata?[HKMetadataKeyAlgorithmVersion] as? Double
50
+ )
51
+ }
31
52
 
32
- guard let heartbeatSeries = samples as? [HKHeartbeatSeriesSample] else {
33
- return nil
34
- }
53
+ func getHeartbeatSeriesHeartbeats(sample: HKHeartbeatSeriesSample) async throws -> [Heartbeat] {
54
+ return try await withCheckedThrowingContinuation { continuation in
55
+ var allBeats: [Heartbeat] = []
35
56
 
36
- return heartbeatSeries.first ?? nil
37
- }
57
+ let query = HKHeartbeatSeriesQuery(heartbeatSeries: sample) {
58
+ (
59
+ _: HKHeartbeatSeriesQuery, timeSinceSeriesStart: TimeInterval, precededByGap: Bool,
60
+ done: Bool, error: Error?
61
+ ) in
38
62
 
39
- @available(iOS 13.0.0, *)
40
- class HeartbeatSeriesModule: HybridHeartbeatSeriesModuleSpec {
41
- func queryHeartbeatSeriesSamples(
42
- options: QueryOptionsWithSortOrder?
43
- ) throws -> Promise<[HeartbeatSeriesSample]> {
44
- let predicate = try createPredicate(filter: options?.filter)
45
- let queryLimit = getQueryLimit(options?.limit)
46
-
47
- return Promise.async {
48
- try await withCheckedThrowingContinuation { continuation in
49
- let query = HKSampleQuery(
50
- sampleType: HKSeriesType.heartbeat(),
51
- predicate: predicate,
52
- limit: queryLimit,
53
- sortDescriptors: [
54
- NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: options?.ascending ?? false)
55
- ]
56
- ) { (_: HKSampleQuery, samples: [HKSample]?, error: Error?) in
57
- if let error = error {
58
- continuation.resume(throwing: error)
59
- return
60
- }
61
-
62
- guard let samples = samples else {
63
- continuation.resume(returning: [])
64
- return
65
- }
66
-
67
- Task {
68
- do {
69
- var serializedSamples: [HeartbeatSeriesSample] = []
70
-
71
- for sample in samples {
72
- guard let heartbeatSample = sample as? HKHeartbeatSeriesSample else { continue }
73
-
74
- let serialized = try await self.serializeHeartbeatSeriesSample(sample: heartbeatSample)
75
- serializedSamples.append(serialized)
76
- }
77
-
78
- continuation.resume(returning: serializedSamples)
79
- } catch {
80
- continuation.resume(throwing: error)
81
- }
82
- }
83
- }
84
-
85
- store.execute(query)
86
- }
87
- }
88
- }
63
+ if let error = error {
64
+ continuation.resume(throwing: error)
65
+ return
66
+ }
89
67
 
90
- func queryHeartbeatSeriesSamplesWithAnchor(
91
- options: QueryOptionsWithAnchor
92
- ) throws -> Promise<HeartbeatSeriesSamplesWithAnchorResponse> {
93
- let predicate = try createPredicate(filter: options.filter)
94
- let queryLimit = getQueryLimit(options.limit)
95
- let queryAnchor = try deserializeHKQueryAnchor(base64String: options.anchor)
96
-
97
- return Promise.async {
98
- try await withCheckedThrowingContinuation { continuation in
99
- let query = HKAnchoredObjectQuery(
100
- type: HKSeriesType.heartbeat(),
101
- predicate: predicate,
102
- anchor: queryAnchor,
103
- limit: queryLimit
104
- ) { (_: HKAnchoredObjectQuery, samples: [HKSample]?, deletedSamples: [HKDeletedObject]?, newAnchor: HKQueryAnchor?, error: Error?) in
105
- if let error = error {
106
- continuation.resume(throwing: error)
107
- return
108
- }
109
-
110
- guard let samples = samples else {
111
- let response = HeartbeatSeriesSamplesWithAnchorResponse(
112
- samples: [],
113
- deletedSamples: deletedSamples?.map { serializeDeletedSample(sample: $0) } ?? [],
114
- newAnchor: serializeAnchor(anchor: newAnchor) ?? ""
115
- )
116
- continuation.resume(returning: response)
117
- return
118
- }
119
-
120
- Task {
121
- do {
122
- var serializedSamples: [HeartbeatSeriesSample] = []
123
-
124
- for sample in samples {
125
- guard let heartbeatSample = sample as? HKHeartbeatSeriesSample else { continue }
126
- let serialized = try await self.serializeHeartbeatSeriesSample(sample: heartbeatSample)
127
- serializedSamples.append(serialized)
128
- }
129
-
130
- let response = HeartbeatSeriesSamplesWithAnchorResponse(
131
- samples: serializedSamples,
132
- deletedSamples: deletedSamples?.map { serializeDeletedSample(sample: $0) } ?? [],
133
- newAnchor: serializeAnchor(anchor: newAnchor) ?? ""
134
- )
135
-
136
- continuation.resume(returning: response)
137
- } catch {
138
- continuation.resume(throwing: error)
139
- }
140
- }
141
- }
142
-
143
- store.execute(query)
144
- }
145
- }
146
- }
68
+ let heartbeat = Heartbeat(
69
+ timeSinceSeriesStart: timeSinceSeriesStart,
70
+ precededByGap: precededByGap
71
+ )
72
+
73
+ allBeats.append(heartbeat)
147
74
 
148
- private func serializeHeartbeatSeriesSample(sample: HKHeartbeatSeriesSample) async throws -> HeartbeatSeriesSample {
149
- let heartbeats = try await getHeartbeatSeriesHeartbeats(sample: sample)
150
-
151
- return HeartbeatSeriesSample(
152
- uuid: sample.uuid.uuidString,
153
- device: serializeDevice(hkDevice: sample.device),
154
- startDate: sample.startDate,
155
- endDate: sample.endDate,
156
- heartbeats: heartbeats,
157
- metadata: serializeMetadata(sample.metadata),
158
- sourceRevision: serializeSourceRevision(sample.sourceRevision)
159
- )
75
+ if done {
76
+ continuation.resume(returning: allBeats)
77
+ }
160
78
  }
161
79
 
162
- private func getHeartbeatSeriesHeartbeats(sample: HKHeartbeatSeriesSample) async throws -> [Heartbeat] {
163
- return try await withCheckedThrowingContinuation { continuation in
164
- var allBeats: [Heartbeat] = []
80
+ store.execute(query)
81
+ }
82
+ }
165
83
 
166
- let query = HKHeartbeatSeriesQuery(heartbeatSeries: sample) {
167
- (_: HKHeartbeatSeriesQuery, timeSinceSeriesStart: TimeInterval, precededByGap: Bool, done: Bool, error: Error?) in
84
+ @available(iOS 13.0.0, *)
85
+ class HeartbeatSeriesModule: HybridHeartbeatSeriesModuleSpec {
86
+ func queryHeartbeatSeriesSamples(
87
+ options: QueryOptionsWithSortOrder
88
+ ) -> Promise<[HeartbeatSeriesSample]> {
168
89
 
169
- if let error = error {
170
- continuation.resume(throwing: error)
171
- return
172
- }
90
+ return Promise.async {
91
+ let predicate = createPredicateForSamples(options.filter)
173
92
 
174
- let heartbeat = Heartbeat(
175
- timeSinceSeriesStart: timeSinceSeriesStart,
176
- precededByGap: precededByGap
177
- )
93
+ let samples = try await sampleQueryAsync(
94
+ sampleType: HKSeriesType.heartbeat(),
95
+ limit: options.limit,
96
+ predicate: predicate,
97
+ sortDescriptors: getSortDescriptors(ascending: options.ascending)
98
+ )
99
+ var serializedSamples: [HeartbeatSeriesSample] = []
178
100
 
179
- allBeats.append(heartbeat)
101
+ for sample in samples {
102
+ guard let heartbeatSample = sample as? HKHeartbeatSeriesSample else { continue }
180
103
 
181
- if done {
182
- continuation.resume(returning: allBeats)
183
- }
184
- }
104
+ let serialized = try await serializeHeartbeatSeriesSample(sample: heartbeatSample)
105
+ serializedSamples.append(serialized)
106
+ }
185
107
 
186
- store.execute(query)
187
- }
108
+ return serializedSamples
109
+ }
110
+ }
111
+
112
+ func queryHeartbeatSeriesSamplesWithAnchor(
113
+ options: QueryOptionsWithAnchor
114
+ ) -> Promise<HeartbeatSeriesSamplesWithAnchorResponse> {
115
+ return Promise.async {
116
+ let predicate = createPredicateForSamples(options.filter)
117
+
118
+ let response = try await sampleAnchoredQueryAsync(
119
+ sampleType: HKSeriesType.heartbeat(),
120
+ limit: options.limit,
121
+ queryAnchor: options.anchor,
122
+ predicate: predicate
123
+ )
124
+
125
+ var serializedSamples: [HeartbeatSeriesSample] = []
126
+
127
+ for sample in response.samples {
128
+ guard let heartbeatSample = sample as? HKHeartbeatSeriesSample else { continue }
129
+ let serialized = try await serializeHeartbeatSeriesSample(sample: heartbeatSample)
130
+ serializedSamples.append(serialized)
131
+ }
132
+
133
+ return HeartbeatSeriesSamplesWithAnchorResponse(
134
+ samples: serializedSamples,
135
+ deletedSamples: response.deletedSamples,
136
+ newAnchor: response.newAnchor
137
+ )
188
138
  }
139
+ }
140
+
189
141
  }