@kingstinct/react-native-healthkit 4.4.6 → 5.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 (231) hide show
  1. package/ios/ReactNativeHealthkit.xcodeproj/project.xcworkspace/xcuserdata/robertherber.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  2. package/lib/commonjs/hooks/useHealthkitAuthorization.js +41 -0
  3. package/lib/commonjs/hooks/useHealthkitAuthorization.js.map +1 -0
  4. package/lib/commonjs/hooks/useIsHealthDataAvailable.js +29 -0
  5. package/lib/commonjs/hooks/useIsHealthDataAvailable.js.map +1 -0
  6. package/lib/commonjs/hooks/useMostRecentCategorySample.js +27 -0
  7. package/lib/commonjs/hooks/useMostRecentCategorySample.js.map +1 -0
  8. package/lib/commonjs/hooks/useMostRecentQuantitySample.js +43 -0
  9. package/lib/commonjs/hooks/useMostRecentQuantitySample.js.map +1 -0
  10. package/lib/commonjs/hooks/useMostRecentWorkout.js +60 -0
  11. package/lib/commonjs/hooks/useMostRecentWorkout.js.map +1 -0
  12. package/lib/commonjs/hooks/useStatisticsForQuantity.js +35 -0
  13. package/lib/commonjs/hooks/useStatisticsForQuantity.js.map +1 -0
  14. package/lib/commonjs/hooks/useSubscribeToChanges.js +37 -0
  15. package/lib/commonjs/hooks/useSubscribeToChanges.js.map +1 -0
  16. package/lib/commonjs/index.ios.js +66 -394
  17. package/lib/commonjs/index.ios.js.map +1 -1
  18. package/lib/commonjs/index.js +2 -15
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/native-types.js +170 -78
  21. package/lib/commonjs/native-types.js.map +1 -1
  22. package/lib/commonjs/types.js +13 -0
  23. package/lib/commonjs/types.js.map +1 -1
  24. package/lib/commonjs/utils/deserializeCategorySample.js +15 -0
  25. package/lib/commonjs/utils/deserializeCategorySample.js.map +1 -0
  26. package/lib/commonjs/utils/deserializeCorrelation.js +32 -0
  27. package/lib/commonjs/utils/deserializeCorrelation.js.map +1 -0
  28. package/lib/commonjs/utils/deserializeSample.js +17 -0
  29. package/lib/commonjs/utils/deserializeSample.js.map +1 -0
  30. package/lib/commonjs/utils/deserializeWorkout.js +17 -0
  31. package/lib/commonjs/utils/deserializeWorkout.js.map +1 -0
  32. package/lib/commonjs/utils/ensureMetadata.js +14 -0
  33. package/lib/commonjs/utils/ensureMetadata.js.map +1 -0
  34. package/lib/commonjs/utils/ensureUnit.js +23 -0
  35. package/lib/commonjs/utils/ensureUnit.js.map +1 -0
  36. package/lib/commonjs/utils/getDateOfBirth.js +19 -0
  37. package/lib/commonjs/utils/getDateOfBirth.js.map +1 -0
  38. package/lib/commonjs/utils/getMostRecentCategorySample.js +22 -0
  39. package/lib/commonjs/utils/getMostRecentCategorySample.js.map +1 -0
  40. package/lib/commonjs/utils/getMostRecentQuantitySample.js +22 -0
  41. package/lib/commonjs/utils/getMostRecentQuantitySample.js.map +1 -0
  42. package/lib/commonjs/utils/getMostRecentWorkout.js +24 -0
  43. package/lib/commonjs/utils/getMostRecentWorkout.js.map +1 -0
  44. package/lib/commonjs/utils/getPreferredUnit.js +19 -0
  45. package/lib/commonjs/utils/getPreferredUnit.js.map +1 -0
  46. package/lib/commonjs/utils/getPreferredUnits.js +19 -0
  47. package/lib/commonjs/utils/getPreferredUnits.js.map +1 -0
  48. package/lib/commonjs/utils/getPreferredUnitsTyped.js +46 -0
  49. package/lib/commonjs/utils/getPreferredUnitsTyped.js.map +1 -0
  50. package/lib/commonjs/utils/getRequestStatusForAuthorization.js +25 -0
  51. package/lib/commonjs/utils/getRequestStatusForAuthorization.js.map +1 -0
  52. package/lib/commonjs/utils/prepareOptions.js +27 -0
  53. package/lib/commonjs/utils/prepareOptions.js.map +1 -0
  54. package/lib/commonjs/utils/queryCategorySamples.js +24 -0
  55. package/lib/commonjs/utils/queryCategorySamples.js.map +1 -0
  56. package/lib/commonjs/utils/queryCorrelationSamples.js +24 -0
  57. package/lib/commonjs/utils/queryCorrelationSamples.js.map +1 -0
  58. package/lib/commonjs/utils/queryQuantitySamples.js +27 -0
  59. package/lib/commonjs/utils/queryQuantitySamples.js.map +1 -0
  60. package/lib/commonjs/utils/queryStatisticsForQuantity.js +34 -0
  61. package/lib/commonjs/utils/queryStatisticsForQuantity.js.map +1 -0
  62. package/lib/commonjs/utils/queryWorkouts.js +30 -0
  63. package/lib/commonjs/utils/queryWorkouts.js.map +1 -0
  64. package/lib/commonjs/utils/requestAuthorization.js +25 -0
  65. package/lib/commonjs/utils/requestAuthorization.js.map +1 -0
  66. package/lib/commonjs/utils/saveCategorySample.js +21 -0
  67. package/lib/commonjs/utils/saveCategorySample.js.map +1 -0
  68. package/lib/commonjs/utils/saveCorrelationSample.js +24 -0
  69. package/lib/commonjs/utils/saveCorrelationSample.js.map +1 -0
  70. package/lib/commonjs/utils/saveQuantitySample.js +21 -0
  71. package/lib/commonjs/utils/saveQuantitySample.js.map +1 -0
  72. package/lib/commonjs/utils/saveWorkoutSample.js +25 -0
  73. package/lib/commonjs/utils/saveWorkoutSample.js.map +1 -0
  74. package/lib/commonjs/utils/serializeDate.js +12 -0
  75. package/lib/commonjs/utils/serializeDate.js.map +1 -0
  76. package/lib/commonjs/utils/subscribeToChanges.js +37 -0
  77. package/lib/commonjs/utils/subscribeToChanges.js.map +1 -0
  78. package/lib/module/hooks/useHealthkitAuthorization.js +29 -0
  79. package/lib/module/hooks/useHealthkitAuthorization.js.map +1 -0
  80. package/lib/module/hooks/useIsHealthDataAvailable.js +18 -0
  81. package/lib/module/hooks/useIsHealthDataAvailable.js.map +1 -0
  82. package/lib/module/hooks/useMostRecentCategorySample.js +15 -0
  83. package/lib/module/hooks/useMostRecentCategorySample.js.map +1 -0
  84. package/lib/module/hooks/useMostRecentQuantitySample.js +30 -0
  85. package/lib/module/hooks/useMostRecentQuantitySample.js.map +1 -0
  86. package/lib/module/hooks/useMostRecentWorkout.js +47 -0
  87. package/lib/module/hooks/useMostRecentWorkout.js.map +1 -0
  88. package/lib/module/hooks/useStatisticsForQuantity.js +23 -0
  89. package/lib/module/hooks/useStatisticsForQuantity.js.map +1 -0
  90. package/lib/module/hooks/useSubscribeToChanges.js +26 -0
  91. package/lib/module/hooks/useSubscribeToChanges.js.map +1 -0
  92. package/lib/module/index.ios.js +32 -370
  93. package/lib/module/index.ios.js.map +1 -1
  94. package/lib/module/index.js +3 -5
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/native-types.js +154 -74
  97. package/lib/module/native-types.js.map +1 -1
  98. package/lib/module/types.js +15 -0
  99. package/lib/module/types.js.map +1 -1
  100. package/lib/module/utils/deserializeCategorySample.js +7 -0
  101. package/lib/module/utils/deserializeCategorySample.js.map +1 -0
  102. package/lib/module/utils/deserializeCorrelation.js +21 -0
  103. package/lib/module/utils/deserializeCorrelation.js.map +1 -0
  104. package/lib/module/utils/deserializeSample.js +9 -0
  105. package/lib/module/utils/deserializeSample.js.map +1 -0
  106. package/lib/module/utils/deserializeWorkout.js +9 -0
  107. package/lib/module/utils/deserializeWorkout.js.map +1 -0
  108. package/lib/module/utils/ensureMetadata.js +6 -0
  109. package/lib/module/utils/ensureMetadata.js.map +1 -0
  110. package/lib/module/utils/ensureUnit.js +13 -0
  111. package/lib/module/utils/ensureUnit.js.map +1 -0
  112. package/lib/module/utils/getDateOfBirth.js +9 -0
  113. package/lib/module/utils/getDateOfBirth.js.map +1 -0
  114. package/lib/module/utils/getMostRecentCategorySample.js +12 -0
  115. package/lib/module/utils/getMostRecentCategorySample.js.map +1 -0
  116. package/lib/module/utils/getMostRecentQuantitySample.js +12 -0
  117. package/lib/module/utils/getMostRecentQuantitySample.js.map +1 -0
  118. package/lib/module/utils/getMostRecentWorkout.js +14 -0
  119. package/lib/module/utils/getMostRecentWorkout.js.map +1 -0
  120. package/lib/module/utils/getPreferredUnit.js +9 -0
  121. package/lib/module/utils/getPreferredUnit.js.map +1 -0
  122. package/lib/module/utils/getPreferredUnits.js +9 -0
  123. package/lib/module/utils/getPreferredUnits.js.map +1 -0
  124. package/lib/module/utils/getPreferredUnitsTyped.js +34 -0
  125. package/lib/module/utils/getPreferredUnitsTyped.js.map +1 -0
  126. package/lib/module/utils/getRequestStatusForAuthorization.js +15 -0
  127. package/lib/module/utils/getRequestStatusForAuthorization.js.map +1 -0
  128. package/lib/module/utils/prepareOptions.js +17 -0
  129. package/lib/module/utils/prepareOptions.js.map +1 -0
  130. package/lib/module/utils/queryCategorySamples.js +12 -0
  131. package/lib/module/utils/queryCategorySamples.js.map +1 -0
  132. package/lib/module/utils/queryCorrelationSamples.js +12 -0
  133. package/lib/module/utils/queryCorrelationSamples.js.map +1 -0
  134. package/lib/module/utils/queryQuantitySamples.js +14 -0
  135. package/lib/module/utils/queryQuantitySamples.js.map +1 -0
  136. package/lib/module/utils/queryStatisticsForQuantity.js +23 -0
  137. package/lib/module/utils/queryStatisticsForQuantity.js.map +1 -0
  138. package/lib/module/utils/queryWorkouts.js +17 -0
  139. package/lib/module/utils/queryWorkouts.js.map +1 -0
  140. package/lib/module/utils/requestAuthorization.js +15 -0
  141. package/lib/module/utils/requestAuthorization.js.map +1 -0
  142. package/lib/module/utils/saveCategorySample.js +11 -0
  143. package/lib/module/utils/saveCategorySample.js.map +1 -0
  144. package/lib/module/utils/saveCorrelationSample.js +13 -0
  145. package/lib/module/utils/saveCorrelationSample.js.map +1 -0
  146. package/lib/module/utils/saveQuantitySample.js +11 -0
  147. package/lib/module/utils/saveQuantitySample.js.map +1 -0
  148. package/lib/module/utils/saveWorkoutSample.js +14 -0
  149. package/lib/module/utils/saveWorkoutSample.js.map +1 -0
  150. package/lib/module/utils/serializeDate.js +4 -0
  151. package/lib/module/utils/serializeDate.js.map +1 -0
  152. package/lib/module/utils/subscribeToChanges.js +25 -0
  153. package/lib/module/utils/subscribeToChanges.js.map +1 -0
  154. package/lib/typescript/example-expo/App.d.ts +2 -0
  155. package/lib/typescript/src/hooks/useHealthkitAuthorization.d.ts +3 -0
  156. package/lib/typescript/src/hooks/useIsHealthDataAvailable.d.ts +2 -0
  157. package/lib/typescript/src/hooks/useMostRecentCategorySample.d.ts +4 -0
  158. package/lib/typescript/src/hooks/useMostRecentQuantitySample.d.ts +4 -0
  159. package/lib/typescript/src/hooks/useMostRecentWorkout.d.ts +7 -0
  160. package/lib/typescript/src/hooks/useStatisticsForQuantity.d.ts +4 -0
  161. package/lib/typescript/src/hooks/useSubscribeToChanges.d.ts +3 -0
  162. package/lib/typescript/src/index.d.ts +2 -3
  163. package/lib/typescript/src/index.ios.d.ts +48 -3
  164. package/lib/typescript/src/native-types.d.ts +169 -65
  165. package/lib/typescript/src/types.d.ts +14 -90
  166. package/lib/typescript/src/utils/deserializeCategorySample.d.ts +4 -0
  167. package/lib/typescript/src/utils/deserializeCorrelation.d.ts +4 -0
  168. package/lib/typescript/src/utils/deserializeSample.d.ts +4 -0
  169. package/lib/typescript/src/utils/deserializeWorkout.d.ts +4 -0
  170. package/lib/typescript/src/utils/ensureMetadata.d.ts +2 -0
  171. package/lib/typescript/src/utils/ensureUnit.d.ts +3 -0
  172. package/lib/typescript/src/utils/getDateOfBirth.d.ts +2 -0
  173. package/lib/typescript/src/utils/getMostRecentCategorySample.d.ts +3 -0
  174. package/lib/typescript/src/utils/getMostRecentQuantitySample.d.ts +3 -0
  175. package/lib/typescript/src/utils/getMostRecentWorkout.d.ts +5 -0
  176. package/lib/typescript/src/utils/getPreferredUnit.d.ts +4 -0
  177. package/lib/typescript/src/utils/getPreferredUnits.d.ts +4 -0
  178. package/lib/typescript/src/utils/getPreferredUnitsTyped.d.ts +9 -0
  179. package/lib/typescript/src/utils/getRequestStatusForAuthorization.d.ts +3 -0
  180. package/lib/typescript/src/utils/prepareOptions.d.ts +8 -0
  181. package/lib/typescript/src/utils/queryCategorySamples.d.ts +5 -0
  182. package/lib/typescript/src/utils/queryCorrelationSamples.d.ts +5 -0
  183. package/lib/typescript/src/utils/queryQuantitySamples.d.ts +7 -0
  184. package/lib/typescript/src/utils/queryStatisticsForQuantity.d.ts +14 -0
  185. package/lib/typescript/src/utils/queryWorkouts.d.ts +4 -0
  186. package/lib/typescript/src/utils/requestAuthorization.d.ts +3 -0
  187. package/lib/typescript/src/utils/saveCategorySample.d.ts +7 -0
  188. package/lib/typescript/src/utils/saveCorrelationSample.d.ts +8 -0
  189. package/lib/typescript/src/utils/saveQuantitySample.d.ts +7 -0
  190. package/lib/typescript/src/utils/saveWorkoutSample.d.ts +7 -0
  191. package/lib/typescript/src/utils/serializeDate.d.ts +2 -0
  192. package/lib/typescript/src/utils/subscribeToChanges.d.ts +3 -0
  193. package/package.json +17 -6
  194. package/src/hooks/useHealthkitAuthorization.ts +39 -0
  195. package/src/hooks/useIsHealthDataAvailable.ts +17 -0
  196. package/src/hooks/useMostRecentCategorySample.ts +24 -0
  197. package/src/hooks/useMostRecentQuantitySample.ts +39 -0
  198. package/src/hooks/useMostRecentWorkout.ts +60 -0
  199. package/src/hooks/useStatisticsForQuantity.ts +42 -0
  200. package/src/hooks/useSubscribeToChanges.ts +31 -0
  201. package/src/index.ios.tsx +36 -569
  202. package/src/index.tsx +5 -7
  203. package/src/native-types.ts +213 -74
  204. package/src/types.ts +41 -152
  205. package/src/utils/deserializeCategorySample.ts +12 -0
  206. package/src/utils/deserializeCorrelation.ts +28 -0
  207. package/src/utils/deserializeSample.ts +17 -0
  208. package/src/utils/deserializeWorkout.ts +14 -0
  209. package/src/utils/ensureMetadata.ts +5 -0
  210. package/src/utils/ensureUnit.ts +19 -0
  211. package/src/utils/getDateOfBirth.ts +8 -0
  212. package/src/utils/getMostRecentCategorySample.ts +18 -0
  213. package/src/utils/getMostRecentQuantitySample.ts +19 -0
  214. package/src/utils/getMostRecentWorkout.ts +27 -0
  215. package/src/utils/getPreferredUnit.ts +14 -0
  216. package/src/utils/getPreferredUnits.ts +14 -0
  217. package/src/utils/getPreferredUnitsTyped.ts +38 -0
  218. package/src/utils/getRequestStatusForAuthorization.ts +21 -0
  219. package/src/utils/prepareOptions.ts +15 -0
  220. package/src/utils/queryCategorySamples.ts +29 -0
  221. package/src/utils/queryCorrelationSamples.ts +29 -0
  222. package/src/utils/queryQuantitySamples.ts +36 -0
  223. package/src/utils/queryStatisticsForQuantity.ts +38 -0
  224. package/src/utils/queryWorkouts.ts +28 -0
  225. package/src/utils/requestAuthorization.ts +18 -0
  226. package/src/utils/saveCategorySample.ts +27 -0
  227. package/src/utils/saveCorrelationSample.ts +34 -0
  228. package/src/utils/saveQuantitySample.ts +29 -0
  229. package/src/utils/saveWorkoutSample.ts +28 -0
  230. package/src/utils/serializeDate.ts +3 -0
  231. package/src/utils/subscribeToChanges.ts +32 -0
