@kingstinct/react-native-healthkit 12.1.2 → 13.0.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 (280) hide show
  1. package/ios/CategoryTypeModule.swift +52 -98
  2. package/ios/CharacteristicTypeModule.swift +77 -63
  3. package/ios/CoreModule.swift +324 -280
  4. package/ios/CorrelationTypeModule.swift +198 -144
  5. package/ios/ElectrocardiogramModule.swift +185 -194
  6. package/ios/HeartbeatSeriesModule.swift +123 -171
  7. package/ios/Helpers.swift +319 -571
  8. package/ios/MedicationModule.swift +259 -0
  9. package/ios/PredicateHelpers.swift +334 -0
  10. package/ios/QuantityTypeModule.swift +436 -373
  11. package/ios/Serializers.swift +273 -210
  12. package/ios/SourceProxy.swift +2 -2
  13. package/ios/StateOfMindModule.swift +181 -125
  14. package/ios/WorkoutProxy.swift +235 -112
  15. package/ios/WorkoutsModule.swift +214 -262
  16. package/lib/commonjs/healthkit.ios.js +26 -2
  17. package/lib/commonjs/healthkit.js +46 -10
  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 +24 -2
  33. package/lib/module/healthkit.js +43 -7
  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 +24 -13
  49. package/lib/typescript/healthkit.ios.d.ts +45 -23
  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 +4 -4
  53. package/lib/typescript/specs/CoreModule.nitro.d.ts +2 -1
  54. package/lib/typescript/specs/CorrelationTypeModule.nitro.d.ts +5 -3
  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 +7 -5
  59. package/lib/typescript/specs/StateOfMindModule.nitro.d.ts +5 -4
  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 +3 -9
  66. package/lib/typescript/types/QuantityType.d.ts +13 -9
  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 +113 -16
  76. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.hpp +1065 -573
  77. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Umbrella.hpp +68 -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 +40 -34
  81. package/nitrogen/generated/ios/c++/HybridCoreModuleSpecSwift.hpp +36 -37
  82. package/nitrogen/generated/ios/c++/HybridCorrelationTypeModuleSpecSwift.hpp +78 -25
  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 +69 -44
  88. package/nitrogen/generated/ios/c++/HybridStateOfMindModuleSpecSwift.hpp +60 -37
  89. package/nitrogen/generated/ios/c++/HybridWorkoutProxySpecSwift.hpp +150 -29
  90. package/nitrogen/generated/ios/c++/HybridWorkoutsModuleSpecSwift.hpp +14 -29
  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__optional_CategorySample_.swift +47 -0
  107. package/nitrogen/generated/ios/swift/Func_void_std__optional_CorrelationSample_.swift +47 -0
  108. package/nitrogen/generated/ios/swift/Func_void_std__optional_QuantitySample_.swift +47 -0
  109. package/nitrogen/generated/ios/swift/Func_void_std__optional_StateOfMindSample_.swift +47 -0
  110. package/nitrogen/generated/ios/swift/Func_void_std__vector_MedicationDoseEvent_.swift +47 -0
  111. package/nitrogen/generated/ios/swift/Func_void_std__vector_QueryStatisticsResponseFromSingleSource_.swift +47 -0
  112. package/nitrogen/generated/ios/swift/Func_void_std__vector_UserAnnotatedMedication_.swift +47 -0
  113. package/nitrogen/generated/ios/swift/GeneralForm.swift +104 -0
  114. package/nitrogen/generated/ios/swift/HeartRateMotionContext.swift +44 -0
  115. package/nitrogen/generated/ios/swift/HeartbeatSeriesSample.swift +565 -37
  116. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec.swift +2 -2
  117. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec_cxx.swift +23 -10
  118. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec.swift +2 -1
  119. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec_cxx.swift +19 -31
  120. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec.swift +3 -2
  121. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec_cxx.swift +42 -10
  122. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec.swift +1 -1
  123. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec_cxx.swift +2 -2
  124. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec.swift +1 -1
  125. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec_cxx.swift +2 -2
  126. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec.swift +60 -0
  127. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec_cxx.swift +208 -0
  128. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec.swift +5 -3
  129. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec_cxx.swift +76 -47
  130. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec.swift +3 -2
  131. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec_cxx.swift +34 -9
  132. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec.swift +34 -6
  133. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec_cxx.swift +376 -36
  134. package/nitrogen/generated/ios/swift/InsulinDeliveryReason.swift +40 -0
  135. package/nitrogen/generated/ios/swift/MedicationConcept.swift +80 -0
  136. package/nitrogen/generated/ios/swift/MedicationDoseEvent.swift +781 -0
  137. package/nitrogen/generated/ios/swift/MedicationDoseEventLogStatus.swift +56 -0
  138. package/nitrogen/generated/ios/swift/MedicationDoseEventScheduleType.swift +40 -0
  139. package/nitrogen/generated/ios/swift/MedicationDoseEventsWithAnchorResponse.swift +81 -0
  140. package/nitrogen/generated/ios/swift/ObjectTypeIdentifier.swift +16 -16
  141. package/nitrogen/generated/ios/swift/PredicateWithMetadataKey.swift +7 -7
  142. package/nitrogen/generated/ios/swift/QuantitySample.swift +574 -27
  143. package/nitrogen/generated/ios/swift/QuantitySampleForSaving.swift +24 -5
  144. package/nitrogen/generated/ios/swift/QuantityTypeIdentifier.swift +16 -16
  145. package/nitrogen/generated/ios/swift/QueryCorrelationSamplesWithAnchorResponse.swift +81 -0
  146. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchor.swift +11 -91
  147. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchorAndUnit.swift +11 -91
  148. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrder.swift +11 -91
  149. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrderAndUnit.swift +11 -91
  150. package/nitrogen/generated/ios/swift/QueryStatisticsResponse.swift +34 -1
  151. package/nitrogen/generated/ios/swift/QueryStatisticsResponseFromSingleSource.swift +266 -0
  152. package/nitrogen/generated/ios/swift/RelatedCoding.swift +76 -0
  153. package/nitrogen/generated/ios/swift/SampleType.swift +68 -0
  154. package/nitrogen/generated/ios/swift/SampleTypeIdentifier.swift +16 -16
  155. package/nitrogen/generated/ios/swift/SampleTypeIdentifierWriteable.swift +0 -16
  156. package/nitrogen/generated/ios/swift/StateOfMindSample.swift +586 -58
  157. package/nitrogen/generated/ios/swift/StateOfMindSamplesWithAnchorResponse.swift +81 -0
  158. package/nitrogen/generated/ios/swift/StatisticsOptions.swift +0 -4
  159. package/nitrogen/generated/ios/swift/StatisticsQueryOptions.swift +7 -75
  160. package/nitrogen/generated/ios/swift/UserAnnotatedMedication.swift +87 -0
  161. package/nitrogen/generated/ios/swift/WeatherCondition.swift +144 -0
  162. package/nitrogen/generated/ios/swift/WorkoutQueryOptions.swift +11 -105
  163. package/nitrogen/generated/ios/swift/WorkoutQueryOptionsWithAnchor.swift +11 -105
  164. package/nitrogen/generated/ios/swift/WorkoutSample.swift +751 -78
  165. package/nitrogen/generated/shared/c++/AggregationStyle.hpp +64 -0
  166. package/nitrogen/generated/shared/c++/CategorySample.hpp +126 -23
  167. package/nitrogen/generated/shared/c++/CorrelationSample.hpp +134 -12
  168. package/nitrogen/generated/shared/c++/{PredicateWithStartAndEnd.hpp → DateFilter.hpp} +10 -10
  169. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithAnchor.hpp +12 -31
  170. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithSortOrder.hpp +12 -31
  171. package/nitrogen/generated/shared/c++/ElectrocardiogramSample.hpp +135 -36
  172. package/nitrogen/generated/shared/c++/FilterForSamples.hpp +124 -0
  173. package/nitrogen/generated/shared/c++/FilterForSamplesBase.hpp +109 -0
  174. package/nitrogen/generated/shared/c++/FilterForWorkouts.hpp +131 -0
  175. package/nitrogen/generated/shared/c++/FilterForWorkoutsBase.hpp +116 -0
  176. package/nitrogen/generated/shared/c++/GeneralForm.hpp +140 -0
  177. package/nitrogen/generated/shared/c++/HeartRateMotionContext.hpp +67 -0
  178. package/nitrogen/generated/shared/c++/HeartbeatSeriesSample.hpp +131 -28
  179. package/nitrogen/generated/shared/c++/HybridCategoryTypeModuleSpec.hpp +6 -6
  180. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.cpp +1 -0
  181. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.hpp +10 -28
  182. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.cpp +1 -0
  183. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.hpp +16 -5
  184. package/nitrogen/generated/shared/c++/HybridElectrocardiogramModuleSpec.hpp +1 -2
  185. package/nitrogen/generated/shared/c++/HybridHeartbeatSeriesModuleSpec.hpp +1 -2
  186. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.cpp +24 -0
  187. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.hpp +80 -0
  188. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.cpp +3 -1
  189. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.hpp +13 -27
  190. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.cpp +1 -0
  191. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.hpp +9 -2
  192. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.cpp +33 -5
  193. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.hpp +56 -16
  194. package/nitrogen/generated/shared/c++/InsulinDeliveryReason.hpp +62 -0
  195. package/nitrogen/generated/shared/c++/MedicationConcept.hpp +93 -0
  196. package/nitrogen/generated/shared/c++/MedicationDoseEvent.hpp +240 -0
  197. package/nitrogen/generated/shared/c++/MedicationDoseEventLogStatus.hpp +66 -0
  198. package/nitrogen/generated/shared/c++/MedicationDoseEventScheduleType.hpp +62 -0
  199. package/nitrogen/generated/shared/c++/MedicationDoseEventsWithAnchorResponse.hpp +89 -0
  200. package/nitrogen/generated/shared/c++/ObjectTypeIdentifier.hpp +105 -105
  201. package/nitrogen/generated/shared/c++/PredicateWithMetadataKey.hpp +8 -8
  202. package/nitrogen/generated/shared/c++/QuantitySample.hpp +130 -27
  203. package/nitrogen/generated/shared/c++/QuantitySampleForSaving.hpp +6 -6
  204. package/nitrogen/generated/shared/c++/QuantityTypeIdentifier.hpp +105 -105
  205. package/nitrogen/generated/shared/c++/QueryCorrelationSamplesWithAnchorResponse.hpp +89 -0
  206. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchor.hpp +12 -31
  207. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchorAndUnit.hpp +12 -31
  208. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrder.hpp +12 -31
  209. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrderAndUnit.hpp +12 -31
  210. package/nitrogen/generated/shared/c++/QueryStatisticsResponse.hpp +11 -2
  211. package/nitrogen/generated/shared/c++/QueryStatisticsResponseFromSingleSource.hpp +121 -0
  212. package/nitrogen/generated/shared/c++/RelatedCoding.hpp +84 -0
  213. package/nitrogen/generated/shared/c++/SampleType.hpp +87 -0
  214. package/nitrogen/generated/shared/c++/SampleTypeIdentifier.hpp +105 -105
  215. package/nitrogen/generated/shared/c++/SampleTypeIdentifierWriteable.hpp +105 -121
  216. package/nitrogen/generated/shared/c++/StateOfMindSample.hpp +139 -36
  217. package/nitrogen/generated/shared/c++/StateOfMindSamplesWithAnchorResponse.hpp +89 -0
  218. package/nitrogen/generated/shared/c++/StatisticsOptions.hpp +0 -4
  219. package/nitrogen/generated/shared/c++/StatisticsQueryOptions.hpp +8 -27
  220. package/nitrogen/generated/shared/c++/UserAnnotatedMedication.hpp +90 -0
  221. package/nitrogen/generated/shared/c++/WeatherCondition.hpp +88 -0
  222. package/nitrogen/generated/shared/c++/WorkoutQueryOptions.hpp +12 -37
  223. package/nitrogen/generated/shared/c++/WorkoutQueryOptionsWithAnchor.hpp +12 -37
  224. package/nitrogen/generated/shared/c++/WorkoutSample.hpp +159 -35
  225. package/package.json +1 -1
  226. package/src/healthkit.ios.ts +38 -0
  227. package/src/healthkit.ts +88 -8
  228. package/src/hooks/queryStatisticsForQuantity.test.ts +4 -1
  229. package/src/hooks/useStatisticsForQuantity.ts +1 -1
  230. package/src/hooks/useSubscribeToCategorySamples.ts +31 -0
  231. package/src/modules.ts +4 -0
  232. package/src/specs/CategoryTypeModule.nitro.ts +6 -6
  233. package/src/specs/CoreModule.nitro.ts +3 -0
  234. package/src/specs/CorrelationTypeModule.nitro.ts +13 -5
  235. package/src/specs/ElectrocardiogramModule.nitro.ts +1 -1
  236. package/src/specs/HeartbeatSeriesModule.nitro.ts +1 -1
  237. package/src/specs/MedicationModule.nitro.ts +135 -0
  238. package/src/specs/QuantityTypeModule.nitro.ts +21 -9
  239. package/src/specs/StateOfMindModule.nitro.ts +11 -3
  240. package/src/types/CategoryType.ts +15 -22
  241. package/src/types/Constants.ts +3 -0
  242. package/src/types/CorrelationType.ts +10 -15
  243. package/src/types/ElectrocardiogramSample.ts +2 -14
  244. package/src/types/HeartbeatSeries.ts +2 -15
  245. package/src/types/QuantitySample.ts +3 -9
  246. package/src/types/QuantityType.ts +16 -18
  247. package/src/types/QuantityTypeIdentifier.ts +25 -25
  248. package/src/types/QueryOptions.ts +54 -43
  249. package/src/types/Shared.ts +74 -17
  250. package/src/types/StateOfMind.ts +8 -10
  251. package/src/types/Subscriptions.ts +19 -3
  252. package/src/types/WeatherCondition.ts +1 -1
  253. package/src/types/Workouts.ts +28 -91
  254. package/src/utils/getCategorySampleById.ts +1 -1
  255. package/src/utils/getQuantitySampleById.ts +1 -1
  256. package/src/utils/getWorkoutById.ts +1 -2
  257. package/src/utils/subscribeToCategorySamples.ts +38 -0
  258. package/src/utils/subscribeToQuantitySamples.ts +12 -37
  259. package/nitrogen/generated/ios/swift/FilterForSamplesAnd.swift +0 -94
  260. package/nitrogen/generated/ios/swift/FilterForSamplesOr.swift +0 -94
  261. package/nitrogen/generated/ios/swift/PredicateForSamples.swift +0 -21
  262. package/nitrogen/generated/ios/swift/PredicateForWorkouts.swift +0 -23
  263. package/nitrogen/generated/ios/swift/PredicateForWorkoutsAnd.swift +0 -108
  264. package/nitrogen/generated/ios/swift/PredicateForWorkoutsOr.swift +0 -108
  265. package/nitrogen/generated/ios/swift/PredicateFromWorkout.swift +0 -45
  266. package/nitrogen/generated/ios/swift/PredicateWithMetadataOperator.swift +0 -48
  267. package/nitrogen/generated/ios/swift/PredicateWithUUID.swift +0 -35
  268. package/nitrogen/generated/ios/swift/PredicateWithUUIDs.swift +0 -47
  269. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_FilterForSamplesAnd_FilterForSamplesOr.swift +0 -23
  270. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_WorkoutActivityTypePredicate_WorkoutDurationPredicate_PredicateForWorkoutsOr_PredicateForWorkoutsAnd.swift +0 -25
  271. package/nitrogen/generated/ios/swift/WorkoutActivityTypePredicate.swift +0 -35
  272. package/nitrogen/generated/shared/c++/FilterForSamplesAnd.hpp +0 -90
  273. package/nitrogen/generated/shared/c++/FilterForSamplesOr.hpp +0 -90
  274. package/nitrogen/generated/shared/c++/PredicateForWorkoutsAnd.hpp +0 -96
  275. package/nitrogen/generated/shared/c++/PredicateForWorkoutsOr.hpp +0 -96
  276. package/nitrogen/generated/shared/c++/PredicateFromWorkout.hpp +0 -77
  277. package/nitrogen/generated/shared/c++/PredicateWithMetadataOperator.hpp +0 -84
  278. package/nitrogen/generated/shared/c++/PredicateWithUUID.hpp +0 -75
  279. package/nitrogen/generated/shared/c++/PredicateWithUUIDs.hpp +0 -76
  280. package/nitrogen/generated/shared/c++/WorkoutActivityTypePredicate.hpp +0 -76
