@kingstinct/react-native-healthkit 9.0.0 → 9.0.2

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 (441) hide show
  1. package/README.md +192 -0
  2. package/app.plugin.js +0 -1
  3. package/ios/Helpers.swift +33 -37
  4. package/ios/WorkoutProxy.swift +7 -0
  5. package/lib/commonjs/hooks/useCategorySampleById.js +36 -0
  6. package/lib/commonjs/hooks/useHealthkitAuthorization.js +34 -0
  7. package/lib/commonjs/hooks/useIsHealthDataAvailable.js +23 -0
  8. package/lib/commonjs/hooks/useMostRecentCategorySample.js +21 -0
  9. package/lib/commonjs/hooks/useMostRecentQuantitySample.js +22 -0
  10. package/lib/commonjs/hooks/useMostRecentWorkout.js +31 -0
  11. package/lib/commonjs/hooks/useQuantitySampleById.js +34 -0
  12. package/lib/commonjs/hooks/useSources.js +17 -0
  13. package/lib/commonjs/hooks/useStatisticsForQuantity.js +26 -0
  14. package/lib/commonjs/hooks/useSubscribeToChanges.js +20 -0
  15. package/lib/commonjs/hooks/useWorkoutById.js +46 -0
  16. package/lib/commonjs/index.ios.js +144 -0
  17. package/lib/commonjs/index.js +210 -0
  18. package/lib/commonjs/modules.js +12 -0
  19. package/lib/commonjs/specs/CategoryTypeModule.nitro.js +5 -0
  20. package/lib/commonjs/specs/CharacteristicTypeModule.nitro.js +2 -0
  21. package/lib/commonjs/specs/CoreModule.nitro.js +2 -0
  22. package/lib/commonjs/specs/CorrelationTypeModule.nitro.js +2 -0
  23. package/lib/commonjs/specs/HeartbeatSeriesModule.nitro.js +2 -0
  24. package/lib/commonjs/specs/QuantityTypeModule.nitro.js +2 -0
  25. package/lib/commonjs/specs/SourceProxy.nitro.js +2 -0
  26. package/lib/commonjs/specs/StateOfMindModule.nitro.js +2 -0
  27. package/lib/commonjs/specs/WorkoutProxy.nitro.js +2 -0
  28. package/lib/commonjs/specs/WorkoutSessionModule.nitro.js +19 -0
  29. package/lib/commonjs/specs/WorkoutsModule.nitro.js +2 -0
  30. package/lib/commonjs/types/Auth.js +21 -0
  31. package/lib/commonjs/types/Background.js +13 -0
  32. package/lib/commonjs/types/CategoryType.js +101 -0
  33. package/lib/commonjs/types/CategoryTypeIdentifier.js +2 -0
  34. package/lib/commonjs/types/Characteristics.js +48 -0
  35. package/lib/commonjs/types/Constants.js +23 -0
  36. package/lib/commonjs/types/CorrelationType.js +2 -0
  37. package/lib/commonjs/types/Device.js +2 -0
  38. package/lib/commonjs/types/HeartbeatSeries.js +2 -0
  39. package/lib/commonjs/types/InterfaceVerification.js +24 -0
  40. package/lib/commonjs/types/InterfaceVerificationExample.js +33 -0
  41. package/lib/commonjs/types/QuantitySample.js +2 -0
  42. package/lib/commonjs/types/QuantityType.js +17 -0
  43. package/lib/commonjs/types/QuantityTypeIdentifier.js +2 -0
  44. package/lib/commonjs/types/QueryOptions.js +2 -0
  45. package/lib/commonjs/types/Shared.js +13 -0
  46. package/lib/commonjs/types/Source.js +2 -0
  47. package/lib/commonjs/types/StateOfMind.js +90 -0
  48. package/lib/commonjs/types/Subscriptons.js +2 -0
  49. package/lib/commonjs/types/Units.js +2 -0
  50. package/lib/commonjs/types/WeatherCondition.js +35 -0
  51. package/lib/commonjs/types/WorkoutKit.js +12 -0
  52. package/lib/commonjs/types/Workouts.js +150 -0
  53. package/lib/commonjs/utils/getCategorySampleById.js +12 -0
  54. package/lib/commonjs/utils/getMostRecentCategorySample.js +12 -0
  55. package/lib/commonjs/utils/getMostRecentQuantitySample.js +11 -0
  56. package/lib/commonjs/utils/getMostRecentWorkout.js +13 -0
  57. package/lib/commonjs/utils/getPreferredUnit.js +12 -0
  58. package/lib/commonjs/utils/getQuantitySampleById.js +14 -0
  59. package/lib/commonjs/utils/getWorkoutById.js +15 -0
  60. package/lib/commonjs/utils/subscribeToChanges.js +11 -0
  61. package/lib/module/hooks/useCategorySampleById.js +30 -0
  62. package/lib/module/hooks/useHealthkitAuthorization.js +30 -0
  63. package/lib/module/hooks/useIsHealthDataAvailable.js +19 -0
  64. package/lib/module/hooks/useMostRecentCategorySample.js +15 -0
  65. package/lib/module/hooks/useMostRecentQuantitySample.js +16 -0
  66. package/lib/module/hooks/useMostRecentWorkout.js +25 -0
  67. package/lib/module/hooks/useQuantitySampleById.js +28 -0
  68. package/lib/module/hooks/useSources.js +14 -0
  69. package/lib/module/hooks/useStatisticsForQuantity.js +20 -0
  70. package/lib/module/hooks/useSubscribeToChanges.js +17 -0
  71. package/lib/module/hooks/useWorkoutById.js +40 -0
  72. package/lib/module/index.ios.js +126 -0
  73. package/lib/module/index.js +202 -0
  74. package/lib/module/modules.js +9 -0
  75. package/lib/module/specs/CategoryTypeModule.nitro.js +4 -0
  76. package/lib/module/specs/CharacteristicTypeModule.nitro.js +1 -0
  77. package/lib/module/specs/CoreModule.nitro.js +1 -0
  78. package/lib/module/specs/CorrelationTypeModule.nitro.js +1 -0
  79. package/lib/module/specs/HeartbeatSeriesModule.nitro.js +1 -0
  80. package/lib/module/specs/QuantityTypeModule.nitro.js +1 -0
  81. package/lib/module/specs/SourceProxy.nitro.js +1 -0
  82. package/lib/module/specs/StateOfMindModule.nitro.js +1 -0
  83. package/lib/module/specs/WorkoutProxy.nitro.js +1 -0
  84. package/lib/module/specs/WorkoutSessionModule.nitro.js +16 -0
  85. package/lib/module/specs/WorkoutsModule.nitro.js +1 -0
  86. package/lib/module/types/Auth.js +18 -0
  87. package/lib/module/types/Background.js +10 -0
  88. package/lib/module/types/CategoryType.js +98 -0
  89. package/lib/module/types/CategoryTypeIdentifier.js +1 -0
  90. package/lib/module/types/Characteristics.js +45 -0
  91. package/lib/module/types/Constants.js +20 -0
  92. package/lib/module/types/CorrelationType.js +1 -0
  93. package/lib/module/types/Device.js +1 -0
  94. package/lib/module/types/HeartbeatSeries.js +1 -0
  95. package/lib/module/types/InterfaceVerification.js +23 -0
  96. package/lib/module/types/InterfaceVerificationExample.js +32 -0
  97. package/lib/module/types/QuantitySample.js +1 -0
  98. package/lib/module/types/QuantityType.js +14 -0
  99. package/lib/module/types/QuantityTypeIdentifier.js +1 -0
  100. package/lib/module/types/QueryOptions.js +1 -0
  101. package/lib/module/types/Shared.js +10 -0
  102. package/lib/module/types/Source.js +1 -0
  103. package/lib/module/types/StateOfMind.js +87 -0
  104. package/lib/module/types/Subscriptons.js +1 -0
  105. package/lib/module/types/Units.js +1 -0
  106. package/lib/module/types/WeatherCondition.js +32 -0
  107. package/lib/module/types/WorkoutKit.js +9 -0
  108. package/lib/module/types/Workouts.js +147 -0
  109. package/lib/module/utils/getCategorySampleById.js +9 -0
  110. package/lib/module/utils/getMostRecentCategorySample.js +9 -0
  111. package/lib/module/utils/getMostRecentQuantitySample.js +9 -0
  112. package/lib/module/utils/getMostRecentWorkout.js +11 -0
  113. package/lib/module/utils/getPreferredUnit.js +10 -0
  114. package/lib/module/utils/getQuantitySampleById.js +12 -0
  115. package/lib/module/utils/getWorkoutById.js +13 -0
  116. package/lib/module/utils/subscribeToChanges.js +7 -0
  117. package/lib/typescript/hooks/useCategorySampleById.d.ts +11 -0
  118. package/lib/typescript/hooks/useHealthkitAuthorization.d.ts +9 -0
  119. package/lib/typescript/hooks/useIsHealthDataAvailable.d.ts +7 -0
  120. package/lib/typescript/hooks/useMostRecentCategorySample.d.ts +7 -0
  121. package/lib/typescript/hooks/useMostRecentQuantitySample.d.ts +7 -0
  122. package/lib/typescript/hooks/useMostRecentWorkout.d.ts +9 -0
  123. package/lib/typescript/hooks/useQuantitySampleById.d.ts +14 -0
  124. package/lib/typescript/hooks/useSources.d.ts +4 -0
  125. package/lib/typescript/hooks/useStatisticsForQuantity.d.ts +4 -0
  126. package/lib/typescript/hooks/useSubscribeToChanges.d.ts +4 -0
  127. package/lib/typescript/hooks/useWorkoutById.d.ts +13 -0
  128. package/lib/typescript/index.d.ts +74 -0
  129. package/lib/typescript/index.ios.d.ts +142 -0
  130. package/lib/typescript/modules.d.ts +16 -0
  131. package/lib/typescript/specs/CategoryTypeModule.nitro.d.ts +16 -0
  132. package/lib/typescript/specs/CharacteristicTypeModule.nitro.d.ts +16 -0
  133. package/lib/typescript/specs/CoreModule.nitro.d.ts +60 -0
  134. package/lib/typescript/specs/CorrelationTypeModule.nitro.d.ts +8 -0
  135. package/lib/typescript/specs/HeartbeatSeriesModule.nitro.d.ts +9 -0
  136. package/lib/typescript/specs/QuantityTypeModule.nitro.d.ts +16 -0
  137. package/lib/typescript/specs/SourceProxy.nitro.d.ts +14 -0
  138. package/lib/typescript/specs/StateOfMindModule.nitro.d.ts +9 -0
  139. package/lib/typescript/specs/WorkoutProxy.nitro.d.ts +10 -0
  140. package/lib/typescript/specs/WorkoutSessionModule.nitro.d.ts +47 -0
  141. package/lib/typescript/specs/WorkoutsModule.nitro.d.ts +13 -0
  142. package/lib/typescript/types/Auth.d.ts +16 -0
  143. package/lib/typescript/types/Background.d.ts +9 -0
  144. package/lib/typescript/types/CategoryType.d.ts +144 -0
  145. package/lib/typescript/types/CategoryTypeIdentifier.d.ts +31 -0
  146. package/lib/typescript/types/Characteristics.d.ts +41 -0
  147. package/lib/typescript/types/Constants.d.ts +20 -0
  148. package/lib/typescript/types/CorrelationType.d.ts +21 -0
  149. package/lib/typescript/types/Device.d.ts +13 -0
  150. package/lib/typescript/types/HeartbeatSeries.d.ts +25 -0
  151. package/lib/typescript/types/InterfaceVerification.d.ts +73 -0
  152. package/lib/typescript/types/InterfaceVerificationExample.d.ts +58 -0
  153. package/lib/typescript/types/QuantitySample.d.ts +27 -0
  154. package/lib/typescript/types/QuantityType.d.ts +63 -0
  155. package/lib/typescript/types/QuantityTypeIdentifier.d.ts +659 -0
  156. package/lib/typescript/types/QueryOptions.d.ts +47 -0
  157. package/lib/typescript/types/Shared.d.ts +39 -0
  158. package/lib/typescript/types/Source.d.ts +10 -0
  159. package/lib/typescript/types/StateOfMind.d.ts +103 -0
  160. package/lib/typescript/types/Subscriptons.d.ts +8 -0
  161. package/lib/typescript/types/Units.d.ts +97 -0
  162. package/lib/typescript/types/WeatherCondition.d.ts +30 -0
  163. package/lib/typescript/types/WorkoutKit.d.ts +16 -0
  164. package/lib/typescript/types/Workouts.d.ts +254 -0
  165. package/lib/typescript/utils/getCategorySampleById.d.ts +3 -0
  166. package/lib/typescript/utils/getMostRecentCategorySample.d.ts +3 -0
  167. package/lib/typescript/utils/getMostRecentQuantitySample.d.ts +3 -0
  168. package/lib/typescript/utils/getMostRecentWorkout.d.ts +3 -0
  169. package/lib/typescript/utils/getPreferredUnit.d.ts +3 -0
  170. package/lib/typescript/utils/getQuantitySampleById.d.ts +3 -0
  171. package/lib/typescript/utils/getWorkoutById.d.ts +3 -0
  172. package/lib/typescript/utils/subscribeToChanges.d.ts +5 -0
  173. package/nitrogen/generated/.gitattributes +1 -0
  174. package/nitrogen/generated/ios/ReactNativeHealthkit+autolinking.rb +60 -0
  175. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.cpp +450 -0
  176. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.hpp +2570 -0
  177. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Umbrella.hpp +326 -0
  178. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.mm +89 -0
  179. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.swift +130 -0
  180. package/nitrogen/generated/ios/c++/HybridCategoryTypeModuleSpecSwift.cpp +11 -0
  181. package/nitrogen/generated/ios/c++/HybridCategoryTypeModuleSpecSwift.hpp +146 -0
  182. package/nitrogen/generated/ios/c++/HybridCharacteristicTypeModuleSpecSwift.cpp +11 -0
  183. package/nitrogen/generated/ios/c++/HybridCharacteristicTypeModuleSpecSwift.hpp +155 -0
  184. package/nitrogen/generated/ios/c++/HybridCoreModuleSpecSwift.cpp +11 -0
  185. package/nitrogen/generated/ios/c++/HybridCoreModuleSpecSwift.hpp +300 -0
  186. package/nitrogen/generated/ios/c++/HybridCorrelationTypeModuleSpecSwift.cpp +11 -0
  187. package/nitrogen/generated/ios/c++/HybridCorrelationTypeModuleSpecSwift.hpp +120 -0
  188. package/nitrogen/generated/ios/c++/HybridHeartbeatSeriesModuleSpecSwift.cpp +11 -0
  189. package/nitrogen/generated/ios/c++/HybridHeartbeatSeriesModuleSpecSwift.hpp +138 -0
  190. package/nitrogen/generated/ios/c++/HybridQuantityTypeModuleSpecSwift.cpp +11 -0
  191. package/nitrogen/generated/ios/c++/HybridQuantityTypeModuleSpecSwift.hpp +196 -0
  192. package/nitrogen/generated/ios/c++/HybridSourceProxySpecSwift.cpp +11 -0
  193. package/nitrogen/generated/ios/c++/HybridSourceProxySpecSwift.hpp +77 -0
  194. package/nitrogen/generated/ios/c++/HybridStateOfMindModuleSpecSwift.cpp +11 -0
  195. package/nitrogen/generated/ios/c++/HybridStateOfMindModuleSpecSwift.hpp +138 -0
  196. package/nitrogen/generated/ios/c++/HybridWorkoutProxySpecSwift.cpp +11 -0
  197. package/nitrogen/generated/ios/c++/HybridWorkoutProxySpecSwift.hpp +196 -0
  198. package/nitrogen/generated/ios/c++/HybridWorkoutSessionModuleSpecSwift.cpp +11 -0
  199. package/nitrogen/generated/ios/c++/HybridWorkoutSessionModuleSpecSwift.hpp +107 -0
  200. package/nitrogen/generated/ios/c++/HybridWorkoutsModuleSpecSwift.cpp +11 -0
  201. package/nitrogen/generated/ios/c++/HybridWorkoutsModuleSpecSwift.hpp +172 -0
  202. package/nitrogen/generated/ios/swift/AuthorizationRequestStatus.swift +44 -0
  203. package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
  204. package/nitrogen/generated/ios/swift/BiologicalSex.swift +48 -0
  205. package/nitrogen/generated/ios/swift/BloodType.swift +68 -0
  206. package/nitrogen/generated/ios/swift/CategorySample.swift +148 -0
  207. package/nitrogen/generated/ios/swift/CategorySampleForSaving.swift +108 -0
  208. package/nitrogen/generated/ios/swift/CategorySamplesWithAnchorResponse.swift +81 -0
  209. package/nitrogen/generated/ios/swift/CategoryTypeIdentifier.swift +288 -0
  210. package/nitrogen/generated/ios/swift/ComparisonPredicateOperator.swift +88 -0
  211. package/nitrogen/generated/ios/swift/CorrelationObject.swift +16 -0
  212. package/nitrogen/generated/ios/swift/CorrelationSample.swift +117 -0
  213. package/nitrogen/generated/ios/swift/CorrelationTypeIdentifier.swift +40 -0
  214. package/nitrogen/generated/ios/swift/DeletedSample.swift +64 -0
  215. package/nitrogen/generated/ios/swift/Device.swift +256 -0
  216. package/nitrogen/generated/ios/swift/FilterForSamples.swift +21 -0
  217. package/nitrogen/generated/ios/swift/FilterForSamplesAnd.swift +94 -0
  218. package/nitrogen/generated/ios/swift/FilterForSamplesOr.swift +94 -0
  219. package/nitrogen/generated/ios/swift/FitzpatrickSkinType.swift +60 -0
  220. package/nitrogen/generated/ios/swift/Func_void_AuthorizationRequestStatus.swift +46 -0
  221. package/nitrogen/generated/ios/swift/Func_void_BiologicalSex.swift +46 -0
  222. package/nitrogen/generated/ios/swift/Func_void_BloodType.swift +46 -0
  223. package/nitrogen/generated/ios/swift/Func_void_CategorySamplesWithAnchorResponse.swift +46 -0
  224. package/nitrogen/generated/ios/swift/Func_void_FitzpatrickSkinType.swift +46 -0
  225. package/nitrogen/generated/ios/swift/Func_void_HeartbeatSeriesSamplesWithAnchorResponse.swift +46 -0
  226. package/nitrogen/generated/ios/swift/Func_void_OnChangeCallbackArgs.swift +46 -0
  227. package/nitrogen/generated/ios/swift/Func_void_QuantitySamplesWithAnchorResponse.swift +46 -0
  228. package/nitrogen/generated/ios/swift/Func_void_QueryStatisticsResponse.swift +46 -0
  229. package/nitrogen/generated/ios/swift/Func_void_QueryWorkoutSamplesWithAnchorResponse.swift +46 -0
  230. package/nitrogen/generated/ios/swift/Func_void_WheelchairUse.swift +46 -0
  231. package/nitrogen/generated/ios/swift/Func_void_WorkoutEventType.swift +46 -0
  232. package/nitrogen/generated/ios/swift/Func_void_WorkoutSessionState_WorkoutSessionState_std__chrono__system_clock__time_point.swift +46 -0
  233. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  234. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  235. package/nitrogen/generated/ios/swift/Func_void_std__chrono__system_clock__time_point.swift +46 -0
  236. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  237. package/nitrogen/generated/ios/swift/Func_void_std__optional_WorkoutPlan_.swift +52 -0
  238. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  239. package/nitrogen/generated/ios/swift/Func_void_std__unordered_map_std__string__bool_.swift +54 -0
  240. package/nitrogen/generated/ios/swift/Func_void_std__vector_CategorySample_.swift +46 -0
  241. package/nitrogen/generated/ios/swift/Func_void_std__vector_CorrelationSample_.swift +46 -0
  242. package/nitrogen/generated/ios/swift/Func_void_std__vector_HeartbeatSeriesSample_.swift +46 -0
  243. package/nitrogen/generated/ios/swift/Func_void_std__vector_IdentifierWithUnit_.swift +46 -0
  244. package/nitrogen/generated/ios/swift/Func_void_std__vector_QuantitySample_.swift +46 -0
  245. package/nitrogen/generated/ios/swift/Func_void_std__vector_QueryStatisticsResponse_.swift +46 -0
  246. package/nitrogen/generated/ios/swift/Func_void_std__vector_RemoteSessionSharableData_.swift +46 -0
  247. package/nitrogen/generated/ios/swift/Func_void_std__vector_StateOfMindSample_.swift +46 -0
  248. package/nitrogen/generated/ios/swift/Func_void_std__vector_WorkoutRoute_.swift +46 -0
  249. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__shared_ptr_margelo__nitro__healthkit__HybridSourceProxySpec__.swift +50 -0
  250. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__shared_ptr_margelo__nitro__healthkit__HybridWorkoutProxySpec__.swift +50 -0
  251. package/nitrogen/generated/ios/swift/Heartbeat.swift +46 -0
  252. package/nitrogen/generated/ios/swift/HeartbeatSeriesSample.swift +167 -0
  253. package/nitrogen/generated/ios/swift/HeartbeatSeriesSamplesWithAnchorResponse.swift +81 -0
  254. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec.swift +50 -0
  255. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec_cxx.swift +171 -0
  256. package/nitrogen/generated/ios/swift/HybridCharacteristicTypeModuleSpec.swift +57 -0
  257. package/nitrogen/generated/ios/swift/HybridCharacteristicTypeModuleSpec_cxx.swift +257 -0
  258. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec.swift +69 -0
  259. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec_cxx.swift +523 -0
  260. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec.swift +49 -0
  261. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec_cxx.swift +158 -0
  262. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec.swift +49 -0
  263. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec_cxx.swift +152 -0
  264. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec.swift +54 -0
  265. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec_cxx.swift +285 -0
  266. package/nitrogen/generated/ios/swift/HybridSourceProxySpec.swift +48 -0
  267. package/nitrogen/generated/ios/swift/HybridSourceProxySpec_cxx.swift +125 -0
  268. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec.swift +49 -0
  269. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec_cxx.swift +158 -0
  270. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec.swift +64 -0
  271. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec_cxx.swift +351 -0
  272. package/nitrogen/generated/ios/swift/HybridWorkoutSessionModuleSpec.swift +49 -0
  273. package/nitrogen/generated/ios/swift/HybridWorkoutSessionModuleSpec_cxx.swift +133 -0
  274. package/nitrogen/generated/ios/swift/HybridWorkoutsModuleSpec.swift +51 -0
  275. package/nitrogen/generated/ios/swift/HybridWorkoutsModuleSpec_cxx.swift +187 -0
  276. package/nitrogen/generated/ios/swift/IdentifierWithUnit.swift +46 -0
  277. package/nitrogen/generated/ios/swift/IntervalComponents.swift +139 -0
  278. package/nitrogen/generated/ios/swift/LocationForSaving.swift +112 -0
  279. package/nitrogen/generated/ios/swift/ObjectTypeIdentifier.swift +820 -0
  280. package/nitrogen/generated/ios/swift/OnChangeCallbackArgs.swift +64 -0
  281. package/nitrogen/generated/ios/swift/PredicateForSamples.swift +19 -0
  282. package/nitrogen/generated/ios/swift/PredicateForWorkouts.swift +21 -0
  283. package/nitrogen/generated/ios/swift/PredicateForWorkoutsAnd.swift +108 -0
  284. package/nitrogen/generated/ios/swift/PredicateForWorkoutsOr.swift +108 -0
  285. package/nitrogen/generated/ios/swift/PredicateFromWorkout.swift +45 -0
  286. package/nitrogen/generated/ios/swift/PredicateWithMetadataKey.swift +35 -0
  287. package/nitrogen/generated/ios/swift/PredicateWithStartAndEnd.swift +128 -0
  288. package/nitrogen/generated/ios/swift/PredicateWithUUID.swift +35 -0
  289. package/nitrogen/generated/ios/swift/PredicateWithUUIDs.swift +47 -0
  290. package/nitrogen/generated/ios/swift/Quantity.swift +46 -0
  291. package/nitrogen/generated/ios/swift/QuantityDateInterval.swift +46 -0
  292. package/nitrogen/generated/ios/swift/QuantitySample.swift +159 -0
  293. package/nitrogen/generated/ios/swift/QuantitySampleForSaving.swift +119 -0
  294. package/nitrogen/generated/ios/swift/QuantitySamplesWithAnchorResponse.swift +81 -0
  295. package/nitrogen/generated/ios/swift/QuantityTypeIdentifier.swift +508 -0
  296. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchor.swift +166 -0
  297. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchorAndUnit.swift +195 -0
  298. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrder.swift +160 -0
  299. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrderAndUnit.swift +189 -0
  300. package/nitrogen/generated/ios/swift/QueryStatisticsResponse.swift +227 -0
  301. package/nitrogen/generated/ios/swift/QueryWorkoutSamplesWithAnchorResponse.swift +91 -0
  302. package/nitrogen/generated/ios/swift/RemoteSessionSharableData.swift +46 -0
  303. package/nitrogen/generated/ios/swift/SampleForSaving.swift +16 -0
  304. package/nitrogen/generated/ios/swift/SampleTypeIdentifier.swift +792 -0
  305. package/nitrogen/generated/ios/swift/SampleTypeIdentifierWriteable.swift +772 -0
  306. package/nitrogen/generated/ios/swift/Source.swift +46 -0
  307. package/nitrogen/generated/ios/swift/SourceRevision.swift +150 -0
  308. package/nitrogen/generated/ios/swift/StateOfMindAssociation.swift +104 -0
  309. package/nitrogen/generated/ios/swift/StateOfMindKind.swift +40 -0
  310. package/nitrogen/generated/ios/swift/StateOfMindLabel.swift +184 -0
  311. package/nitrogen/generated/ios/swift/StateOfMindSample.swift +223 -0
  312. package/nitrogen/generated/ios/swift/StateOfMindValenceClassification.swift +60 -0
  313. package/nitrogen/generated/ios/swift/StatisticsOptions.swift +60 -0
  314. package/nitrogen/generated/ios/swift/StatisticsQueryOptions.swift +129 -0
  315. package/nitrogen/generated/ios/swift/UpdateFrequency.swift +48 -0
  316. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout.swift +19 -0
  317. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_FilterForSamplesAnd_FilterForSamplesOr.swift +21 -0
  318. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_WorkoutActivityTypePredicate_WorkoutDurationPredicate_PredicateForWorkoutsOr_PredicateForWorkoutsAnd.swift +23 -0
  319. package/nitrogen/generated/ios/swift/WheelchairUse.swift +44 -0
  320. package/nitrogen/generated/ios/swift/WorkoutActivity.swift +68 -0
  321. package/nitrogen/generated/ios/swift/WorkoutActivityType.swift +368 -0
  322. package/nitrogen/generated/ios/swift/WorkoutActivityTypePredicate.swift +35 -0
  323. package/nitrogen/generated/ios/swift/WorkoutConfiguration.swift +58 -0
  324. package/nitrogen/generated/ios/swift/WorkoutDurationPredicate.swift +46 -0
  325. package/nitrogen/generated/ios/swift/WorkoutEvent.swift +57 -0
  326. package/nitrogen/generated/ios/swift/WorkoutEventType.swift +64 -0
  327. package/nitrogen/generated/ios/swift/WorkoutPlan.swift +46 -0
  328. package/nitrogen/generated/ios/swift/WorkoutQueryOptions.swift +232 -0
  329. package/nitrogen/generated/ios/swift/WorkoutQueryOptionsWithAnchor.swift +238 -0
  330. package/nitrogen/generated/ios/swift/WorkoutRoute.swift +99 -0
  331. package/nitrogen/generated/ios/swift/WorkoutRouteLocation.swift +146 -0
  332. package/nitrogen/generated/ios/swift/WorkoutSample.swift +364 -0
  333. package/nitrogen/generated/ios/swift/WorkoutSessionLocationType.swift +44 -0
  334. package/nitrogen/generated/ios/swift/WorkoutSessionMirroringStartHandlerOptions.swift +118 -0
  335. package/nitrogen/generated/ios/swift/WorkoutSessionState.swift +56 -0
  336. package/nitrogen/generated/ios/swift/WorkoutTotals.swift +70 -0
  337. package/nitrogen/generated/shared/c++/AuthorizationRequestStatus.hpp +65 -0
  338. package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +65 -0
  339. package/nitrogen/generated/shared/c++/BiologicalSex.hpp +66 -0
  340. package/nitrogen/generated/shared/c++/BloodType.hpp +71 -0
  341. package/nitrogen/generated/shared/c++/CategorySample.hpp +110 -0
  342. package/nitrogen/generated/shared/c++/CategorySampleForSaving.hpp +98 -0
  343. package/nitrogen/generated/shared/c++/CategorySamplesWithAnchorResponse.hpp +83 -0
  344. package/nitrogen/generated/shared/c++/CategoryTypeIdentifier.hpp +326 -0
  345. package/nitrogen/generated/shared/c++/ComparisonPredicateOperator.hpp +76 -0
  346. package/nitrogen/generated/shared/c++/CorrelationSample.hpp +98 -0
  347. package/nitrogen/generated/shared/c++/CorrelationTypeIdentifier.hpp +78 -0
  348. package/nitrogen/generated/shared/c++/DeletedSample.hpp +76 -0
  349. package/nitrogen/generated/shared/c++/Device.hpp +98 -0
  350. package/nitrogen/generated/shared/c++/FilterForSamplesAnd.hpp +84 -0
  351. package/nitrogen/generated/shared/c++/FilterForSamplesOr.hpp +84 -0
  352. package/nitrogen/generated/shared/c++/FitzpatrickSkinType.hpp +69 -0
  353. package/nitrogen/generated/shared/c++/Heartbeat.hpp +73 -0
  354. package/nitrogen/generated/shared/c++/HeartbeatSeriesSample.hpp +107 -0
  355. package/nitrogen/generated/shared/c++/HeartbeatSeriesSamplesWithAnchorResponse.hpp +83 -0
  356. package/nitrogen/generated/shared/c++/HybridCategoryTypeModuleSpec.cpp +23 -0
  357. package/nitrogen/generated/shared/c++/HybridCategoryTypeModuleSpec.hpp +84 -0
  358. package/nitrogen/generated/shared/c++/HybridCharacteristicTypeModuleSpec.cpp +30 -0
  359. package/nitrogen/generated/shared/c++/HybridCharacteristicTypeModuleSpec.hpp +83 -0
  360. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.cpp +42 -0
  361. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.hpp +140 -0
  362. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.cpp +22 -0
  363. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.hpp +80 -0
  364. package/nitrogen/generated/shared/c++/HybridHeartbeatSeriesModuleSpec.cpp +22 -0
  365. package/nitrogen/generated/shared/c++/HybridHeartbeatSeriesModuleSpec.hpp +76 -0
  366. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.cpp +27 -0
  367. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.hpp +123 -0
  368. package/nitrogen/generated/shared/c++/HybridSourceProxySpec.cpp +22 -0
  369. package/nitrogen/generated/shared/c++/HybridSourceProxySpec.hpp +65 -0
  370. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.cpp +22 -0
  371. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.hpp +83 -0
  372. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.cpp +38 -0
  373. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.hpp +114 -0
  374. package/nitrogen/generated/shared/c++/HybridWorkoutSessionModuleSpec.cpp +22 -0
  375. package/nitrogen/generated/shared/c++/HybridWorkoutSessionModuleSpec.hpp +68 -0
  376. package/nitrogen/generated/shared/c++/HybridWorkoutsModuleSpec.cpp +24 -0
  377. package/nitrogen/generated/shared/c++/HybridWorkoutsModuleSpec.hpp +95 -0
  378. package/nitrogen/generated/shared/c++/IdentifierWithUnit.hpp +73 -0
  379. package/nitrogen/generated/shared/c++/IntervalComponents.hpp +85 -0
  380. package/nitrogen/generated/shared/c++/LocationForSaving.hpp +97 -0
  381. package/nitrogen/generated/shared/c++/ObjectTypeIdentifier.hpp +858 -0
  382. package/nitrogen/generated/shared/c++/OnChangeCallbackArgs.hpp +76 -0
  383. package/nitrogen/generated/shared/c++/PredicateForWorkoutsAnd.hpp +90 -0
  384. package/nitrogen/generated/shared/c++/PredicateForWorkoutsOr.hpp +90 -0
  385. package/nitrogen/generated/shared/c++/PredicateFromWorkout.hpp +71 -0
  386. package/nitrogen/generated/shared/c++/PredicateWithMetadataKey.hpp +69 -0
  387. package/nitrogen/generated/shared/c++/PredicateWithStartAndEnd.hpp +82 -0
  388. package/nitrogen/generated/shared/c++/PredicateWithUUID.hpp +69 -0
  389. package/nitrogen/generated/shared/c++/PredicateWithUUIDs.hpp +70 -0
  390. package/nitrogen/generated/shared/c++/Quantity.hpp +73 -0
  391. package/nitrogen/generated/shared/c++/QuantityDateInterval.hpp +73 -0
  392. package/nitrogen/generated/shared/c++/QuantitySample.hpp +114 -0
  393. package/nitrogen/generated/shared/c++/QuantitySampleForSaving.hpp +103 -0
  394. package/nitrogen/generated/shared/c++/QuantitySamplesWithAnchorResponse.hpp +83 -0
  395. package/nitrogen/generated/shared/c++/QuantityTypeIdentifier.hpp +546 -0
  396. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchor.hpp +99 -0
  397. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchorAndUnit.hpp +103 -0
  398. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrder.hpp +98 -0
  399. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrderAndUnit.hpp +103 -0
  400. package/nitrogen/generated/shared/c++/QueryStatisticsResponse.hpp +98 -0
  401. package/nitrogen/generated/shared/c++/QueryWorkoutSamplesWithAnchorResponse.hpp +84 -0
  402. package/nitrogen/generated/shared/c++/RemoteSessionSharableData.hpp +75 -0
  403. package/nitrogen/generated/shared/c++/SampleTypeIdentifier.hpp +830 -0
  404. package/nitrogen/generated/shared/c++/SampleTypeIdentifierWriteable.hpp +810 -0
  405. package/nitrogen/generated/shared/c++/Source.hpp +73 -0
  406. package/nitrogen/generated/shared/c++/SourceRevision.hpp +85 -0
  407. package/nitrogen/generated/shared/c++/StateOfMindAssociation.hpp +80 -0
  408. package/nitrogen/generated/shared/c++/StateOfMindKind.hpp +64 -0
  409. package/nitrogen/generated/shared/c++/StateOfMindLabel.hpp +100 -0
  410. package/nitrogen/generated/shared/c++/StateOfMindSample.hpp +132 -0
  411. package/nitrogen/generated/shared/c++/StateOfMindValenceClassification.hpp +69 -0
  412. package/nitrogen/generated/shared/c++/StatisticsOptions.hpp +98 -0
  413. package/nitrogen/generated/shared/c++/StatisticsQueryOptions.hpp +89 -0
  414. package/nitrogen/generated/shared/c++/UpdateFrequency.hpp +66 -0
  415. package/nitrogen/generated/shared/c++/WheelchairUse.hpp +65 -0
  416. package/nitrogen/generated/shared/c++/WorkoutActivity.hpp +82 -0
  417. package/nitrogen/generated/shared/c++/WorkoutActivityType.hpp +146 -0
  418. package/nitrogen/generated/shared/c++/WorkoutActivityTypePredicate.hpp +70 -0
  419. package/nitrogen/generated/shared/c++/WorkoutConfiguration.hpp +78 -0
  420. package/nitrogen/generated/shared/c++/WorkoutDurationPredicate.hpp +74 -0
  421. package/nitrogen/generated/shared/c++/WorkoutEvent.hpp +79 -0
  422. package/nitrogen/generated/shared/c++/WorkoutEventType.hpp +70 -0
  423. package/nitrogen/generated/shared/c++/WorkoutPlan.hpp +75 -0
  424. package/nitrogen/generated/shared/c++/WorkoutQueryOptions.hpp +113 -0
  425. package/nitrogen/generated/shared/c++/WorkoutQueryOptionsWithAnchor.hpp +113 -0
  426. package/nitrogen/generated/shared/c++/WorkoutRoute.hpp +81 -0
  427. package/nitrogen/generated/shared/c++/WorkoutRouteLocation.hpp +106 -0
  428. package/nitrogen/generated/shared/c++/WorkoutSample.hpp +144 -0
  429. package/nitrogen/generated/shared/c++/WorkoutSessionLocationType.hpp +65 -0
  430. package/nitrogen/generated/shared/c++/WorkoutSessionMirroringStartHandlerOptions.hpp +92 -0
  431. package/nitrogen/generated/shared/c++/WorkoutSessionState.hpp +68 -0
  432. package/nitrogen/generated/shared/c++/WorkoutTotals.hpp +73 -0
  433. package/package.json +35 -12
  434. package/src/hooks/useCategorySampleById.ts +41 -0
  435. package/src/hooks/useQuantitySampleById.ts +44 -0
  436. package/src/hooks/useWorkoutById.ts +55 -0
  437. package/src/index.ios.ts +1 -9
  438. package/src/index.ts +4 -16
  439. package/src/utils/getCategorySampleById.ts +16 -0
  440. package/src/utils/getQuantitySampleById.ts +20 -0
  441. package/src/utils/getWorkoutById.ts +20 -0
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMostRecentCategorySample = getMostRecentCategorySample;
4
+ const modules_1 = require("../modules");
5
+ async function getMostRecentCategorySample(identifier) {
6
+ const samples = await modules_1.CategoryTypes.queryCategorySamples(identifier, {
7
+ limit: 1,
8
+ ascending: false,
9
+ });
10
+ return samples[0];
11
+ }
12
+ exports.default = getMostRecentCategorySample;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const modules_1 = require("../modules");
4
+ async function getMostRecentQuantitySample(identifier, unit) {
5
+ const samples = await modules_1.QuantityTypes.queryQuantitySamples(identifier, {
6
+ limit: 1,
7
+ unit,
8
+ });
9
+ return samples[0];
10
+ }
11
+ exports.default = getMostRecentQuantitySample;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const modules_1 = require("../modules");
4
+ const getMostRecentWorkout = async (options) => {
5
+ const workouts = await modules_1.Workouts.queryWorkoutSamples({
6
+ limit: 1,
7
+ ascending: false,
8
+ energyUnit: options?.energyUnit,
9
+ distanceUnit: options?.distanceUnit,
10
+ });
11
+ return workouts[0];
12
+ };
13
+ exports.default = getMostRecentWorkout;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const modules_1 = require("../modules");
4
+ const getPreferredUnit = async (quantityType) => {
5
+ const units = await modules_1.Core.getPreferredUnits([quantityType]);
6
+ const unit = units[0]?.unit;
7
+ if (!unit) {
8
+ throw new Error(`No preferred unit found for quantity type: ${quantityType}`);
9
+ }
10
+ return unit;
11
+ };
12
+ exports.default = getPreferredUnit;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const modules_1 = require("../modules");
4
+ async function getQuantitySampleById(identifier, uuid, unit) {
5
+ const samples = await modules_1.QuantityTypes.queryQuantitySamples(identifier, {
6
+ limit: 1,
7
+ unit,
8
+ filter: {
9
+ uuid: uuid,
10
+ },
11
+ });
12
+ return samples[0];
13
+ }
14
+ exports.default = getQuantitySampleById;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const modules_1 = require("../modules");
4
+ const getWorkoutById = async (uuid, options) => {
5
+ const workouts = await modules_1.Workouts.queryWorkoutSamples({
6
+ limit: 1,
7
+ filter: {
8
+ uuid: uuid,
9
+ },
10
+ energyUnit: options?.energyUnit,
11
+ distanceUnit: options?.distanceUnit,
12
+ });
13
+ return workouts[0];
14
+ };
15
+ exports.default = getWorkoutById;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subscribeToChanges = void 0;
4
+ const modules_1 = require("../modules");
5
+ const subscribeToChanges = (identifier, callback) => {
6
+ const queryId = modules_1.Core.subscribeToObserverQuery(identifier, callback);
7
+ return {
8
+ remove: () => modules_1.Core.unsubscribeQuery(queryId),
9
+ };
10
+ };
11
+ exports.subscribeToChanges = subscribeToChanges;
@@ -0,0 +1,30 @@
1
+ import { useCallback, useState } from 'react';
2
+ import getCategorySampleById from '../utils/getCategorySampleById';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent sample for the given category type.
6
+ */
7
+ export function useCategorySampleById(identifier, uuid) {
8
+ const [sample, setSample] = useState();
9
+ const [isLoading, setIsLoading] = useState(true);
10
+ const [error, setError] = useState(null);
11
+ const updater = useCallback(async () => {
12
+ setIsLoading(true);
13
+ setError(null);
14
+ try {
15
+ const fetchedSample = await getCategorySampleById(identifier, uuid);
16
+ setSample(fetchedSample);
17
+ }
18
+ catch (err) {
19
+ setError(err instanceof Error
20
+ ? err
21
+ : new Error('Unknown error fetching category sample by ID'));
22
+ }
23
+ finally {
24
+ setIsLoading(false);
25
+ }
26
+ }, [identifier, uuid]);
27
+ useSubscribeToChanges(identifier, updater);
28
+ return { sample, isLoading, error };
29
+ }
30
+ export default useCategorySampleById;
@@ -0,0 +1,30 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { Core } from '../modules';
3
+ /**
4
+ * @description Hook to retrieve the current authorization status for the given types, and request authorization if needed.
5
+ * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614152-requestauthorization Apple Docs - requestAuthorization}
6
+ * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Apple Docs - Authorizing access to health data}
7
+ */
8
+ export const useHealthkitAuthorization = (read, write) => {
9
+ const [status, setStatus] = useState(null);
10
+ const readMemo = useRef(read);
11
+ const writeMemo = useRef(write);
12
+ useEffect(() => {
13
+ readMemo.current = read;
14
+ writeMemo.current = write;
15
+ }, [read, write]);
16
+ const refreshAuthStatus = useCallback(async () => {
17
+ const auth = await Core.getRequestStatusForAuthorization(writeMemo.current ?? [], readMemo.current);
18
+ setStatus(auth);
19
+ return auth;
20
+ }, []);
21
+ const request = useCallback(async () => {
22
+ await Core.requestAuthorization(writeMemo.current ?? [], readMemo.current);
23
+ return refreshAuthStatus();
24
+ }, [refreshAuthStatus]);
25
+ useEffect(() => {
26
+ void refreshAuthStatus();
27
+ }, [refreshAuthStatus]);
28
+ return [status, request];
29
+ };
30
+ export default useHealthkitAuthorization;
@@ -0,0 +1,19 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { Core } from '../modules';
3
+ /**
4
+ * @description Now there is a Core.isHealthDataAvailable() that can be called synchronously. 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.
5
+ * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable Apple HealthKit isHealthDataAvailable}
6
+ * @returns {boolean | null} true if HealthKit is available; otherwise, false. null while initializing.
7
+ */
8
+ export const useIsHealthDataAvailable = () => {
9
+ const [isAvailable, setIsAvailable] = useState(null);
10
+ useEffect(() => {
11
+ const init = async () => {
12
+ const res = await Core.isHealthDataAvailableAsync();
13
+ setIsAvailable(res);
14
+ };
15
+ void init();
16
+ }, []);
17
+ return isAvailable;
18
+ };
19
+ export default useIsHealthDataAvailable;
@@ -0,0 +1,15 @@
1
+ import { useCallback, useState } from 'react';
2
+ import getMostRecentCategorySample from '../utils/getMostRecentCategorySample';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent sample for the given category type.
6
+ */
7
+ export function useMostRecentCategorySample(identifier) {
8
+ const [category, setCategory] = useState();
9
+ const updater = useCallback(() => {
10
+ void getMostRecentCategorySample(identifier).then(setCategory);
11
+ }, [identifier]);
12
+ useSubscribeToChanges(identifier, updater);
13
+ return category;
14
+ }
15
+ export default useMostRecentCategorySample;
@@ -0,0 +1,16 @@
1
+ import { useCallback, useState } from 'react';
2
+ import getMostRecentQuantitySample from '../utils/getMostRecentQuantitySample';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent sample for the given quantity type.
6
+ */
7
+ export function useMostRecentQuantitySample(identifier, unit) {
8
+ const [lastSample, setLastSample] = useState();
9
+ const fetchMostRecentSample = useCallback(async () => {
10
+ const value = await getMostRecentQuantitySample(identifier, unit);
11
+ setLastSample(value);
12
+ }, [identifier, unit]);
13
+ useSubscribeToChanges(identifier, fetchMostRecentSample);
14
+ return lastSample;
15
+ }
16
+ export default useMostRecentQuantitySample;
@@ -0,0 +1,25 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import getMostRecentWorkout from '../utils/getMostRecentWorkout';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent workout sample.
6
+ */
7
+ export function useMostRecentWorkout(options) {
8
+ const [workout, setWorkout] = useState();
9
+ const optionsRef = useRef(options);
10
+ useEffect(() => {
11
+ optionsRef.current = options;
12
+ }, [options]);
13
+ const update = useCallback(async () => {
14
+ setWorkout(await getMostRecentWorkout({
15
+ energyUnit: optionsRef.current?.energyUnit,
16
+ distanceUnit: optionsRef.current?.distanceUnit,
17
+ }));
18
+ }, []);
19
+ useEffect(() => {
20
+ void update();
21
+ }, [update]);
22
+ useSubscribeToChanges('HKWorkoutTypeIdentifier', update);
23
+ return workout;
24
+ }
25
+ export default useMostRecentWorkout;
@@ -0,0 +1,28 @@
1
+ import { useCallback, useState } from 'react';
2
+ import getQuantitySampleById from '../utils/getQuantitySampleById';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent sample for the given quantity type.
6
+ */
7
+ export function useQuantitySampleById(identifier, uuid, options = {}) {
8
+ const [sample, setSample] = useState();
9
+ const [isLoading, setIsLoading] = useState(true);
10
+ const [error, setError] = useState(null);
11
+ const fetchMostRecentSample = useCallback(async () => {
12
+ setIsLoading(true);
13
+ try {
14
+ const sample = await getQuantitySampleById(identifier, uuid, options?.unit);
15
+ setSample(sample);
16
+ setError(null);
17
+ }
18
+ catch (err) {
19
+ setError(err instanceof Error ? err : new Error('Unknown error'));
20
+ }
21
+ finally {
22
+ setIsLoading(false);
23
+ }
24
+ }, [identifier, uuid, options.unit]);
25
+ useSubscribeToChanges(identifier, fetchMostRecentSample);
26
+ return { sample, isLoading, error };
27
+ }
28
+ export default useQuantitySampleById;
@@ -0,0 +1,14 @@
1
+ import { useCallback, useEffect, useState } from 'react';
2
+ import { Core } from '../modules';
3
+ export function useSources(identifier) {
4
+ const [result, setResult] = useState(null);
5
+ const update = useCallback(async () => {
6
+ const res = await Core.querySources(identifier);
7
+ setResult(res);
8
+ }, [identifier]);
9
+ useEffect(() => {
10
+ void update();
11
+ }, [update]);
12
+ return result;
13
+ }
14
+ export default useSources;
@@ -0,0 +1,20 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import useSubscribeToChanges from './useSubscribeToChanges';
3
+ import { QuantityTypes } from '../modules';
4
+ export function useStatisticsForQuantity(identifier, options, from, to, unit) {
5
+ const [result, setResult] = useState(null);
6
+ const optionsRef = useRef(options);
7
+ useEffect(() => {
8
+ optionsRef.current = options;
9
+ }, [options]);
10
+ const update = useCallback(async () => {
11
+ const res = await QuantityTypes.queryStatisticsForQuantity(identifier, optionsRef.current, { filter: { startDate: from, endDate: to }, unit });
12
+ setResult(res);
13
+ }, [identifier, from, to, unit]);
14
+ useEffect(() => {
15
+ void update();
16
+ }, [update]);
17
+ useSubscribeToChanges(identifier, update);
18
+ return result;
19
+ }
20
+ export default useStatisticsForQuantity;
@@ -0,0 +1,17 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { subscribeToChanges } from '../utils/subscribeToChanges';
3
+ export function useSubscribeToChanges(identifier, onChange) {
4
+ const onChangeRef = useRef(onChange);
5
+ useEffect(() => {
6
+ onChangeRef.current = onChange;
7
+ }, [onChange]);
8
+ useEffect(() => {
9
+ const subscription = subscribeToChanges(identifier, (args) => {
10
+ onChangeRef.current(args);
11
+ });
12
+ return () => {
13
+ subscription.remove();
14
+ };
15
+ }, [identifier]);
16
+ }
17
+ export default useSubscribeToChanges;
@@ -0,0 +1,40 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import getWorkoutById from '../utils/getWorkoutById';
3
+ import useSubscribeToChanges from './useSubscribeToChanges';
4
+ /**
5
+ * @returns the most recent workout sample.
6
+ */
7
+ export function useWorkoutById(uuid, options) {
8
+ const [workout, setWorkout] = useState();
9
+ const [isLoading, setIsLoading] = useState(true);
10
+ const [error, setError] = useState(null);
11
+ const optionsRef = useRef(options);
12
+ useEffect(() => {
13
+ optionsRef.current = options;
14
+ }, [options]);
15
+ const update = useCallback(async () => {
16
+ setIsLoading(true);
17
+ setError(null);
18
+ try {
19
+ const fetchedWorkout = await getWorkoutById(uuid, {
20
+ energyUnit: optionsRef.current?.energyUnit,
21
+ distanceUnit: optionsRef.current?.distanceUnit,
22
+ });
23
+ setWorkout(fetchedWorkout);
24
+ }
25
+ catch (err) {
26
+ setError(err instanceof Error
27
+ ? err
28
+ : new Error('Unknown error fetching workout by ID'));
29
+ }
30
+ finally {
31
+ setIsLoading(false);
32
+ }
33
+ }, [uuid]);
34
+ useEffect(() => {
35
+ void update();
36
+ }, [update]);
37
+ useSubscribeToChanges('HKWorkoutTypeIdentifier', update);
38
+ return { workout, isLoading, error };
39
+ }
40
+ export default useWorkoutById;
@@ -0,0 +1,126 @@
1
+ import { Platform } from 'react-native';
2
+ import useHealthkitAuthorization from './hooks/useHealthkitAuthorization';
3
+ import { useIsHealthDataAvailable } from './hooks/useIsHealthDataAvailable';
4
+ import useMostRecentCategorySample from './hooks/useMostRecentCategorySample';
5
+ import useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample';
6
+ import useMostRecentWorkout from './hooks/useMostRecentWorkout';
7
+ import useSources from './hooks/useSources';
8
+ import useStatisticsForQuantity from './hooks/useStatisticsForQuantity';
9
+ import useSubscribeToChanges from './hooks/useSubscribeToChanges';
10
+ import { CategoryTypes, Characteristics, Core, CorrelationTypes, HeartbeatSeries, QuantityTypes, StateOfMind, Workouts, } from './modules';
11
+ import getMostRecentCategorySample from './utils/getMostRecentCategorySample';
12
+ import getMostRecentQuantitySample from './utils/getMostRecentQuantitySample';
13
+ import getMostRecentWorkout from './utils/getMostRecentWorkout';
14
+ import getPreferredUnit from './utils/getPreferredUnit';
15
+ const currentMajorVersionIOS = Platform.OS === 'ios' ? Number.parseInt(Platform.Version, 10) : 0;
16
+ export { getMostRecentCategorySample, getMostRecentQuantitySample, getMostRecentWorkout, getPreferredUnit, useMostRecentCategorySample, useMostRecentQuantitySample, useMostRecentWorkout, useSubscribeToChanges, useHealthkitAuthorization, useIsHealthDataAvailable, useSources, useStatisticsForQuantity, };
17
+ // Named exports - all functions bound to their respective modules
18
+ export const authorizationStatusFor = Core.authorizationStatusFor.bind(Core);
19
+ export const disableAllBackgroundDelivery = Core.disableAllBackgroundDelivery.bind(Core);
20
+ export const disableBackgroundDelivery = Core.disableBackgroundDelivery.bind(Core);
21
+ export const enableBackgroundDelivery = Core.enableBackgroundDelivery.bind(Core);
22
+ export const getBiologicalSex = Characteristics.getBiologicalSex.bind(Characteristics);
23
+ export const getBloodType = Characteristics.getBloodType.bind(Characteristics);
24
+ export const getDateOfBirth = Characteristics.getDateOfBirth.bind(Characteristics);
25
+ export const getFitzpatrickSkinType = Characteristics.getFitzpatrickSkinType.bind(Characteristics);
26
+ export const getPreferredUnits = Core.getPreferredUnits.bind(Core);
27
+ export const getRequestStatusForAuthorization = Core.getRequestStatusForAuthorization.bind(Core);
28
+ export const getWheelchairUse = Characteristics.getWheelchairUse.bind(Characteristics);
29
+ export const isHealthDataAvailable = Core.isHealthDataAvailable.bind(Core);
30
+ export const isHealthDataAvailableAsync = Core.isHealthDataAvailableAsync.bind(Core);
31
+ export const queryCategorySamples = CategoryTypes.queryCategorySamples.bind(CategoryTypes);
32
+ export const queryCategorySamplesWithAnchor = CategoryTypes.queryCategorySamplesWithAnchor.bind(CategoryTypes);
33
+ export const queryCorrelationSamples = CorrelationTypes.queryCorrelationSamples.bind(CorrelationTypes);
34
+ export const queryHeartbeatSeriesSamples = HeartbeatSeries.queryHeartbeatSeriesSamples.bind(HeartbeatSeries);
35
+ export const queryHeartbeatSeriesSamplesWithAnchor = HeartbeatSeries.queryHeartbeatSeriesSamplesWithAnchor.bind(HeartbeatSeries);
36
+ export const queryQuantitySamples = QuantityTypes.queryQuantitySamples.bind(QuantityTypes);
37
+ export const queryQuantitySamplesWithAnchor = QuantityTypes.queryQuantitySamplesWithAnchor.bind(QuantityTypes);
38
+ export const queryStatisticsForQuantity = QuantityTypes.queryStatisticsForQuantity.bind(QuantityTypes);
39
+ export const queryStatisticsCollectionForQuantity = QuantityTypes.queryStatisticsCollectionForQuantity.bind(QuantityTypes);
40
+ export const queryWorkoutSamples = Workouts.queryWorkoutSamples.bind(Workouts);
41
+ export const queryWorkoutSamplesWithAnchor = Workouts.queryWorkoutSamplesWithAnchor.bind(Workouts);
42
+ export const querySources = Core.querySources.bind(Core);
43
+ export const requestAuthorization = Core.requestAuthorization.bind(Core);
44
+ export const deleteObjects = Core.deleteObjects.bind(Core);
45
+ export const saveCategorySample = CategoryTypes.saveCategorySample.bind(CategoryTypes);
46
+ export const saveCorrelationSample = CorrelationTypes.saveCorrelationSample.bind(CorrelationTypes);
47
+ export const saveQuantitySample = QuantityTypes.saveQuantitySample.bind(QuantityTypes);
48
+ export const saveWorkoutSample = Workouts.saveWorkoutSample.bind(Workouts);
49
+ export const subscribeToChanges = Core.subscribeToObserverQuery.bind(Core);
50
+ export const startWatchApp = Workouts.startWatchAppWithWorkoutConfiguration.bind(Workouts);
51
+ export const isProtectedDataAvailable = Core.isProtectedDataAvailable.bind(Core);
52
+ export const queryStateOfMindSamples = StateOfMind.queryStateOfMindSamples.bind(StateOfMind);
53
+ export const saveStateOfMindSample = StateOfMind.saveStateOfMindSample.bind(StateOfMind);
54
+ export const isQuantityCompatibleWithUnit = QuantityTypes.isQuantityCompatibleWithUnit.bind(QuantityTypes);
55
+ export const unsubscribeQueries = Core.unsubscribeQueries.bind(Core);
56
+ export const isObjectTypeAvailable = Core.isObjectTypeAvailable.bind(Core);
57
+ export const isObjectTypeAvailableAsync = Core.isObjectTypeAvailableAsync.bind(Core);
58
+ export const areObjectTypesAvailable = Core.areObjectTypesAvailable.bind(Core);
59
+ export const areObjectTypesAvailableAsync = Core.areObjectTypesAvailableAsync.bind(Core);
60
+ export const getBiologicalSexAsync = Characteristics.getBiologicalSexAsync.bind(Characteristics);
61
+ export const getBloodTypeAsync = Characteristics.getBloodTypeAsync.bind(Characteristics);
62
+ export const getDateOfBirthAsync = Characteristics.getDateOfBirthAsync.bind(Characteristics);
63
+ export const getFitzpatrickSkinTypeAsync = Characteristics.getFitzpatrickSkinTypeAsync.bind(Characteristics);
64
+ export const getWheelchairUseAsync = Characteristics.getWheelchairUseAsync.bind(Characteristics);
65
+ export default {
66
+ authorizationStatusFor,
67
+ isObjectTypeAvailable,
68
+ isObjectTypeAvailableAsync,
69
+ areObjectTypesAvailable,
70
+ areObjectTypesAvailableAsync,
71
+ isQuantityCompatibleWithUnit,
72
+ disableAllBackgroundDelivery,
73
+ disableBackgroundDelivery,
74
+ enableBackgroundDelivery,
75
+ getBiologicalSex,
76
+ getBloodType,
77
+ getDateOfBirth,
78
+ getFitzpatrickSkinType,
79
+ getBiologicalSexAsync,
80
+ getBloodTypeAsync,
81
+ getDateOfBirthAsync,
82
+ getFitzpatrickSkinTypeAsync,
83
+ getWheelchairUseAsync,
84
+ getMostRecentCategorySample,
85
+ getMostRecentQuantitySample,
86
+ getMostRecentWorkout,
87
+ getPreferredUnits,
88
+ getPreferredUnit,
89
+ getRequestStatusForAuthorization,
90
+ getWheelchairUse,
91
+ isHealthDataAvailable,
92
+ isHealthDataAvailableAsync,
93
+ queryCategorySamples,
94
+ queryCategorySamplesWithAnchor,
95
+ queryCorrelationSamples,
96
+ queryHeartbeatSeriesSamples,
97
+ queryHeartbeatSeriesSamplesWithAnchor,
98
+ queryQuantitySamples,
99
+ queryQuantitySamplesWithAnchor,
100
+ queryStatisticsForQuantity,
101
+ queryStatisticsCollectionForQuantity,
102
+ queryWorkoutSamples,
103
+ queryWorkoutSamplesWithAnchor,
104
+ querySources,
105
+ requestAuthorization,
106
+ deleteObjects,
107
+ saveCategorySample,
108
+ saveCorrelationSample,
109
+ saveQuantitySample,
110
+ saveWorkoutSample,
111
+ subscribeToChanges,
112
+ unsubscribeQueries,
113
+ startWatchApp,
114
+ isProtectedDataAvailable,
115
+ queryStateOfMindSamples,
116
+ saveStateOfMindSample,
117
+ // hooks
118
+ useMostRecentCategorySample,
119
+ useMostRecentQuantitySample,
120
+ useMostRecentWorkout,
121
+ useSubscribeToChanges,
122
+ useHealthkitAuthorization,
123
+ useIsHealthDataAvailable,
124
+ useSources,
125
+ useStatisticsForQuantity,
126
+ };