@@ -1,350 +1,40 @@
1
- import { useCallback, useEffect, useState } from 'react';
2
- import Native, { EventEmitter, HKQuantityTypeIdentifier, HKUnit } from './native-types';
3
-
4
- const getPreferredUnit = async type => {
5
- const [unit] = await getPreferredUnits([type]);
6
- return unit;
7
- };
8
-
9
- const ensureUnit = async (type, providedUnit) => {
10
- if (providedUnit) {
11
- return providedUnit;
12
- }
13
-
14
- const unit = await Native.getPreferredUnits([type]);
15
- return unit[type];
16
- };
17
-
18
- function deserializeSample(sample) {
19
- return { ...sample,
20
- startDate: new Date(sample.startDate),
21
- endDate: new Date(sample.endDate)
22
- };
23
- }
24
-
25
- function deserializeWorkout(sample) {
26
- return { ...sample,
27
- startDate: new Date(sample.startDate),
28
- endDate: new Date(sample.endDate)
29
- };
30
- }
31
-
32
- const deserializCategorySample = sample => ({ ...sample,
33
- startDate: new Date(sample.startDate),
34
- endDate: new Date(sample.endDate)
35
- });
36
-
37
- const serializeDate = date => date ? date.toISOString() : new Date(0).toISOString();
38
-
39
- const prepareOptions = options => {
40
- const limit = !options.limit || options.limit === Infinity ? 0 : options.limit;
41
- const ascending = options.ascending ?? limit === 0;
42
- const from = serializeDate(options.from);
43
- const to = serializeDate(options.to);
44
- return {
45
- limit,
46
- ascending,
47
- from,
48
- to
49
- };
50
- };
51
-
52
- const queryQuantitySamples = async (identifier, options) => {
53
- const unit = await ensureUnit(identifier, options.unit);
54
- const opts = prepareOptions(options);
55
- const quantitySamples = await Native.queryQuantitySamples(identifier, unit, opts.from, opts.to, opts.limit, opts.ascending);
56
- return quantitySamples.map(deserializeSample);
57
- };
58
-
59
- async function getPreferredUnitsTyped(options) {
60
- let energyUnit = options === null || options === void 0 ? void 0 : options.energyUnit;
61
- let distanceUnit = options === null || options === void 0 ? void 0 : options.distanceUnit;
62
-
63
- if (!energyUnit || !distanceUnit) {
64
- const units = await Native.getPreferredUnits([HKQuantityTypeIdentifier.distanceWalkingRunning, HKQuantityTypeIdentifier.activeEnergyBurned]);
65
-
66
- if (!energyUnit) {
67
- energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning];
68
- }
69
-
70
- if (!distanceUnit) {
71
- distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned];
72
- }
73
- }
74
-
75
- if (!energyUnit) {
76
- energyUnit = HKUnit.Kilocalories;
77
- }
78
-
79
- if (!distanceUnit) {
80
- distanceUnit = HKUnit.Meters;
81
- }
82
-
83
- return {
84
- energyUnit,
85
- distanceUnit
86
- };
87
- }
88
-
89
- const subscribeToChanges = async (identifier, callback) => {
90
- const subscription = EventEmitter.addListener('onChange', _ref => {
91
- let {
92
- typeIdentifier
93
- } = _ref;
94
-
95
- if (typeIdentifier === identifier) {
96
- callback();
97
- }
98
- });
99
- const queryId = await Native.subscribeToObserverQuery(identifier).catch(async error => {
100
- subscription.remove();
101
- return Promise.reject(error);
102
- });
103
- return async () => {
104
- subscription.remove();
105
- return Native.unsubscribeQuery(queryId);
106
- };
107
- };
108
-
109
- const getMostRecentQuantitySample = async (identifier, unit) => {
110
- const samples = await queryQuantitySamples(identifier, {
111
- limit: 1,
112
- unit
113
- });
114
- return samples[0];
115
- };
116
-
117
- function useMostRecentWorkout(options) {
118
- const [workout, setWorkout] = useState(null);
119
- useEffect(() => {
120
- let cancelSubscription;
121
-
122
- const init = async () => {
123
- const {
124
- energyUnit,
125
- distanceUnit
126
- } = await getPreferredUnitsTyped(options);
127
- cancelSubscription = await subscribeToChanges('HKWorkoutTypeIdentifier', async () => {
128
- const w = await getMostRecentWorkout({
129
- energyUnit,
130
- distanceUnit
131
- });
132
- setWorkout(w);
133
- });
134
- };
135
-
136
- void init();
137
- return () => {
138
- var _cancelSubscription;
139
-
140
- void ((_cancelSubscription = cancelSubscription) === null || _cancelSubscription === void 0 ? void 0 : _cancelSubscription());
141
- };
142
- }, [options]);
143
- return workout;
144
- }
145
-
146
- const getMostRecentCategorySample = async identifier => {
147
- const samples = await queryCategorySamples(identifier, {
148
- limit: 1,
149
- ascending: false
150
- });
151
- return samples[0];
152
- };
153
-
154
- function useSubscribeToChanges(identifier, onChange) {
155
- useEffect(() => {
156
- let cancelSubscription;
157
-
158
- const init = async () => {
159
- cancelSubscription = await subscribeToChanges(identifier, onChange);
160
- };
161
-
162
- void init();
163
- return () => {
164
- var _cancelSubscription2;
165
-
166
- void ((_cancelSubscription2 = cancelSubscription) === null || _cancelSubscription2 === void 0 ? void 0 : _cancelSubscription2());
167
- };
168
- }, [identifier, onChange]);
169
- }
170
-
171
- function useMostRecentCategorySample(identifier) {
172
- const [category, setCategory] = useState(null);
173
- const updater = useCallback(() => {
174
- void getMostRecentCategorySample(identifier).then(setCategory);
175
- }, [identifier]);
176
- useSubscribeToChanges(identifier, updater);
177
- return category;
178
- }
179
-
180
- function useMostRecentQuantitySample(identifier, unit) {
181
- const [lastSample, setLastSample] = useState(null);
182
- useEffect(() => {
183
- let cancelSubscription;
184
-
185
- const init = async () => {
186
- const actualUnit = await ensureUnit(identifier, unit);
187
- cancelSubscription = await subscribeToChanges(identifier, async () => {
188
- const value = await getMostRecentQuantitySample(identifier, actualUnit);
189
- setLastSample(value);
190
- });
191
- };
192
-
193
- void init();
194
- return () => {
195
- var _cancelSubscription3;
196
-
197
- void ((_cancelSubscription3 = cancelSubscription) === null || _cancelSubscription3 === void 0 ? void 0 : _cancelSubscription3());
198
- };
199
- }, [identifier, unit]);
200
- return lastSample;
201
- }
202
-
203
- const saveQuantitySample = async (identifier, unit, value, options) => {
204
- const start = (options === null || options === void 0 ? void 0 : options.start) || (options === null || options === void 0 ? void 0 : options.end) || new Date();
205
- const end = (options === null || options === void 0 ? void 0 : options.end) || (options === null || options === void 0 ? void 0 : options.start) || new Date();
206
- const metadata = (options === null || options === void 0 ? void 0 : options.metadata) || {};
207
- return Native.saveQuantitySample(identifier, unit, value, start.toISOString(), end.toISOString(), metadata);
208
- };
209
-
210
- const queryStatisticsForQuantity = async (identifier, options, from, to, unit) => {
211
- const actualUnit = await ensureUnit(identifier, unit);
212
- const toDate = to || new Date();
213
- const {
214
- mostRecentQuantityDateInterval,
215
- ...rawResponse
216
- } = await Native.queryStatisticsForQuantity(identifier, actualUnit, from.toISOString(), toDate.toISOString(), options);
217
- const response = { ...rawResponse,
218
- ...(mostRecentQuantityDateInterval ? {
219
- mostRecentQuantityDateInterval: {
220
- from: new Date(mostRecentQuantityDateInterval.from),
221
- to: new Date(mostRecentQuantityDateInterval.to)
222
- }
223
- } : {})
224
- };
225
- return response;
226
- };
227
-
228
- const requestAuthorization = async function (read) {
229
- let write = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
230
- const readPermissions = read.reduce((obj, cur) => ({ ...obj,
231
- [cur]: true
232
- }), {});
233
- const writePermissions = write.reduce((obj, cur) => ({ ...obj,
234
- [cur]: true
235
- }), {});
236
- return Native.requestAuthorization(writePermissions, readPermissions);
237
- };
238
-
239
- const getDateOfBirth = async () => {
240
- const dateOfBirth = await Native.getDateOfBirth();
241
- return new Date(dateOfBirth);
242
- };
243
-
244
- const getRequestStatusForAuthorization = async function (read) {
245
- let write = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
246
- const readPermissions = read.reduce((obj, cur) => ({ ...obj,
247
- [cur]: true
248
- }), {});
249
- const writePermissions = write.reduce((obj, cur) => ({ ...obj,
250
- [cur]: true
251
- }), {});
252
- return Native.getRequestStatusForAuthorization(writePermissions, readPermissions);
253
- };
254
-
255
- const queryCategorySamples = async (identifier, options) => {
256
- const opts = prepareOptions(options);
257
- const results = await Native.queryCategorySamples(identifier, opts.from, opts.to, opts.limit, opts.ascending);
258
- return results.map(deserializCategorySample);
259
- };
260
-
261
- const queryWorkouts = async options => {
262
- const {
263
- energyUnit,
264
- distanceUnit
265
- } = await getPreferredUnitsTyped(options);
266
- const opts = prepareOptions(options);
267
- const workouts = await Native.queryWorkoutSamples(energyUnit, distanceUnit, opts.from, opts.to, opts.limit, opts.ascending);
268
- return workouts.map(deserializeWorkout);
269
- };
270
-
271
- const getMostRecentWorkout = async options => {
272
- const workouts = await queryWorkouts({
273
- limit: 1,
274
- ascending: false,
275
- energyUnit: options === null || options === void 0 ? void 0 : options.energyUnit,
276
- distanceUnit: options === null || options === void 0 ? void 0 : options.distanceUnit
277
- });
278
- return workouts[0];
279
- };
280
-
281
- async function saveCategorySample(identifier, value, options) {
282
- const start = (options === null || options === void 0 ? void 0 : options.start) || (options === null || options === void 0 ? void 0 : options.end) || new Date();
283
- const end = (options === null || options === void 0 ? void 0 : options.end) || (options === null || options === void 0 ? void 0 : options.start) || new Date();
284
- const metadata = (options === null || options === void 0 ? void 0 : options.metadata) || {};
285
- return Native.saveCategorySample(identifier, value, start.toISOString(), end.toISOString(), metadata || {});
286
- }
287
-
288
- const getPreferredUnits = async identifiers => {
289
- const units = await Native.getPreferredUnits(identifiers);
290
- return identifiers.map(i => units[i]);
291
- };
292
-
293
- const buildUnitWithPrefix = (prefix, unit) => `${prefix}${unit}`;
294
-
295
- function deserializeCorrelation(s) {
296
- return { ...s,
297
- objects: s.objects.map(o => {
298
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
299
- // @ts-ignore
300
- if (o.quantity !== undefined) {
301
- return deserializeSample(o);
302
- }
303
-
304
- return deserializCategorySample(o);
305
- }),
306
- endDate: new Date(s.endDate),
307
- startDate: new Date(s.startDate)
308
- };
309
- }
310
-
311
- function ensureMetadata(metadata) {
312
- return metadata || {};
313
- }
314
-
315
- const queryCorrelationSamples = async (typeIdentifier, options) => {
316
- const opts = prepareOptions(options);
317
- const correlations = await Native.queryCorrelationSamples(typeIdentifier, opts.from, opts.to);
318
- return correlations.map(deserializeCorrelation);
319
- };
320
-
321
- const saveCorrelationSample = async (typeIdentifier, samples, options) => {
322
- const start = ((options === null || options === void 0 ? void 0 : options.start) || new Date()).toISOString();
323
- const end = ((options === null || options === void 0 ? void 0 : options.end) || new Date()).toISOString();
324
- return Native.saveCorrelationSample(typeIdentifier, samples, start, end, ensureMetadata(options === null || options === void 0 ? void 0 : options.metadata));
325
- };
326
-
327
- const saveWorkoutSample = async (typeIdentifier, quantities, _start, options) => {
328
- const start = _start.toISOString();
329
-
330
- const end = ((options === null || options === void 0 ? void 0 : options.end) || new Date()).toISOString();
331
- return Native.saveWorkoutSample(typeIdentifier, quantities, start, end, ensureMetadata(options === null || options === void 0 ? void 0 : options.metadata));
332
- };
333
-
334
- const getWorkoutRoutes = async workoutUUID => Native.getWorkoutRoutes(workoutUUID);
335
-
1
+ import useHealthkitAuthorization from './hooks/useHealthkitAuthorization';
2
+ import useIsHealthDataAvailable from './hooks/useIsHealthDataAvailable';
3
+ import useMostRecentCategorySample from './hooks/useMostRecentCategorySample';
4
+ import useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample';
5
+ import useMostRecentWorkout from './hooks/useMostRecentWorkout';
6
+ import useSubscribeToChanges from './hooks/useSubscribeToChanges';
7
+ import Native from './native-types';
8
+ import getDateOfBirth from './utils/getDateOfBirth';
9
+ import getMostRecentCategorySample from './utils/getMostRecentCategorySample';
10
+ import getMostRecentQuantitySample from './utils/getMostRecentQuantitySample';
11
+ import getMostRecentWorkout from './utils/getMostRecentWorkout';
12
+ import getPreferredUnit from './utils/getPreferredUnit';
13
+ import getPreferredUnits from './utils/getPreferredUnits';
14
+ import getRequestStatusForAuthorization from './utils/getRequestStatusForAuthorization';
15
+ import queryCategorySamples from './utils/queryCategorySamples';
16
+ import queryCorrelationSamples from './utils/queryCorrelationSamples';
17
+ import queryQuantitySamples from './utils/queryQuantitySamples';
18
+ import queryStatisticsForQuantity from './utils/queryStatisticsForQuantity';
19
+ import queryWorkouts from './utils/queryWorkouts';
20
+ import requestAuthorization from './utils/requestAuthorization';
21
+ import saveCategorySample from './utils/saveCategorySample';
22
+ import saveCorrelationSample from './utils/saveCorrelationSample';
23
+ import saveQuantitySample from './utils/saveQuantitySample';
24
+ import saveWorkoutSample from './utils/saveWorkoutSample';
25
+ import subscribeToChanges from './utils/subscribeToChanges';
336
26
  const Healthkit = {
337
27
  authorizationStatusFor: Native.authorizationStatusFor.bind(Native),
338
28
  isHealthDataAvailable: Native.isHealthDataAvailable.bind(Native),
339
- buildUnitWithPrefix,
340
- disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery,
341
- disableBackgroundDelivery: Native.disableBackgroundDelivery,
342
- enableBackgroundDelivery: Native.enableBackgroundDelivery,
29
+ disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery.bind(Native),
30
+ disableBackgroundDelivery: Native.disableBackgroundDelivery.bind(Native),
31
+ enableBackgroundDelivery: Native.enableBackgroundDelivery.bind(Native),
343
32
  // simple convenience getters
344
33
  getBiologicalSex: Native.getBiologicalSex.bind(Native),
345
34
  getFitzpatrickSkinType: Native.getFitzpatrickSkinType.bind(Native),
346
- getWheelchairUse: Native.getWheelchairUse,
35
+ getWheelchairUse: Native.getWheelchairUse.bind(Native),
347
36
  getBloodType: Native.getBloodType.bind(Native),
37
+ getWorkoutRoutes: Native.getWorkoutRoutes.bind(Native),
348
38
  getDateOfBirth,
349
39
  getMostRecentQuantitySample,
350
40
  getMostRecentCategorySample,
@@ -352,7 +42,6 @@ const Healthkit = {
352
42
  getPreferredUnit,
353
43
  getPreferredUnits,
354
44
  getRequestStatusForAuthorization,
355
- getWorkoutRoutes,
356
45
  // query methods
357
46
  queryCategorySamples,
358
47
  queryCorrelationSamples,
@@ -372,36 +61,9 @@ const Healthkit = {
372
61
  useMostRecentQuantitySample,
373
62
  useMostRecentWorkout,
374
63
  useSubscribeToChanges,
375
- useIsHealthDataAvailable: () => {
376
- const [isAvailable, setIsAvailable] = useState(null);
377
- useEffect(() => {
378
- const init = async () => {
379
- const res = await Native.isHealthDataAvailable();
380
- setIsAvailable(res);
381
- };
382
-
383
- void init();
384
- }, []);
385
- return isAvailable;
386
- },
387
- useHealthkitAuthorization: (read, write) => {
388
- const [status, setStatus] = useState(null);
389
- const refreshAuthStatus = useCallback(async () => {
390
- const auth = await getRequestStatusForAuthorization(read, write);
391
- setStatus(auth);
392
- return auth;
393
- }, []);
394
- const request = useCallback(async () => {
395
- await requestAuthorization(read, write);
396
- return refreshAuthStatus();
397
- }, []);
398
- useEffect(() => {
399
- void refreshAuthStatus();
400
- }, []);
401
- return [status, request];
402
- }
64
+ useIsHealthDataAvailable,
65
+ useHealthkitAuthorization
403
66
  };
404
- export * from './native-types';
405
67
  export * from './types';
406
68
  export default Healthkit;
407
69
  //# sourceMappingURL=index.ios.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useState","Native","EventEmitter","HKQuantityTypeIdentifier","HKUnit","getPreferredUnit","type","unit","getPreferredUnits","ensureUnit","providedUnit","deserializeSample","sample","startDate","Date","endDate","deserializeWorkout","deserializCategorySample","serializeDate","date","toISOString","prepareOptions","options","limit","Infinity","ascending","from","to","queryQuantitySamples","identifier","opts","quantitySamples","map","getPreferredUnitsTyped","energyUnit","distanceUnit","units","distanceWalkingRunning","activeEnergyBurned","Kilocalories","Meters","subscribeToChanges","callback","subscription","addListener","typeIdentifier","queryId","subscribeToObserverQuery","catch","error","remove","Promise","reject","unsubscribeQuery","getMostRecentQuantitySample","samples","useMostRecentWorkout","workout","setWorkout","cancelSubscription","init","w","getMostRecentWorkout","getMostRecentCategorySample","queryCategorySamples","useSubscribeToChanges","onChange","useMostRecentCategorySample","category","setCategory","updater","then","useMostRecentQuantitySample","lastSample","setLastSample","actualUnit","value","saveQuantitySample","start","end","metadata","queryStatisticsForQuantity","toDate","mostRecentQuantityDateInterval","rawResponse","response","requestAuthorization","read","write","readPermissions","reduce","obj","cur","writePermissions","getDateOfBirth","dateOfBirth","getRequestStatusForAuthorization","results","queryWorkouts","workouts","queryWorkoutSamples","saveCategorySample","identifiers","i","buildUnitWithPrefix","prefix","deserializeCorrelation","s","objects","o","quantity","undefined","ensureMetadata","queryCorrelationSamples","correlations","saveCorrelationSample","saveWorkoutSample","quantities","_start","getWorkoutRoutes","workoutUUID","Healthkit","authorizationStatusFor","bind","isHealthDataAvailable","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","useIsHealthDataAvailable","isAvailable","setIsAvailable","res","useHealthkitAuthorization","status","setStatus","refreshAuthStatus","auth","request"],"sources":["index.ios.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nimport Native, {\n EventEmitter,\n HKQuantityTypeIdentifier,\n HKUnit,\n} from './native-types'\n\nimport type {\n HealthkitReadAuthorization,\n HealthkitWriteAuthorization,\n HKAuthorizationRequestStatus,\n HKCategorySampleRaw,\n HKCategoryValueForIdentifier,\n HKCorrelationRaw,\n HKCorrelationTypeIdentifier,\n HKQuantitySampleRaw,\n HKUnitSI,\n HKUnitSIPrefix,\n HKWorkoutRaw,\n MetadataMapperForCategoryIdentifier,\n ReadPermissions,\n WritePermissions,\n HKSampleTypeIdentifier,\n HKCategoryTypeIdentifier,\n} from './native-types'\nimport type {\n GenericQueryOptions,\n GetMostRecentCategorySampleFn,\n GetMostRecentQuantitySampleFn,\n GetMostRecentWorkoutFn,\n GetPreferredUnitFn,\n GetPreferredUnitsFn,\n GetWorkoutRoutesFn,\n HKCategorySample,\n HKCorrelation,\n HKQuantitySample,\n HKWorkout,\n QueryCategorySamplesFn,\n QueryCorrelationSamplesFn,\n QueryQuantitySamplesFn,\n QueryStatisticsForQuantityFn,\n QueryWorkoutsFn,\n ReactNativeHealthkit,\n SaveCorrelationSampleFn,\n SaveQuantitySampleFn,\n SaveWorkoutSampleFn,\n SubscribeToChangesFn,\n} from './types'\n\nconst getPreferredUnit: GetPreferredUnitFn = async (type) => {\n const [unit] = await getPreferredUnits([type])\n return unit\n}\n\nconst ensureUnit = async <TUnit extends HKUnit>(\n type: HKQuantityTypeIdentifier,\n providedUnit?: TUnit,\n) => {\n if (providedUnit) {\n return providedUnit\n }\n const unit = await Native.getPreferredUnits([type])\n return unit[type] as TUnit\n}\n\nfunction deserializeSample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit\n>(\n sample: HKQuantitySampleRaw<TIdentifier, TUnit>,\n): HKQuantitySample<TIdentifier, TUnit> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n }\n}\n\nfunction deserializeWorkout<TEnergy extends HKUnit, TDistance extends HKUnit>(\n sample: HKWorkoutRaw<TEnergy, TDistance>,\n): HKWorkout<TEnergy, TDistance> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n }\n}\n\nconst deserializCategorySample = <T extends HKCategoryTypeIdentifier>(\n sample: HKCategorySampleRaw<T>,\n): HKCategorySample<T> => ({\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n})\n\nconst serializeDate = (date?: Date | null): string => (date ? date.toISOString() : new Date(0).toISOString())\n\nconst prepareOptions = (options: GenericQueryOptions) => {\n const limit = !options.limit || options.limit === Infinity ? 0 : options.limit\n const ascending = options.ascending ?? limit === 0\n const from = serializeDate(options.from)\n const to = serializeDate(options.to)\n return {\n limit, ascending, from, to,\n }\n}\n\nconst queryQuantitySamples: QueryQuantitySamplesFn = async (\n identifier,\n options,\n) => {\n const unit = await ensureUnit(identifier, options.unit)\n const opts = prepareOptions(options)\n\n const quantitySamples = await Native.queryQuantitySamples(\n identifier,\n unit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return quantitySamples.map(deserializeSample)\n}\n\nasync function getPreferredUnitsTyped<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n let energyUnit = options?.energyUnit\n let distanceUnit = options?.distanceUnit\n if (!energyUnit || !distanceUnit) {\n const units = await Native.getPreferredUnits([\n HKQuantityTypeIdentifier.distanceWalkingRunning,\n HKQuantityTypeIdentifier.activeEnergyBurned,\n ])\n if (!energyUnit) {\n energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning] as\n | TEnergy\n | undefined\n }\n if (!distanceUnit) {\n distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned] as\n | TDistance\n | undefined\n }\n }\n if (!energyUnit) {\n energyUnit = HKUnit.Kilocalories as TEnergy\n }\n if (!distanceUnit) {\n distanceUnit = HKUnit.Meters as TDistance\n }\n return { energyUnit, distanceUnit }\n}\n\nconst subscribeToChanges: SubscribeToChangesFn = async (\n identifier,\n callback,\n) => {\n const subscription = EventEmitter.addListener(\n 'onChange',\n ({ typeIdentifier }) => {\n if (typeIdentifier === identifier) {\n callback()\n }\n },\n )\n\n const queryId = await Native.subscribeToObserverQuery(identifier).catch(\n async (error) => {\n subscription.remove()\n return Promise.reject(error)\n },\n )\n\n return async () => {\n subscription.remove()\n return Native.unsubscribeQuery(queryId)\n }\n}\n\nconst getMostRecentQuantitySample: GetMostRecentQuantitySampleFn = async (\n identifier,\n unit,\n) => {\n const samples = await queryQuantitySamples(identifier, {\n limit: 1,\n unit,\n })\n return samples[0]\n}\n\nfunction useMostRecentWorkout<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n const [workout, setWorkout] = useState<HKWorkout<TEnergy, TDistance> | null>(\n null,\n )\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(\n options,\n )\n\n cancelSubscription = await subscribeToChanges(\n 'HKWorkoutTypeIdentifier',\n async () => {\n const w = await getMostRecentWorkout({ energyUnit, distanceUnit })\n setWorkout(w)\n },\n )\n }\n void init()\n return () => {\n void cancelSubscription?.()\n }\n }, [options])\n return workout\n}\n\nconst getMostRecentCategorySample: GetMostRecentCategorySampleFn = async (\n identifier,\n) => {\n const samples = await queryCategorySamples(identifier, {\n limit: 1,\n ascending: false,\n })\n\n return samples[0]\n}\n\nfunction useSubscribeToChanges<TIdentifier extends HKSampleTypeIdentifier>(\n identifier: TIdentifier,\n onChange: () => void,\n): void {\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(identifier, onChange)\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [identifier, onChange])\n}\n\nfunction useMostRecentCategorySample<\n TCategory extends HKCategoryTypeIdentifier\n>(identifier: TCategory) {\n const [category, setCategory] = useState<HKCategorySample<TCategory> | null>(\n null,\n )\n const updater = useCallback(() => {\n void getMostRecentCategorySample(identifier).then(setCategory)\n }, [identifier])\n\n useSubscribeToChanges(identifier, updater)\n\n return category\n}\n\nfunction useMostRecentQuantitySample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit = HKUnit\n>(identifier: TIdentifier, unit?: TUnit) {\n const [lastSample, setLastSample] = useState<HKQuantitySample<\n TIdentifier,\n TUnit\n > | null>(null)\n\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n const actualUnit = await ensureUnit(identifier, unit)\n\n cancelSubscription = await subscribeToChanges(identifier, async () => {\n const value = await getMostRecentQuantitySample(identifier, actualUnit)\n setLastSample(value)\n })\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [identifier, unit])\n\n return lastSample\n}\n\nconst saveQuantitySample: SaveQuantitySampleFn = async (\n identifier,\n unit,\n value,\n options,\n) => {\n const start = options?.start || options?.end || new Date()\n const end = options?.end || options?.start || new Date()\n const metadata = options?.metadata || {}\n\n return Native.saveQuantitySample(\n identifier,\n unit,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata,\n )\n}\n\nconst queryStatisticsForQuantity: QueryStatisticsForQuantityFn = async (\n identifier,\n options,\n from,\n to,\n unit,\n) => {\n const actualUnit = await ensureUnit(identifier, unit)\n const toDate = to || new Date()\n const { mostRecentQuantityDateInterval, ...rawResponse } = await Native.queryStatisticsForQuantity(\n identifier,\n actualUnit,\n from.toISOString(),\n toDate.toISOString(),\n options,\n )\n\n const response = {\n ...rawResponse,\n ...(mostRecentQuantityDateInterval\n ? {\n mostRecentQuantityDateInterval: {\n from: new Date(mostRecentQuantityDateInterval.from),\n to: new Date(mostRecentQuantityDateInterval.to),\n },\n }\n : {}),\n }\n\n return response\n}\n\nconst requestAuthorization = async (\n read: readonly HealthkitReadAuthorization[],\n write: readonly HealthkitWriteAuthorization[] = [],\n): Promise<boolean> => {\n const readPermissions = read.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as ReadPermissions)\n\n const writePermissions = write.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as WritePermissions)\n\n return Native.requestAuthorization(writePermissions, readPermissions)\n}\n\nconst getDateOfBirth = async () => {\n const dateOfBirth = await Native.getDateOfBirth()\n return new Date(dateOfBirth)\n}\n\nconst getRequestStatusForAuthorization = async (\n read: readonly HealthkitReadAuthorization[],\n write: readonly HealthkitWriteAuthorization[] = [],\n) => {\n const readPermissions = read.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as ReadPermissions)\n\n const writePermissions = write.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as WritePermissions)\n\n return Native.getRequestStatusForAuthorization(\n writePermissions,\n readPermissions,\n )\n}\n\nconst queryCategorySamples: QueryCategorySamplesFn = async (\n identifier,\n options,\n) => {\n const opts = prepareOptions(options)\n const results = await Native.queryCategorySamples(\n identifier,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return results.map(deserializCategorySample)\n}\n\nconst queryWorkouts: QueryWorkoutsFn = async (options) => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(options)\n const opts = prepareOptions(options)\n\n const workouts = await Native.queryWorkoutSamples(\n energyUnit,\n distanceUnit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return workouts.map(deserializeWorkout)\n}\n\nconst getMostRecentWorkout: GetMostRecentWorkoutFn = async (options) => {\n const workouts = await queryWorkouts({\n limit: 1,\n ascending: false,\n energyUnit: options?.energyUnit,\n distanceUnit: options?.distanceUnit,\n })\n\n return workouts[0]\n}\n\nasync function saveCategorySample<T extends HKCategoryTypeIdentifier>(\n identifier: T,\n value: HKCategoryValueForIdentifier<T>,\n options?: {\n readonly start?: Date;\n readonly end?: Date;\n readonly metadata?: MetadataMapperForCategoryIdentifier<T>;\n },\n) {\n const start = options?.start || options?.end || new Date()\n const end = options?.end || options?.start || new Date()\n const metadata = options?.metadata || {}\n\n return Native.saveCategorySample(\n identifier,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata || {},\n )\n}\n\nconst getPreferredUnits: GetPreferredUnitsFn = async (identifiers) => {\n const units = await Native.getPreferredUnits(identifiers)\n return identifiers.map((i) => units[i])\n}\n\nconst buildUnitWithPrefix = (prefix: HKUnitSIPrefix, unit: HKUnitSI) => `${prefix}${unit}` as HKUnit\n\nfunction deserializeCorrelation<\n TIdentifier extends HKCorrelationTypeIdentifier\n>(s: HKCorrelationRaw<TIdentifier>): HKCorrelation<TIdentifier> {\n return {\n ...s,\n objects: s.objects.map((o) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (o.quantity !== undefined) {\n return deserializeSample(o as HKQuantitySampleRaw)\n }\n\n return deserializCategorySample(o as HKCategorySampleRaw)\n }),\n endDate: new Date(s.endDate),\n startDate: new Date(s.startDate),\n }\n}\n\nfunction ensureMetadata<TMetadata>(metadata?: TMetadata) {\n return metadata || ({} as TMetadata)\n}\n\nconst queryCorrelationSamples: QueryCorrelationSamplesFn = async (\n typeIdentifier,\n options,\n) => {\n const opts = prepareOptions(options)\n const correlations = await Native.queryCorrelationSamples(\n typeIdentifier,\n opts.from,\n opts.to,\n )\n\n return correlations.map(deserializeCorrelation)\n}\n\nconst saveCorrelationSample: SaveCorrelationSampleFn = async (\n typeIdentifier,\n samples,\n options,\n) => {\n const start = (options?.start || new Date()).toISOString()\n const end = (options?.end || new Date()).toISOString()\n\n return Native.saveCorrelationSample(\n typeIdentifier,\n samples,\n start,\n end,\n ensureMetadata(options?.metadata),\n )\n}\n\nconst saveWorkoutSample: SaveWorkoutSampleFn = async (\n typeIdentifier,\n quantities,\n _start,\n options,\n) => {\n const start = _start.toISOString()\n const end = (options?.end || new Date()).toISOString()\n\n return Native.saveWorkoutSample(\n typeIdentifier,\n quantities,\n start,\n end,\n ensureMetadata(options?.metadata),\n )\n}\n\nconst getWorkoutRoutes: GetWorkoutRoutesFn = async (workoutUUID: string) => Native.getWorkoutRoutes(workoutUUID)\n\nconst Healthkit: ReactNativeHealthkit = {\n authorizationStatusFor: Native.authorizationStatusFor.bind(Native),\n\n isHealthDataAvailable: Native.isHealthDataAvailable.bind(Native),\n\n buildUnitWithPrefix,\n\n disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery,\n disableBackgroundDelivery: Native.disableBackgroundDelivery,\n enableBackgroundDelivery: Native.enableBackgroundDelivery,\n\n // simple convenience getters\n getBiologicalSex: Native.getBiologicalSex.bind(Native),\n getFitzpatrickSkinType: Native.getFitzpatrickSkinType.bind(Native),\n getWheelchairUse: Native.getWheelchairUse,\n getBloodType: Native.getBloodType.bind(Native),\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n getWorkoutRoutes,\n\n // query methods\n queryCategorySamples,\n queryCorrelationSamples,\n queryQuantitySamples,\n queryStatisticsForQuantity,\n queryWorkouts,\n\n requestAuthorization,\n\n // save methods\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n\n // subscriptions\n subscribeToChanges,\n\n // hooks\n useMostRecentCategorySample,\n\n useMostRecentQuantitySample,\n useMostRecentWorkout,\n\n useSubscribeToChanges,\n\n useIsHealthDataAvailable: () => {\n const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n useEffect(() => {\n const init = async () => {\n const res = await Native.isHealthDataAvailable()\n setIsAvailable(res)\n }\n void init()\n }, [])\n return isAvailable\n },\n useHealthkitAuthorization: (read, write) => {\n const [status, setStatus] = useState<HKAuthorizationRequestStatus | null>(null)\n const refreshAuthStatus = useCallback(async () => {\n const auth = await getRequestStatusForAuthorization(read, write)\n setStatus(auth)\n return auth\n }, [])\n\n const request = useCallback(async () => {\n await requestAuthorization(read, write)\n return refreshAuthStatus()\n }, [])\n\n useEffect(() => {\n void refreshAuthStatus()\n }, [])\n\n return [status, request]\n },\n}\n\nexport * from './native-types'\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"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"}
1
+ {"version":3,"names":["useHealthkitAuthorization","useIsHealthDataAvailable","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","Native","getDateOfBirth","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","queryWorkouts","requestAuthorization","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","Healthkit","authorizationStatusFor","bind","isHealthDataAvailable","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","getWorkoutRoutes"],"sources":["index.ios.tsx"],"sourcesContent":["import useHealthkitAuthorization from './hooks/useHealthkitAuthorization'\nimport useIsHealthDataAvailable from './hooks/useIsHealthDataAvailable'\nimport useMostRecentCategorySample from './hooks/useMostRecentCategorySample'\nimport useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample'\nimport useMostRecentWorkout from './hooks/useMostRecentWorkout'\nimport useSubscribeToChanges from './hooks/useSubscribeToChanges'\nimport Native from './native-types'\nimport getDateOfBirth from './utils/getDateOfBirth'\nimport getMostRecentCategorySample from './utils/getMostRecentCategorySample'\nimport getMostRecentQuantitySample from './utils/getMostRecentQuantitySample'\nimport getMostRecentWorkout from './utils/getMostRecentWorkout'\nimport getPreferredUnit from './utils/getPreferredUnit'\nimport getPreferredUnits from './utils/getPreferredUnits'\nimport getRequestStatusForAuthorization from './utils/getRequestStatusForAuthorization'\nimport queryCategorySamples from './utils/queryCategorySamples'\nimport queryCorrelationSamples from './utils/queryCorrelationSamples'\nimport queryQuantitySamples from './utils/queryQuantitySamples'\nimport queryStatisticsForQuantity from './utils/queryStatisticsForQuantity'\nimport queryWorkouts from './utils/queryWorkouts'\nimport requestAuthorization from './utils/requestAuthorization'\nimport saveCategorySample from './utils/saveCategorySample'\nimport saveCorrelationSample from './utils/saveCorrelationSample'\nimport saveQuantitySample from './utils/saveQuantitySample'\nimport saveWorkoutSample from './utils/saveWorkoutSample'\nimport subscribeToChanges from './utils/subscribeToChanges'\n\nconst Healthkit = {\n authorizationStatusFor: Native.authorizationStatusFor.bind(Native),\n\n isHealthDataAvailable: Native.isHealthDataAvailable.bind(Native),\n\n disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery.bind(Native),\n disableBackgroundDelivery: Native.disableBackgroundDelivery.bind(Native),\n enableBackgroundDelivery: Native.enableBackgroundDelivery.bind(Native),\n\n // simple convenience getters\n getBiologicalSex: Native.getBiologicalSex.bind(Native),\n getFitzpatrickSkinType: Native.getFitzpatrickSkinType.bind(Native),\n getWheelchairUse: Native.getWheelchairUse.bind(Native),\n getBloodType: Native.getBloodType.bind(Native),\n\n getWorkoutRoutes: Native.getWorkoutRoutes.bind(Native),\n\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n // query methods\n queryCategorySamples,\n queryCorrelationSamples,\n queryQuantitySamples,\n queryStatisticsForQuantity,\n queryWorkouts,\n\n requestAuthorization,\n\n // save methods\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n\n // subscriptions\n subscribeToChanges,\n\n // hooks\n useMostRecentCategorySample,\n\n useMostRecentQuantitySample,\n useMostRecentWorkout,\n\n useSubscribeToChanges,\n\n useIsHealthDataAvailable,\n useHealthkitAuthorization,\n}\n\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"AAAA,OAAOA,yBAAP,MAAsC,mCAAtC;AACA,OAAOC,wBAAP,MAAqC,kCAArC;AACA,OAAOC,2BAAP,MAAwC,qCAAxC;AACA,OAAOC,2BAAP,MAAwC,qCAAxC;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AACA,OAAOC,qBAAP,MAAkC,+BAAlC;AACA,OAAOC,MAAP,MAAmB,gBAAnB;AACA,OAAOC,cAAP,MAA2B,wBAA3B;AACA,OAAOC,2BAAP,MAAwC,qCAAxC;AACA,OAAOC,2BAAP,MAAwC,qCAAxC;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AACA,OAAOC,gCAAP,MAA6C,0CAA7C;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AACA,OAAOC,uBAAP,MAAoC,iCAApC;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AACA,OAAOC,0BAAP,MAAuC,oCAAvC;AACA,OAAOC,aAAP,MAA0B,uBAA1B;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AACA,OAAOC,kBAAP,MAA+B,4BAA/B;AACA,OAAOC,qBAAP,MAAkC,+BAAlC;AACA,OAAOC,kBAAP,MAA+B,4BAA/B;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AACA,OAAOC,kBAAP,MAA+B,4BAA/B;AAEA,MAAMC,SAAS,GAAG;EAChBC,sBAAsB,EAAEpB,MAAM,CAACoB,sBAAP,CAA8BC,IAA9B,CAAmCrB,MAAnC,CADR;EAGhBsB,qBAAqB,EAAEtB,MAAM,CAACsB,qBAAP,CAA6BD,IAA7B,CAAkCrB,MAAlC,CAHP;EAKhBuB,4BAA4B,EAAEvB,MAAM,CAACuB,4BAAP,CAAoCF,IAApC,CAAyCrB,MAAzC,CALd;EAMhBwB,yBAAyB,EAAExB,MAAM,CAACwB,yBAAP,CAAiCH,IAAjC,CAAsCrB,MAAtC,CANX;EAOhByB,wBAAwB,EAAEzB,MAAM,CAACyB,wBAAP,CAAgCJ,IAAhC,CAAqCrB,MAArC,CAPV;EAShB;EACA0B,gBAAgB,EAAE1B,MAAM,CAAC0B,gBAAP,CAAwBL,IAAxB,CAA6BrB,MAA7B,CAVF;EAWhB2B,sBAAsB,EAAE3B,MAAM,CAAC2B,sBAAP,CAA8BN,IAA9B,CAAmCrB,MAAnC,CAXR;EAYhB4B,gBAAgB,EAAE5B,MAAM,CAAC4B,gBAAP,CAAwBP,IAAxB,CAA6BrB,MAA7B,CAZF;EAahB6B,YAAY,EAAE7B,MAAM,CAAC6B,YAAP,CAAoBR,IAApB,CAAyBrB,MAAzB,CAbE;EAehB8B,gBAAgB,EAAE9B,MAAM,CAAC8B,gBAAP,CAAwBT,IAAxB,CAA6BrB,MAA7B,CAfF;EAiBhBC,cAjBgB;EAmBhBE,2BAnBgB;EAoBhBD,2BApBgB;EAqBhBE,oBArBgB;EAuBhBC,gBAvBgB;EAwBhBC,iBAxBgB;EAyBhBC,gCAzBgB;EA2BhB;EACAC,oBA5BgB;EA6BhBC,uBA7BgB;EA8BhBC,oBA9BgB;EA+BhBC,0BA/BgB;EAgChBC,aAhCgB;EAkChBC,oBAlCgB;EAoChB;EACAC,kBArCgB;EAsChBC,qBAtCgB;EAuChBC,kBAvCgB;EAwChBC,iBAxCgB;EA0ChB;EACAC,kBA3CgB;EA6ChB;EACAtB,2BA9CgB;EAgDhBC,2BAhDgB;EAiDhBC,oBAjDgB;EAmDhBC,qBAnDgB;EAqDhBJ,wBArDgB;EAsDhBD;AAtDgB,CAAlB;AAyDA,cAAc,SAAd;AAEA,eAAeyB,SAAf"}
@@ -1,5 +1,5 @@
1
1
  import { Platform } from 'react-native';
2
- import { HKAuthorizationRequestStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnit, HKWheelchairUse } from './native-types';
2
+ import { HKAuthorizationRequestStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnits, HKWheelchairUse } from './native-types';
3
3
  const notAvailableError = `[@kingstinct/react-native-healthkit] Platform "${Platform.OS}" not supported`;
4
4
  let hasWarned = false;
5
5
 
@@ -16,7 +16,6 @@ function UnavailableFn(retVal) {
16
16
 
17
17
  const Healthkit = {
18
18
  authorizationStatusFor: UnavailableFn(Promise.resolve(false)),
19
- buildUnitWithPrefix: UnavailableFn(HKUnit.Atmospheres),
20
19
  disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
21
20
  disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
22
21
  enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
@@ -27,7 +26,7 @@ const Healthkit = {
27
26
  getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),
28
27
  getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),
29
28
  getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),
30
- getPreferredUnit: UnavailableFn(Promise.resolve(HKUnit.Atmospheres)),
29
+ getPreferredUnit: UnavailableFn(Promise.resolve(HKUnits.Count)),
31
30
  getPreferredUnits: UnavailableFn(Promise.resolve([])),
32
31
  getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),
33
32
  getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),
@@ -56,10 +55,9 @@ const Healthkit = {
56
55
  useMostRecentQuantitySample: UnavailableFn(null),
57
56
  useMostRecentWorkout: UnavailableFn(null),
58
57
  useSubscribeToChanges: UnavailableFn([null, () => null]),
59
- useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(null)]),
58
+ useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(HKAuthorizationRequestStatus.unknown)]),
60
59
  useIsHealthDataAvailable: () => false