@@ -1,159 +1,213 @@
1
1
  import HealthKit
2
2
  import NitroModules
3
3
 
4
- class CorrelationTypeModule: HybridCorrelationTypeModuleSpec {
5
- func saveCorrelationSample(
6
- typeIdentifier: CorrelationTypeIdentifier,
7
- samples: [SampleForSaving],
8
- start: Date,
9
- end: Date,
10
- metadata: AnyMap
11
- ) throws -> Promise<Bool> {
12
- let correlationType = try initializeCorrelationType(typeIdentifier.stringValue)
13
-
14
- var initializedSamples = Set<HKSample>()
15
-
16
- for sample in samples {
17
- switch sample {
18
- case .second(let quantitySample):
19
- let quantityTypeId = HKQuantityTypeIdentifier(rawValue: quantitySample.quantityType.stringValue)
20
- guard let quantityType = HKSampleType.quantityType(forIdentifier: quantityTypeId) else {
21
- continue
22
- }
23
-
24
- let unit = HKUnit(from: quantitySample.unit)
25
- let quantity = HKQuantity(unit: unit, doubleValue: quantitySample.quantity)
26
- let hkQuantitySample = HKQuantitySample(
27
- type: quantityType,
28
- quantity: quantity,
29
- start: start,
30
- end: end,
31
- metadata: anyMapToDictionary(quantitySample.metadata)
32
- )
33
- initializedSamples.insert(hkQuantitySample)
34
-
35
- case .first(let categorySample):
36
- let categoryType = try initializeCategoryType(categorySample.categoryType.stringValue)
37
-
38
- let hkCategorySample = HKCategorySample(
39
- type: categoryType,
40
- value: Int(categorySample.value),
41
- start: categorySample.start,
42
- end: categorySample.end,
43
- metadata: anyMapToDictionary(categorySample.metadata)
44
- )
45
- initializedSamples.insert(hkCategorySample)
46
- }
47
- }
4
+ func serializeCorrelationSample(correlation: HKCorrelation, unitMap: [HKQuantityType: HKUnit])
5
+ -> CorrelationSample {
6
+ let objects = correlation.objects.compactMap { object -> CorrelationObject? in
7
+ if let quantitySample = object as? HKQuantitySample,
8
+ let unit = unitMap[quantitySample.quantityType] {
9
+ do {
10
+ let quantitySample = try serializeQuantitySample(
11
+ sample: quantitySample,
12
+ unit: unit
13
+ )
14
+ return CorrelationObject.second(quantitySample)
15
+ } catch {
16
+ warnWithPrefix("serializeCorrelationSample: \(error.localizedDescription)")
17
+ }
18
+ } else if let categorySample = object as? HKCategorySample {
19
+ return CorrelationObject.first(serializeCategorySample(sample: categorySample))
20
+ }
21
+ return nil
22
+ }
23
+
24
+ return CorrelationSample(
25
+ correlationType: CorrelationTypeIdentifier(fromString: correlation.correlationType.identifier)!,
26
+ objects: objects,
27
+ metadataFoodType: correlation.metadata?[HKMetadataKeyFoodType] as? String,
28
+ sampleType: serializeSampleType(correlation.sampleType),
29
+ startDate: correlation.startDate,
30
+ endDate: correlation.endDate,
31
+ hasUndeterminedDuration: correlation.hasUndeterminedDuration,
32
+
33
+ metadataWeatherCondition: serializeWeatherCondition(
34
+ correlation.metadata?[HKMetadataKeyWeatherCondition] as? HKWeatherCondition),
35
+ metadataWeatherHumidity: serializeUnknownQuantityTyped(
36
+ quantity: correlation.metadata?[HKMetadataKeyWeatherHumidity] as? HKQuantity),
37
+ metadataWeatherTemperature: serializeUnknownQuantityTyped(
38
+ quantity: correlation.metadata?[HKMetadataKeyWeatherTemperature] as? HKQuantity),
39
+ metadataInsulinDeliveryReason: serializeInsulinDeliveryReason(
40
+ correlation.metadata?[HKMetadataKeyInsulinDeliveryReason] as? HKInsulinDeliveryReason),
41
+ metadataHeartRateMotionContext: serializeHeartRateMotionContext(
42
+ correlation.metadata?[HKMetadataKeyHeartRateMotionContext] as? HKHeartRateMotionContext),
43
+
44
+ uuid: correlation.uuid.uuidString,
45
+ sourceRevision: serializeSourceRevision(correlation.sourceRevision),
46
+ device: serializeDevice(hkDevice: correlation.device),
47
+ metadata: serializeMetadata(correlation.metadata),
48
+
49
+ metadataExternalUUID: correlation.metadata?[HKMetadataKeyExternalUUID] as? String,
50
+ metadataTimeZone: correlation.metadata?[HKMetadataKeyTimeZone] as? String,
51
+ metadataWasUserEntered: correlation.metadata?[HKMetadataKeyWasUserEntered] as? Bool,
52
+ metadataDeviceSerialNumber: correlation.metadata?[HKMetadataKeyDeviceSerialNumber] as? String,
53
+ metadataUdiDeviceIdentifier: correlation.metadata?[HKMetadataKeyUDIDeviceIdentifier] as? String,
54
+ metadataUdiProductionIdentifier: correlation.metadata?[HKMetadataKeyUDIProductionIdentifier]
55
+ as? String,
56
+ metadataDigitalSignature: correlation.metadata?[HKMetadataKeyDigitalSignature] as? String,
57
+ metadataDeviceName: correlation.metadata?[HKMetadataKeyDeviceName] as? String,
58
+ metadataDeviceManufacturerName: correlation.metadata?[HKMetadataKeyDeviceManufacturerName]
59
+ as? String,
60
+ metadataSyncIdentifier: correlation.metadata?[HKMetadataKeySyncIdentifier] as? String,
61
+ metadataSyncVersion: correlation.metadata?[HKMetadataKeySyncVersion] as? Double,
62
+ metadataWasTakenInLab: correlation.metadata?[HKMetadataKeyWasTakenInLab] as? Bool,
63
+ metadataReferenceRangeLowerLimit: correlation.metadata?[HKMetadataKeyReferenceRangeLowerLimit]
64
+ as? Double,
65
+ metadataReferenceRangeUpperLimit: correlation.metadata?[HKMetadataKeyReferenceRangeUpperLimit]
66
+ as? Double,
67
+ metadataAlgorithmVersion: correlation.metadata?[HKMetadataKeyAlgorithmVersion] as? Double
68
+ )
69
+ }
48
70
 
49
- if initializedSamples.isEmpty {
50
- throw RuntimeError.error(withMessage: "[react-native-healthkit] No valid samples to create correlation sample")
71
+ func getUnitMap(correlations: [HKCorrelation]) async throws -> [HKQuantityType: HKUnit] {
72
+ // Collect all quantity types to get preferred units
73
+ var quantityTypes = Set<HKQuantityType>()
74
+ for correlation in correlations {
75
+ for object in correlation.objects {
76
+ if let quantitySample = object as? HKQuantitySample {
77
+ quantityTypes.insert(quantitySample.quantityType)
51
78
  }
79
+ }
80
+ }
52
81
 
53
- let correlation = HKCorrelation(
54
- type: correlationType,
82
+ let unitMap = try await getPreferredUnitsInternal(quantityTypes: Array(quantityTypes))
83
+
84
+ return unitMap
85
+ }
86
+
87
+ class CorrelationTypeModule: HybridCorrelationTypeModuleSpec {
88
+ func queryCorrelationSamplesWithAnchor(
89
+ typeIdentifier: CorrelationTypeIdentifier, options: QueryOptionsWithAnchor
90
+ ) -> Promise<QueryCorrelationSamplesWithAnchorResponse> {
91
+ return Promise.async {
92
+ let predicate = createPredicateForSamples(options.filter)
93
+ let correlationType = try initializeCorrelationType(typeIdentifier.stringValue)
94
+
95
+ let response = try await sampleAnchoredQueryAsync(
96
+ sampleType: correlationType,
97
+ limit: options.limit,
98
+ queryAnchor: options.anchor,
99
+ predicate: predicate
100
+ )
101
+
102
+ let correlationSamples = response.samples.compactMap { sample in
103
+ return sample as? HKCorrelation
104
+ }
105
+
106
+ let unitMap = try await getUnitMap(correlations: correlationSamples)
107
+
108
+ return QueryCorrelationSamplesWithAnchorResponse(
109
+ correlations: correlationSamples.map { sample in
110
+ return serializeCorrelationSample(correlation: sample, unitMap: unitMap)
111
+ },
112
+ deletedSamples: response.deletedSamples,
113
+ newAnchor: response.newAnchor
114
+ )
115
+
116
+ }
117
+ }
118
+
119
+ func saveCorrelationSample(
120
+ typeIdentifier: CorrelationTypeIdentifier,
121
+ samples: [SampleForSaving],
122
+ start: Date,
123
+ end: Date,
124
+ metadata: AnyMap?
125
+ ) -> Promise<CorrelationSample?> {
126
+ return Promise.async {
127
+ let correlationType = try initializeCorrelationType(typeIdentifier.stringValue)
128
+
129
+ var initializedSamples = Set<HKSample>()
130
+
131
+ for sample in samples {
132
+ switch sample {
133
+ case .second(let quantitySample):
134
+ let quantityTypeId = HKQuantityTypeIdentifier(
135
+ rawValue: quantitySample.quantityType.stringValue)
136
+ guard let quantityType = HKSampleType.quantityType(forIdentifier: quantityTypeId) else {
137
+ continue
138
+ }
139
+
140
+ let unit = HKUnit(from: quantitySample.unit)
141
+ let quantity = HKQuantity(unit: unit, doubleValue: quantitySample.quantity)
142
+ let hkQuantitySample = HKQuantitySample(
143
+ type: quantityType,
144
+ quantity: quantity,
55
145
  start: start,
56
146
  end: end,
57
- objects: initializedSamples,
58
- metadata: anyMapToDictionary(metadata)
59
- )
147
+ metadata: anyMapToDictionaryOptional(quantitySample.metadata)
148
+ )
149
+ initializedSamples.insert(hkQuantitySample)
60
150
 
61
- return Promise.async {
62
- try await withCheckedThrowingContinuation { continuation in
63
- store.save(correlation) { (success: Bool, error: Error?) in
64
- if let error = error {
65
- continuation.resume(throwing: error)
66
- } else {
67
- continuation.resume(returning: success)
68
- }
69
- }
70
- }
151
+ case .first(let categorySample):
152
+ let categoryType = try initializeCategoryType(categorySample.categoryType.stringValue)
153
+
154
+ let hkCategorySample = HKCategorySample(
155
+ type: categoryType,
156
+ value: Int(categorySample.value),
157
+ start: categorySample.start,
158
+ end: categorySample.end,
159
+ metadata: anyMapToDictionary(categorySample.metadata)
160
+ )
161
+ initializedSamples.insert(hkCategorySample)
71
162
  }
163
+ }
164
+
165
+ if initializedSamples.isEmpty {
166
+ throw runtimeErrorWithPrefix("No valid samples to create correlation sample")
167
+ }
168
+
169
+ let correlation = HKCorrelation(
170
+ type: correlationType,
171
+ start: start,
172
+ end: end,
173
+ objects: initializedSamples,
174
+ metadata: anyMapToDictionaryOptional(metadata)
175
+ )
176
+
177
+ let succeeded = try await saveAsync(sample: correlation)
178
+
179
+ let unitMap = try await getUnitMap(correlations: [correlation])
180
+
181
+ return succeeded
182
+ ? serializeCorrelationSample(correlation: correlation, unitMap: unitMap)
183
+ : nil
72
184
  }
185
+ }
73
186
 
74
- func queryCorrelationSamples(
75
- typeIdentifier: CorrelationTypeIdentifier,
76
- from: Date,
77
- to: Date
78
- ) throws -> Promise<[CorrelationSample]> {
79
- let correlationType = try initializeCorrelationType(typeIdentifier.stringValue)
80
- let predicate = try createPredicate(
81
- filter: Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_FilterForSamplesAnd_FilterForSamplesOr.fourth(
82
- PredicateWithStartAndEnd(
83
- startDate: from,
84
- endDate: to,
85
- strictEndDate: true,
86
- strictStartDate: true
87
- )
88
- )
89
- )
187
+ func queryCorrelationSamples(
188
+ typeIdentifier: CorrelationTypeIdentifier, options: QueryOptionsWithSortOrder
189
+ ) -> Promise<[CorrelationSample]> {
190
+ return Promise.async {
191
+ let correlationType = try initializeCorrelationType(typeIdentifier.stringValue)
90
192
 
91
- return Promise.async {
92
- try await withCheckedThrowingContinuation { continuation in
93
- let query = HKCorrelationQuery(
94
- type: correlationType,
95
- predicate: predicate,
96
- samplePredicates: nil
97
- ) { (_: HKCorrelationQuery, correlations: [HKCorrelation]?, error: Error?) in
98
- if let error = error {
99
- continuation.resume(throwing: error)
100
- return
101
- }
102
-
103
- guard let correlations = correlations, !correlations.isEmpty else {
104
- continuation.resume(returning: [])
105
- return
106
- }
107
-
108
- // Collect all quantity types to get preferred units
109
- var quantityTypes = Set<HKQuantityType>()
110
- for correlation in correlations {
111
- for object in correlation.objects {
112
- if let quantitySample = object as? HKQuantitySample {
113
- quantityTypes.insert(quantitySample.quantityType)
114
- }
115
- }
116
- }
117
-
118
- store.preferredUnits(for: quantityTypes) { (unitMap: [HKQuantityType: HKUnit], error: Error?) in
119
- if let error = error {
120
- continuation.resume(throwing: error)
121
- return
122
- }
123
-
124
- let serializedCorrelations = correlations.map { correlation -> CorrelationSample in
125
- let objects = correlation.objects.compactMap { object -> CorrelationObject? in
126
- if let quantitySample = object as? HKQuantitySample,
127
- let unit = unitMap[quantitySample.quantityType] {
128
- do {
129
- let quantitySample = try serializeQuantitySample(sample: quantitySample, unit: unit)
130
- return CorrelationObject.second(quantitySample)
131
- } catch {
132
- print(error.localizedDescription)
133
- }
134
-
135
- } else if let categorySample = object as? HKCategorySample {
136
- return CorrelationObject.first(serializeCategorySample(sample: categorySample))
137
- }
138
- return nil
139
- }
140
-
141
- return CorrelationSample(
142
- uuid: correlation.uuid.uuidString,
143
- correlationType: CorrelationTypeIdentifier(fromString: correlation.correlationType.identifier)!,
144
- objects: objects,
145
- metadata: serializeMetadata(correlation.metadata),
146
- startDate: correlation.startDate,
147
- endDate: correlation.endDate
148
- )
149
- }
150
-
151
- continuation.resume(returning: serializedCorrelations)
152
- }
153
- }
154
-
155
- store.execute(query)
156
- }
157
- }
193
+ let samples = try await sampleQueryAsync(
194
+ sampleType: correlationType,
195
+ limit: options.limit,
196
+ predicate: createPredicateForSamples(options.filter),
197
+ sortDescriptors: getSortDescriptors(ascending: options.ascending)
198
+ )
199
+
200
+ let correlationSamples = samples.compactMap({ sample in
201
+ return sample as? HKCorrelation
202
+ })
203
+
204
+ let unitMap = try await getUnitMap(correlations: correlationSamples)
205
+
206
+ return correlationSamples.map { correlation in
207
+ let serialized = serializeCorrelationSample(correlation: correlation, unitMap: unitMap)
208
+
209
+ return serialized
210
+ }
158
211
  }
212
+ }
159
213
  }