61
60
  };
62
- export * from './native-types';
63
61
  export * from './types';
64
62
  export default Healthkit;
65
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","HKAuthorizationRequestStatus","HKBiologicalSex","HKBloodType","HKFitzpatrickSkinType","HKUnit","HKWheelchairUse","notAvailableError","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","buildUnitWithPrefix","Atmospheres","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","notSet","getBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","unknown","getWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","requestAuthorization","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useHealthkitAuthorization","useIsHealthDataAvailable"],"sources":["index.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport {\n HKAuthorizationRequestStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnit, HKWheelchairUse,\n} from './native-types'\n\nimport type { ReactNativeHealthkit } from './types'\n\nconst notAvailableError = `[@kingstinct/react-native-healthkit] Platform \"${\n Platform.OS\n}\" not supported`\n\nlet hasWarned = false\n\nfunction UnavailableFn<T = unknown>(retVal: T) {\n return () => {\n if (!hasWarned) {\n console.warn(notAvailableError)\n hasWarned = true\n }\n return retVal\n }\n}\n\nconst Healthkit: ReactNativeHealthkit = {\n authorizationStatusFor: UnavailableFn(Promise.resolve(false)),\n buildUnitWithPrefix: UnavailableFn(HKUnit.Atmospheres),\n disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n getBiologicalSex: UnavailableFn(Promise.resolve(HKBiologicalSex.notSet)),\n getBloodType: UnavailableFn(Promise.resolve(HKBloodType.notSet)),\n getDateOfBirth: UnavailableFn(Promise.resolve(new Date(0))),\n getFitzpatrickSkinType: UnavailableFn(Promise.resolve(HKFitzpatrickSkinType.notSet)),\n getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),\n getPreferredUnit: UnavailableFn(Promise.resolve(HKUnit.Atmospheres)),\n getPreferredUnits: UnavailableFn(Promise.resolve([])),\n getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),\n getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),\n getWorkoutRoutes: UnavailableFn(Promise.resolve([])),\n isHealthDataAvailable: async () => Promise.resolve(false),\n queryCategorySamples: UnavailableFn(Promise.resolve([])),\n queryCorrelationSamples: UnavailableFn(Promise.resolve([])),\n queryQuantitySamples: UnavailableFn(Promise.resolve([])),\n queryStatisticsForQuantity: UnavailableFn(Promise.resolve({\n averageQuantity: undefined,\n maximumQuantity: undefined,\n minimumQuantity: undefined,\n sumQuantity: undefined,\n mostRecentQuantity: undefined,\n mostRecentQuantityDateInterval: undefined,\n duration: undefined,\n })),\n queryWorkouts: UnavailableFn(Promise.resolve([])),\n requestAuthorization: UnavailableFn(Promise.resolve(false)),\n saveCategorySample: UnavailableFn(Promise.resolve(false)),\n saveCorrelationSample: UnavailableFn(Promise.resolve(false)),\n saveQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveWorkoutSample: UnavailableFn(Promise.resolve(false)),\n subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),\n useMostRecentCategorySample: UnavailableFn(null),\n useMostRecentQuantitySample: UnavailableFn(null),\n useMostRecentWorkout: UnavailableFn(null),\n useSubscribeToChanges: UnavailableFn([null, () => null]),\n useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(null)] as const),\n useIsHealthDataAvailable: () => false,\n}\n\nexport * from './native-types'\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","HKAuthorizationRequestStatus","HKBiologicalSex","HKBloodType","HKFitzpatrickSkinType","HKUnits","HKWheelchairUse","notAvailableError","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","notSet","getBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","Count","getPreferredUnits","getRequestStatusForAuthorization","unknown","getWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","requestAuthorization","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useHealthkitAuthorization","useIsHealthDataAvailable"],"sources":["index.tsx"],"sourcesContent":["import { Platform } from 'react-native'\n\nimport {\n HKAuthorizationRequestStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnits, HKWheelchairUse,\n} from './native-types'\n\nimport type ReactNativeHealthkit from './index.ios'\n\nconst notAvailableError = `[@kingstinct/react-native-healthkit] Platform \"${\n Platform.OS\n}\" not supported`\n\nlet hasWarned = false\n\nfunction UnavailableFn<T = unknown>(retVal: T) {\n return () => {\n if (!hasWarned) {\n console.warn(notAvailableError)\n hasWarned = true\n }\n return retVal\n }\n}\n\nconst Healthkit: typeof ReactNativeHealthkit = {\n authorizationStatusFor: UnavailableFn(Promise.resolve(false)),\n disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),\n getBiologicalSex: UnavailableFn(Promise.resolve(HKBiologicalSex.notSet)),\n getBloodType: UnavailableFn(Promise.resolve(HKBloodType.notSet)),\n getDateOfBirth: UnavailableFn(Promise.resolve(new Date(0))),\n getFitzpatrickSkinType: UnavailableFn(Promise.resolve(HKFitzpatrickSkinType.notSet)),\n getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),\n getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),\n getPreferredUnit: UnavailableFn(Promise.resolve(HKUnits.Count)),\n getPreferredUnits: UnavailableFn(Promise.resolve([])),\n getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),\n getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),\n getWorkoutRoutes: UnavailableFn(Promise.resolve([])),\n isHealthDataAvailable: async () => Promise.resolve(false),\n queryCategorySamples: UnavailableFn(Promise.resolve([])),\n queryCorrelationSamples: UnavailableFn(Promise.resolve([])),\n queryQuantitySamples: UnavailableFn(Promise.resolve([])),\n queryStatisticsForQuantity: UnavailableFn(Promise.resolve({\n averageQuantity: undefined,\n maximumQuantity: undefined,\n minimumQuantity: undefined,\n sumQuantity: undefined,\n mostRecentQuantity: undefined,\n mostRecentQuantityDateInterval: undefined,\n duration: undefined,\n })),\n queryWorkouts: UnavailableFn(Promise.resolve([])),\n requestAuthorization: UnavailableFn(Promise.resolve(false)),\n saveCategorySample: UnavailableFn(Promise.resolve(false)),\n saveCorrelationSample: UnavailableFn(Promise.resolve(false)),\n saveQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveWorkoutSample: UnavailableFn(Promise.resolve(false)),\n subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),\n useMostRecentCategorySample: UnavailableFn(null),\n useMostRecentQuantitySample: UnavailableFn(null),\n useMostRecentWorkout: UnavailableFn(null),\n useSubscribeToChanges: UnavailableFn([null, () => null]),\n useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(HKAuthorizationRequestStatus.unknown)] as const),\n useIsHealthDataAvailable: () => false,\n}\n\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"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"}