@kingstinct/react-native-healthkit 5.1.1 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +45 -14
  2. package/android/.project +18 -1
  3. package/android/.settings/org.eclipse.buildship.core.prefs +4 -4
  4. package/ios/ReactNativeHealthkit.m +9 -0
  5. package/ios/ReactNativeHealthkit.swift +23 -7
  6. package/lib/commonjs/hooks/useHealthkitAuthorization.js.map +1 -1
  7. package/lib/commonjs/hooks/useHealthkitAuthorization.test.js +57 -0
  8. package/lib/commonjs/hooks/useHealthkitAuthorization.test.js.map +1 -0
  9. package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js +12 -19
  10. package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js.map +1 -1
  11. package/lib/commonjs/index.ios.js +1 -0
  12. package/lib/commonjs/index.ios.js.map +1 -1
  13. package/lib/commonjs/index.js +3 -1
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/jest.setup.js +29 -2
  16. package/lib/commonjs/jest.setup.js.map +1 -1
  17. package/lib/commonjs/native-types.js +27 -27
  18. package/lib/commonjs/native-types.js.map +1 -1
  19. package/lib/commonjs/test-utils.js +21 -0
  20. package/lib/commonjs/test-utils.js.map +1 -0
  21. package/lib/commonjs/utils/getPreferredUnit.js.map +1 -1
  22. package/lib/commonjs/utils/subscribeToChanges.js +4 -4
  23. package/lib/commonjs/utils/subscribeToChanges.js.map +1 -1
  24. package/lib/module/hooks/useHealthkitAuthorization.js.map +1 -1
  25. package/lib/module/hooks/useHealthkitAuthorization.test.js +45 -0
  26. package/lib/module/hooks/useHealthkitAuthorization.test.js.map +1 -0
  27. package/lib/module/hooks/useIsHealthDataAvailable.test.js +8 -16
  28. package/lib/module/hooks/useIsHealthDataAvailable.test.js.map +1 -1
  29. package/lib/module/index.ios.js +1 -0
  30. package/lib/module/index.ios.js.map +1 -1
  31. package/lib/module/index.js +3 -1
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/jest.setup.js +29 -2
  34. package/lib/module/jest.setup.js.map +1 -1
  35. package/lib/module/native-types.js +27 -27
  36. package/lib/module/native-types.js.map +1 -1
  37. package/lib/module/test-utils.js +13 -0
  38. package/lib/module/test-utils.js.map +1 -0
  39. package/lib/module/utils/getPreferredUnit.js.map +1 -1
  40. package/lib/module/utils/subscribeToChanges.js +1 -2
  41. package/lib/module/utils/subscribeToChanges.js.map +1 -1
  42. package/lib/{src/types.js → typescript/src/hooks/useHealthkitAuthorization.test.d.ts} +0 -0
  43. package/lib/typescript/src/index.ios.d.ts +1 -0
  44. package/lib/typescript/src/native-types.d.ts +48 -46
  45. package/lib/typescript/src/test-utils.d.ts +2 -0
  46. package/lib/typescript/src/utils/getPreferredUnit.d.ts +1 -1
  47. package/package.json +8 -4
  48. package/src/hooks/useHealthkitAuthorization.test.ts +54 -0
  49. package/src/hooks/useHealthkitAuthorization.ts +1 -0
  50. package/src/hooks/useIsHealthDataAvailable.test.ts +9 -14
  51. package/src/index.ios.tsx +3 -1
  52. package/src/index.tsx +2 -0
  53. package/src/jest.setup.ts +32 -2
  54. package/src/native-types.ts +349 -159
  55. package/src/test-utils.ts +10 -0
  56. package/src/utils/getPreferredUnit.ts +2 -2
  57. package/src/utils/subscribeToChanges.ts +1 -2
  58. package/lib/example/App.js +0 -197
  59. package/lib/index.ios.js +0 -310
  60. package/lib/index.js +0 -44
  61. package/lib/native-types.js +0 -447
  62. package/lib/src/index.ios.js +0 -314
  63. package/lib/src/index.js +0 -45
  64. package/lib/src/native-types.js +0 -453
  65. package/lib/types.js +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![@kingstinct/react-native-healthkit on NPM](https://img.shields.io/npm/v/@kingstinct/react-native-healthkit)](https://www.npmjs.com/package/@kingstinct/react-native-healthkit)
5
5
  ![npm](https://img.shields.io/npm/dt/@kingstinct/react-native-healthkit)
6
6
 
7
- React Native bindings for HealthKit with full TypeScript and Promise support covering almost everything. Keeping TypeScript mappings as close as possible to HealthKit - both in regards to naming and serialization. This will make it easier to keep this library up-to-date with HealthKit as well as browsing the official documentation (and if something - metadata properties for example - is not typed it will still be accessible).
7
+ React Native bindings for HealthKit with full TypeScript and Promise support covering about any kind of data. Keeping TypeScript mappings as close as possible to HealthKit - both in regards to naming and serialization. This will make it easier to keep this library up-to-date with HealthKit as well as browsing [the official documentation](https://developer.apple.com/documentation/healthkit) (and if something - metadata properties for example - is not typed it will still be accessible).
8
8
 
9
9
  | Data Types | Query | Save | Subscribe | Examples |
10
10
  | ----------------------------|:------|:------|:----------|:---------------------------------------|
@@ -15,28 +15,59 @@ React Native bindings for HealthKit with full TypeScript and Promise support cov
15
15
  | Document Types | ✅ | ❌ | ✅ | [CDA documents](https://developer.apple.com/documentation/healthkit/hkcdadocument) exposed as Base64 data |
16
16
  | Clinical Records | ✅ | ❌ | ✅ | Lab results etc in [FHIR JSON format](https://www.hl7.org/fhir/json.html) |
17
17
 
18
+ ### Disclaimer
19
+
20
+ This library is provided as-is without any warranty and is not affiliated with Apple in any way. The data might be incomplete or inaccurate.
21
+
18
22
  ## Installation
19
23
 
20
- ```sh
21
- npm install @kingstinct/react-native-healthkit
22
- cd ios
23
- pod install
24
+ ### Native or Expo Bare Workflow
25
+ 1. `yarn add @kingstinct/react-native-healthkit` (or `npm install @kingstinct/react-native-healthkit`)
26
+ 2. `npx pod-install`
27
+ 3. Set `NSHealthUpdateUsageDescription` and `NSHealthShareUsageDescription` in your `Info.plist`
28
+ 4. Enable the HealthKit capability for the project in Xcode.
29
+ 5. Since this package is using Swift you might also need to add a bridging header in your project if you haven't already, you can [find more about that in the official React Native docs](https://reactnative.dev/docs/native-modules-ios#exporting-swift)
30
+ 6. During runtime check and request permissions with `requestAuthorization`. Failing to request authorization, or requesting a permission you haven't requested yet, will result in the app crashing.
31
+
32
+ ### Expo Managed Workflow
33
+ Usage with Expo is possible - just keep in mind it will not work in Expo Go and [you'll need to roll your own Dev Client](https://docs.expo.dev/development/getting-started/).
34
+
35
+ 1. `yarn add @kingstinct/react-native-healthkit` (or `npm install @kingstinct/react-native-healthkit`)
36
+ 2. Update your app.json:
37
+ ```json
38
+ {
39
+ "expo": {
40
+ "ios": {
41
+ "infoPlist": {
42
+ "NSHealthShareUsageDescription": "<< your usage description here >>",
43
+ "NSHealthUpdateUsageDescription": "<< your usage description here >>"
44
+ },
45
+ "entitlements": {
46
+ "com.apple.developer.healthkit": true,
47
+ "com.apple.developer.healthkit.background-delivery": true
48
+ }
49
+ }
50
+ }
51
+ }
24
52
  ```
53
+ 3. Build a new Dev Client
54
+ 4. During runtime check and request permissions with `requestAuthorization`. Failing to request authorization, or requesting a permission you haven't requested yet, will result in the app crashing.
25
55
 
26
- or
56
+ ## Usage
27
57
 
28
- ```sh
29
- yarn add @kingstinct/react-native-healthkit
30
- cd ios
31
- pod install
32
- ```
58
+ Some hook examples:
59
+ ```TypeScript
60
+ import { HKQuantityTypeIdentifier, useHealthkitAuthorization } from '@kingstinct/react-native-healthkit';
33
61
 
34
- Remember to set `NSHealthUpdateUsageDescription` and `NSHealthShareUsageDescription` in your `Info.plist` as well as enable the HealthKit capability for the project in Xcode. During runtime you need to check if HealthKit is available on the device with `isHealthDataAvailable` and request permissions with `requestAuthorization`. The example has been migrated to **Expo** for easy-of-use and maintainability. See the [example app.json](https://github.com/Kingstinct/react-native-healthkit/blob/8e82d921f57c9bc0912af5f52f53c181ee8e4b5a/example/app.json#L24-L31) for how to apply this to your project. Just keep in mind this will not work in Expo Go since there is native iOS code involved - you'll have to use EAS to [build your own client](https://docs.expo.dev/development/getting-started/).
62
+ const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization([HKQuantityTypeIdentifier.bloodGlucose])
35
63
 
36
- Since this package is using Swift you might also need to add a bridging header in your project if you haven't already, you can [find more about that in the official React Native docs](https://reactnative.dev/docs/native-modules-ios#exporting-swift)
64
+ // make sure that you've requested authorization before requesting data, otherwise your app will crash
65
+ import { useMostRecentQuantitySample, HKQuantityTypeIdentifier } from '@kingstinct/react-native-healthkit';
37
66
 
38
- ## Usage
67
+ const mostRecentBloodGlucoseSample = useMostRecentQuantitySample(HKQuantityTypeIdentifier.bloodGlucose)
68
+ ```
39
69
 
70
+ Some imperative examples:
40
71
  ```TypeScript
41
72
  import HealthKit, { HKUnit, HKQuantityTypeIdentifier, HKInsulinDeliveryReason, HKCategoryTypeIdentifier } from '@kingstinct/react-native-healthkit';
42
73
 
package/android/.project CHANGED
@@ -1,10 +1,15 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <projectDescription>
3
- <name>android_</name>
3
+ <name>kingstinct_react-native-healthkit</name>
4
4
  <comment>Project android_ created by Buildship.</comment>
5
5
  <projects>
6
6
  </projects>
7
7
  <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
8
13
  <buildCommand>
9
14
  <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
10
15
  <arguments>
@@ -12,6 +17,18 @@
12
17
  </buildCommand>
13
18
  </buildSpec>
14
19
  <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
15
21
  <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
16
22
  </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1663745272821</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
17
34
  </projectDescription>
@@ -1,11 +1,11 @@
1
- arguments=
1
+ arguments=--init-script /var/folders/lb/4fb2wm497wq1_0vknwt43h3h0000gn/T/init5242912127258488867.gradle --init-script /var/folders/lb/4fb2wm497wq1_0vknwt43h3h0000gn/T/init4373878353927339792.gradle
2
2
  auto.sync=false
3
3
  build.scans.enabled=false
4
- connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0))
5
- connection.project.dir=
4
+ connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(7.4.2))
5
+ connection.project.dir=../example/android
6
6
  eclipse.preferences.version=1
7
7
  gradle.user.home=
8
- java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
8
+ java.home=/Users/andarius/.sdkman/candidates/java/11.0.2-open
9
9
  jvm.arguments=
10
10
  offline.mode=false
11
11
  override.workspace.settings=true
@@ -158,4 +158,13 @@ RCT_EXTERN_METHOD(getWorkoutRoutes:(NSString)workoutUUID
158
158
  reject:(RCTPromiseRejectBlock)reject
159
159
  )
160
160
 
161
+ RCT_EXTERN_METHOD(getWorkoutRoutes:(NSString)workoutUUID
162
+ resolve:(RCTPromiseResolveBlock)resolve
163
+ reject:(RCTPromiseRejectBlock)reject
164
+ )
165
+
166
+ RCT_EXTERN_METHOD(canAccessProtectedData:(RCTPromiseResolveBlock)resolve
167
+ withRejecter:(RCTPromiseRejectBlock)reject)
168
+
169
+
161
170
  @end
@@ -59,6 +59,13 @@ class ReactNativeHealthkit: RCTEventEmitter {
59
59
  self._hasListeners = true
60
60
  }
61
61
 
62
+
63
+ @objc(canAccessProtectedData:withRejecter:)
64
+ func canAccessProtectedData(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
65
+ resolve(UIApplication.shared.isProtectedDataAvailable);
66
+ }
67
+
68
+
62
69
  func objectTypeFromString(typeIdentifier: String) -> HKObjectType? {
63
70
  if(typeIdentifier.starts(with: HKCharacteristicTypeIdentifier_PREFIX)){
64
71
  let identifier = HKCharacteristicTypeIdentifier.init(rawValue: typeIdentifier);
@@ -236,7 +243,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
236
243
 
237
244
  return [
238
245
  "uuid": sample.uuid.uuidString,
239
- "device": self.serializeDevice(_device: sample.device),
246
+ "device": self.serializeDevice(_device: sample.device) as Any,
240
247
  "quantityType": sample.quantityType.identifier,
241
248
  "endDate": endDate,
242
249
  "startDate": startDate,
@@ -253,7 +260,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
253
260
 
254
261
  return [
255
262
  "uuid": sample.uuid.uuidString,
256
- "device": self.serializeDevice(_device: sample.device),
263
+ "device": self.serializeDevice(_device: sample.device) as Any,
257
264
  "categoryType": sample.categoryType.identifier,
258
265
  "endDate": endDate,
259
266
  "startDate": startDate,
@@ -386,7 +393,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
386
393
  }
387
394
 
388
395
  let identifier = HKQuantityTypeIdentifier.init(rawValue: typeIdentifier);
389
- let sampleUuid = UUID.init(uuidString: uuid) as! UUID;
396
+ let sampleUuid = UUID.init(uuidString: uuid)!;
390
397
 
391
398
  guard let sampleType = HKObjectType.quantityType(forIdentifier: identifier) else {
392
399
  return reject(TYPE_IDENTIFIER_ERROR, typeIdentifier, nil);
@@ -868,7 +875,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
868
875
  "name": sourceRevision.source.name,
869
876
  "bundleIdentifier": sourceRevision.source.bundleIdentifier
870
877
  ],
871
- "version": sourceRevision.version
878
+ "version": sourceRevision.version as Any
872
879
  ] as [String : Any];
873
880
 
874
881
  if #available(iOS 11, *) {
@@ -1215,14 +1222,22 @@ class ReactNativeHealthkit: RCTEventEmitter {
1215
1222
  }
1216
1223
  for route in _routes {
1217
1224
  let routeMetadata = self.serializeMetadata(metadata: route.metadata) as! Dictionary<String, Any>
1218
- let routeLocations = (await getRouteLocations(store: store, route: route)).map{serializeLocation(location: $0)}
1225
+ let routeCLLocations = (await getRouteLocations(store: store, route: route))
1226
+ let routeLocations = routeCLLocations.enumerated().map{(i, loc) in serializeLocation(location: loc, previousLocation: i == 0 ? nil: routeCLLocations[i - 1])}
1219
1227
  let routeInfos: Dictionary<String, Any> = ["locations": routeLocations]
1220
1228
  allRoutes.append(routeInfos.merging(routeMetadata) { (current, _) in current })
1221
1229
  }
1222
1230
  return allRoutes
1223
1231
  }
1224
1232
 
1225
- func serializeLocation(location: CLLocation) -> Dictionary<String, Any> {
1233
+ func serializeLocation(location: CLLocation, previousLocation: CLLocation?) -> Dictionary<String, Any> {
1234
+ var distance: CLLocationDistance?
1235
+ if let previousLocation = previousLocation {
1236
+ distance = location.distance(from: previousLocation)
1237
+ }
1238
+ else {
1239
+ distance = nil
1240
+ }
1226
1241
  return [
1227
1242
  "longitude": location.coordinate.longitude,
1228
1243
  "latitude": location.coordinate.latitude,
@@ -1232,6 +1247,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
1232
1247
  "horizontalAccuracy": location.horizontalAccuracy,
1233
1248
  "speedAccuracy": location.speedAccuracy,
1234
1249
  "verticalAccuracy": location.verticalAccuracy,
1250
+ "distance": distance as Any
1235
1251
  ]
1236
1252
  }
1237
1253
 
@@ -1250,7 +1266,7 @@ class ReactNativeHealthkit: RCTEventEmitter {
1250
1266
  return reject("INVALID_UUID_ERROR", "Invalid UUID received", nil)
1251
1267
  }
1252
1268
 
1253
- async {
1269
+ Task {
1254
1270
  do {
1255
1271
  let locations = await getSerializedWorkoutLocations(store: store, workoutUUID: _workoutUUID)
1256
1272
  resolve(locations)
@@ -1 +1 @@
1
- {"version":3,"names":["useHealthkitAuthorization","read","write","status","setStatus","useState","readMemo","useRef","writeMemo","useEffect","current","refreshAuthStatus","useCallback","auth","getRequestStatusForAuthorization","request","requestAuthorization"],"sources":["useHealthkitAuthorization.ts"],"sourcesContent":["import {\n useCallback, useEffect, useRef, useState,\n} from 'react'\n\nimport getRequestStatusForAuthorization from '../utils/getRequestStatusForAuthorization'\nimport requestAuthorization from '../utils/requestAuthorization'\n\nimport type { HealthkitReadAuthorization, HealthkitWriteAuthorization, HKAuthorizationRequestStatus } from '../native-types'\n\nconst useHealthkitAuthorization = (read: readonly HealthkitReadAuthorization[], write?: readonly HealthkitWriteAuthorization[]) => {\n const [status, setStatus] = useState<HKAuthorizationRequestStatus | null>(null)\n\n const readMemo = useRef(read)\n const writeMemo = useRef(write)\n\n useEffect(() => {\n readMemo.current = read\n writeMemo.current = write\n }, [read, write])\n\n const refreshAuthStatus = useCallback(async () => {\n const auth = await getRequestStatusForAuthorization(readMemo.current, writeMemo.current)\n setStatus(auth)\n return auth\n }, [])\n\n const request = useCallback(async () => {\n await requestAuthorization(readMemo.current, writeMemo.current)\n return refreshAuthStatus()\n }, [refreshAuthStatus])\n\n useEffect(() => {\n void refreshAuthStatus()\n }, [refreshAuthStatus])\n\n return [status, request] as const\n}\n\nexport default useHealthkitAuthorization\n"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;;;AAIA,MAAMA,yBAAyB,GAAG,CAACC,IAAD,EAA8CC,KAA9C,KAAiG;EACjI,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,IAAAC,eAAA,EAA8C,IAA9C,CAA5B;EAEA,MAAMC,QAAQ,GAAG,IAAAC,aAAA,EAAON,IAAP,CAAjB;EACA,MAAMO,SAAS,GAAG,IAAAD,aAAA,EAAOL,KAAP,CAAlB;EAEA,IAAAO,gBAAA,EAAU,MAAM;IACdH,QAAQ,CAACI,OAAT,GAAmBT,IAAnB;IACAO,SAAS,CAACE,OAAV,GAAoBR,KAApB;EACD,CAHD,EAGG,CAACD,IAAD,EAAOC,KAAP,CAHH;EAKA,MAAMS,iBAAiB,GAAG,IAAAC,kBAAA,EAAY,YAAY;IAChD,MAAMC,IAAI,GAAG,MAAM,IAAAC,yCAAA,EAAiCR,QAAQ,CAACI,OAA1C,EAAmDF,SAAS,CAACE,OAA7D,CAAnB;IACAN,SAAS,CAACS,IAAD,CAAT;IACA,OAAOA,IAAP;EACD,CAJyB,EAIvB,EAJuB,CAA1B;EAMA,MAAME,OAAO,GAAG,IAAAH,kBAAA,EAAY,YAAY;IACtC,MAAM,IAAAI,6BAAA,EAAqBV,QAAQ,CAACI,OAA9B,EAAuCF,SAAS,CAACE,OAAjD,CAAN;IACA,OAAOC,iBAAiB,EAAxB;EACD,CAHe,EAGb,CAACA,iBAAD,CAHa,CAAhB;EAKA,IAAAF,gBAAA,EAAU,MAAM;IACd,KAAKE,iBAAiB,EAAtB;EACD,CAFD,EAEG,CAACA,iBAAD,CAFH;EAIA,OAAO,CAACR,MAAD,EAASY,OAAT,CAAP;AACD,CA3BD;;eA6Bef,yB"}
1
+ {"version":3,"names":["useHealthkitAuthorization","read","write","status","setStatus","useState","readMemo","useRef","writeMemo","useEffect","current","refreshAuthStatus","useCallback","auth","getRequestStatusForAuthorization","request","requestAuthorization"],"sources":["useHealthkitAuthorization.ts"],"sourcesContent":["import {\n useCallback, useEffect, useRef, useState,\n} from 'react'\n\nimport getRequestStatusForAuthorization from '../utils/getRequestStatusForAuthorization'\nimport requestAuthorization from '../utils/requestAuthorization'\n\nimport type { HealthkitReadAuthorization, HealthkitWriteAuthorization, HKAuthorizationRequestStatus } from '../native-types'\n\nconst useHealthkitAuthorization = (read: readonly HealthkitReadAuthorization[], write?: readonly HealthkitWriteAuthorization[]) => {\n const [status, setStatus] = useState<HKAuthorizationRequestStatus | null>(null)\n\n const readMemo = useRef(read)\n const writeMemo = useRef(write)\n\n useEffect(() => {\n readMemo.current = read\n writeMemo.current = write\n }, [read, write])\n\n const refreshAuthStatus = useCallback(async () => {\n const auth = await getRequestStatusForAuthorization(readMemo.current, writeMemo.current)\n\n setStatus(auth)\n return auth\n }, [])\n\n const request = useCallback(async () => {\n await requestAuthorization(readMemo.current, writeMemo.current)\n return refreshAuthStatus()\n }, [refreshAuthStatus])\n\n useEffect(() => {\n void refreshAuthStatus()\n }, [refreshAuthStatus])\n\n return [status, request] as const\n}\n\nexport default useHealthkitAuthorization\n"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;;;AAIA,MAAMA,yBAAyB,GAAG,CAACC,IAAD,EAA8CC,KAA9C,KAAiG;EACjI,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,IAAAC,eAAA,EAA8C,IAA9C,CAA5B;EAEA,MAAMC,QAAQ,GAAG,IAAAC,aAAA,EAAON,IAAP,CAAjB;EACA,MAAMO,SAAS,GAAG,IAAAD,aAAA,EAAOL,KAAP,CAAlB;EAEA,IAAAO,gBAAA,EAAU,MAAM;IACdH,QAAQ,CAACI,OAAT,GAAmBT,IAAnB;IACAO,SAAS,CAACE,OAAV,GAAoBR,KAApB;EACD,CAHD,EAGG,CAACD,IAAD,EAAOC,KAAP,CAHH;EAKA,MAAMS,iBAAiB,GAAG,IAAAC,kBAAA,EAAY,YAAY;IAChD,MAAMC,IAAI,GAAG,MAAM,IAAAC,yCAAA,EAAiCR,QAAQ,CAACI,OAA1C,EAAmDF,SAAS,CAACE,OAA7D,CAAnB;IAEAN,SAAS,CAACS,IAAD,CAAT;IACA,OAAOA,IAAP;EACD,CALyB,EAKvB,EALuB,CAA1B;EAOA,MAAME,OAAO,GAAG,IAAAH,kBAAA,EAAY,YAAY;IACtC,MAAM,IAAAI,6BAAA,EAAqBV,QAAQ,CAACI,OAA9B,EAAuCF,SAAS,CAACE,OAAjD,CAAN;IACA,OAAOC,iBAAiB,EAAxB;EACD,CAHe,EAGb,CAACA,iBAAD,CAHa,CAAhB;EAKA,IAAAF,gBAAA,EAAU,MAAM;IACd,KAAKE,iBAAiB,EAAtB;EACD,CAFD,EAEG,CAACA,iBAAD,CAFH;EAIA,OAAO,CAACR,MAAD,EAASY,OAAT,CAAP;AACD,CA5BD;;eA8Bef,yB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _reactNative = require("@testing-library/react-native");
4
+
5
+ var _nativeTypes = _interopRequireWildcard(require("../native-types"));
6
+
7
+ var _testUtils = _interopRequireDefault(require("../test-utils"));
8
+
9
+ var _useHealthkitAuthorization = _interopRequireDefault(require("./useHealthkitAuthorization"));
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+
17
+ describe('useHealthkitAuthorization', () => {
18
+ test('should return shouldRequest', async () => {
19
+ jest.spyOn(_nativeTypes.default, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(_nativeTypes.HKAuthorizationRequestStatus.shouldRequest));
20
+ const {
21
+ result
22
+ } = (0, _reactNative.renderHook)(() => (0, _useHealthkitAuthorization.default)([_nativeTypes.HKCategoryTypeIdentifier.abdominalCramps]));
23
+ await (0, _testUtils.default)();
24
+ expect(result.current[0]).toBe(_nativeTypes.HKAuthorizationRequestStatus.shouldRequest);
25
+ });
26
+ test('should request permissions', async () => {
27
+ const spy = jest.spyOn(_nativeTypes.default, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(_nativeTypes.HKAuthorizationRequestStatus.shouldRequest));
28
+ jest.spyOn(_nativeTypes.default, 'requestAuthorization').mockReturnValue(Promise.resolve(true));
29
+ const {
30
+ result
31
+ } = (0, _reactNative.renderHook)(() => (0, _useHealthkitAuthorization.default)([_nativeTypes.HKCategoryTypeIdentifier.abdominalCramps]));
32
+ await (0, _testUtils.default)();
33
+ spy.mockReturnValue(Promise.resolve(_nativeTypes.HKAuthorizationRequestStatus.unnecessary));
34
+ let retVal;
35
+ await (0, _reactNative.act)(async () => {
36
+ retVal = await result.current[1]();
37
+ });
38
+ expect(result.current[0]).toBe(_nativeTypes.HKAuthorizationRequestStatus.unnecessary);
39
+ expect(retVal).toBe(_nativeTypes.HKAuthorizationRequestStatus.unnecessary);
40
+ });
41
+ test('should return unnecessary', async () => {
42
+ jest.spyOn(_nativeTypes.default, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(_nativeTypes.HKAuthorizationRequestStatus.unnecessary));
43
+ const {
44
+ result
45
+ } = (0, _reactNative.renderHook)(() => (0, _useHealthkitAuthorization.default)([_nativeTypes.HKCategoryTypeIdentifier.abdominalCramps]));
46
+ await (0, _testUtils.default)();
47
+ expect(result.current[0]).toBe(_nativeTypes.HKAuthorizationRequestStatus.unnecessary);
48
+ });
49
+ test('should return null before initalizing', async () => {
50
+ const {
51
+ result
52
+ } = (0, _reactNative.renderHook)(() => (0, _useHealthkitAuthorization.default)([_nativeTypes.HKCategoryTypeIdentifier.abdominalCramps]));
53
+ expect(result.current[0]).toBe(null);
54
+ await (0, _testUtils.default)();
55
+ });
56
+ });
57
+ //# sourceMappingURL=useHealthkitAuthorization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","test","jest","spyOn","Native","mockReturnValue","Promise","resolve","HKAuthorizationRequestStatus","shouldRequest","result","renderHook","useHealthkitAuthorization","HKCategoryTypeIdentifier","abdominalCramps","waitForNextUpdate","expect","current","toBe","spy","unnecessary","retVal","act"],"sources":["useHealthkitAuthorization.test.ts"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-native'\n\nimport Native, { HKAuthorizationRequestStatus, HKCategoryTypeIdentifier } from '../native-types'\nimport waitForNextUpdate from '../test-utils'\nimport useHealthkitAuthorization from './useHealthkitAuthorization'\n\ndescribe('useHealthkitAuthorization', () => {\n test('should return shouldRequest', async () => {\n jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.shouldRequest)\n })\n\n test('should request permissions', async () => {\n const spy = jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest))\n jest.spyOn(Native, 'requestAuthorization').mockReturnValue(Promise.resolve(true))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n spy.mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary))\n\n let retVal: HKAuthorizationRequestStatus | undefined\n await act(async () => {\n retVal = await result.current[1]()\n })\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary)\n expect(retVal).toBe(HKAuthorizationRequestStatus.unnecessary)\n })\n\n test('should return unnecessary', async () => {\n jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary)\n })\n\n test('should return null before initalizing', async () => {\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n expect(result.current[0]).toBe(null)\n\n await waitForNextUpdate()\n })\n})\n"],"mappings":";;AAAA;;AAEA;;AACA;;AACA;;;;;;;;AAEAA,QAAQ,CAAC,2BAAD,EAA8B,MAAM;EAC1CC,IAAI,CAAC,6BAAD,EAAgC,YAAY;IAC9CC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,kCAAnB,EAAuDC,eAAvD,CAAuEC,OAAO,CAACC,OAAR,CAAgBC,yCAAA,CAA6BC,aAA7C,CAAvE;IAEA,MAAM;MAAEC;IAAF,IAAa,IAAAC,uBAAA,EAAW,MAAM,IAAAC,kCAAA,EAA0B,CAACC,qCAAA,CAAyBC,eAA1B,CAA1B,CAAjB,CAAnB;IAEA,MAAM,IAAAC,kBAAA,GAAN;IAEAC,MAAM,CAACN,MAAM,CAACO,OAAP,CAAe,CAAf,CAAD,CAAN,CAA0BC,IAA1B,CAA+BV,yCAAA,CAA6BC,aAA5D;EACD,CARG,CAAJ;EAUAR,IAAI,CAAC,4BAAD,EAA+B,YAAY;IAC7C,MAAMkB,GAAG,GAAGjB,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,kCAAnB,EAAuDC,eAAvD,CAAuEC,OAAO,CAACC,OAAR,CAAgBC,yCAAA,CAA6BC,aAA7C,CAAvE,CAAZ;IACAP,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,sBAAnB,EAA2CC,eAA3C,CAA2DC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAA3D;IAEA,MAAM;MAAEG;IAAF,IAAa,IAAAC,uBAAA,EAAW,MAAM,IAAAC,kCAAA,EAA0B,CAACC,qCAAA,CAAyBC,eAA1B,CAA1B,CAAjB,CAAnB;IAEA,MAAM,IAAAC,kBAAA,GAAN;IAEAI,GAAG,CAACd,eAAJ,CAAoBC,OAAO,CAACC,OAAR,CAAgBC,yCAAA,CAA6BY,WAA7C,CAApB;IAEA,IAAIC,MAAJ;IACA,MAAM,IAAAC,gBAAA,EAAI,YAAY;MACpBD,MAAM,GAAG,MAAMX,MAAM,CAACO,OAAP,CAAe,CAAf,GAAf;IACD,CAFK,CAAN;IAIAD,MAAM,CAACN,MAAM,CAACO,OAAP,CAAe,CAAf,CAAD,CAAN,CAA0BC,IAA1B,CAA+BV,yCAAA,CAA6BY,WAA5D;IACAJ,MAAM,CAACK,MAAD,CAAN,CAAeH,IAAf,CAAoBV,yCAAA,CAA6BY,WAAjD;EACD,CAjBG,CAAJ;EAmBAnB,IAAI,CAAC,2BAAD,EAA8B,YAAY;IAC5CC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,kCAAnB,EAAuDC,eAAvD,CAAuEC,OAAO,CAACC,OAAR,CAAgBC,yCAAA,CAA6BY,WAA7C,CAAvE;IAEA,MAAM;MAAEV;IAAF,IAAa,IAAAC,uBAAA,EAAW,MAAM,IAAAC,kCAAA,EAA0B,CAACC,qCAAA,CAAyBC,eAA1B,CAA1B,CAAjB,CAAnB;IAEA,MAAM,IAAAC,kBAAA,GAAN;IAEAC,MAAM,CAACN,MAAM,CAACO,OAAP,CAAe,CAAf,CAAD,CAAN,CAA0BC,IAA1B,CAA+BV,yCAAA,CAA6BY,WAA5D;EACD,CARG,CAAJ;EAUAnB,IAAI,CAAC,uCAAD,EAA0C,YAAY;IACxD,MAAM;MAAES;IAAF,IAAa,IAAAC,uBAAA,EAAW,MAAM,IAAAC,kCAAA,EAA0B,CAACC,qCAAA,CAAyBC,eAA1B,CAA1B,CAAjB,CAAnB;IAEAE,MAAM,CAACN,MAAM,CAACO,OAAP,CAAe,CAAf,CAAD,CAAN,CAA0BC,IAA1B,CAA+B,IAA/B;IAEA,MAAM,IAAAH,kBAAA,GAAN;EACD,CANG,CAAJ;AAOD,CA/CO,CAAR"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _reactHooks = require("@testing-library/react-hooks");
3
+ var _reactNative = require("@testing-library/react-native");
4
4
 
5
5
  var _nativeTypes = _interopRequireDefault(require("../native-types"));
6
6
 
7
+ var _testUtils = _interopRequireDefault(require("../test-utils"));
8
+
7
9
  var _useIsHealthDataAvailable = _interopRequireDefault(require("./useIsHealthDataAvailable"));
8
10
 
9
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -12,34 +14,25 @@ describe('useIsHealthDataAvailable', () => {
12
14
  test('should return false', async () => {
13
15
  jest.spyOn(_nativeTypes.default, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false));
14
16
  const {
15
- result,
16
- waitForNextUpdate,
17
- unmount
18
- } = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
19
- await (0, _reactHooks.act)(async () => {
20
- await waitForNextUpdate();
21
- });
17
+ result
18
+ } = (0, _reactNative.renderHook)(_useIsHealthDataAvailable.default);
19
+ await (0, _testUtils.default)();
22
20
  expect(result.current).toBe(false);
23
- unmount();
24
21
  });
25
22
  test('should return true', async () => {
26
23
  jest.spyOn(_nativeTypes.default, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true));
27
24
  const {
28
- result,
29
- waitForNextUpdate,
30
- unmount
31
- } = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
32
- await (0, _reactHooks.act)(async () => {
33
- await waitForNextUpdate();
34
- });
25
+ result
26
+ } = (0, _reactNative.renderHook)(_useIsHealthDataAvailable.default);
27
+ await (0, _testUtils.default)();
35
28
  expect(result.current).toBe(true);
36
- unmount();
37
29
  });
38
- test('should return null before initalizing', () => {
30
+ test('should return null before initalizing', async () => {
39
31
  const {
40
32
  result
41
- } = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
33
+ } = (0, _reactNative.renderHook)(_useIsHealthDataAvailable.default);
42
34
  expect(result.current).toBe(null);
35
+ await (0, _testUtils.default)();
43
36
  });
44
37
  });
45
38
  //# sourceMappingURL=useIsHealthDataAvailable.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["describe","test","jest","spyOn","Native","mockReturnValue","Promise","resolve","result","waitForNextUpdate","unmount","renderHook","useIsHealthDataAvailable","act","expect","current","toBe"],"sources":["useIsHealthDataAvailable.test.ts"],"sourcesContent":["import { act, renderHook } from '@testing-library/react-hooks'\n\nimport Native from '../native-types'\nimport useIsHealthDataAvailable from './useIsHealthDataAvailable'\n\ndescribe('useIsHealthDataAvailable', () => {\n test('should return false', async () => {\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false))\n\n const { result, waitForNextUpdate, unmount } = renderHook(useIsHealthDataAvailable)\n\n await act(async () => {\n await waitForNextUpdate()\n })\n\n expect(result.current).toBe(false)\n\n unmount()\n })\n\n test('should return true', async () => {\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true))\n\n const { result, waitForNextUpdate, unmount } = renderHook(useIsHealthDataAvailable)\n\n await act(async () => {\n await waitForNextUpdate()\n })\n\n expect(result.current).toBe(true)\n\n unmount()\n })\n\n test('should return null before initalizing', () => {\n const { result } = renderHook(useIsHealthDataAvailable)\n\n expect(result.current).toBe(null)\n })\n})\n"],"mappings":";;AAAA;;AAEA;;AACA;;;;AAEAA,QAAQ,CAAC,0BAAD,EAA6B,MAAM;EACzCC,IAAI,CAAC,qBAAD,EAAwB,YAAY;IACtCC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,uBAAnB,EAA4CC,eAA5C,CAA4DC,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAA5D;IAEA,MAAM;MAAEC,MAAF;MAAUC,iBAAV;MAA6BC;IAA7B,IAAyC,IAAAC,sBAAA,EAAWC,iCAAX,CAA/C;IAEA,MAAM,IAAAC,eAAA,EAAI,YAAY;MACpB,MAAMJ,iBAAiB,EAAvB;IACD,CAFK,CAAN;IAIAK,MAAM,CAACN,MAAM,CAACO,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,KAA5B;IAEAN,OAAO;EACR,CAZG,CAAJ;EAcAT,IAAI,CAAC,oBAAD,EAAuB,YAAY;IACrCC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,uBAAnB,EAA4CC,eAA5C,CAA4DC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAA5D;IAEA,MAAM;MAAEC,MAAF;MAAUC,iBAAV;MAA6BC;IAA7B,IAAyC,IAAAC,sBAAA,EAAWC,iCAAX,CAA/C;IAEA,MAAM,IAAAC,eAAA,EAAI,YAAY;MACpB,MAAMJ,iBAAiB,EAAvB;IACD,CAFK,CAAN;IAIAK,MAAM,CAACN,MAAM,CAACO,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,IAA5B;IAEAN,OAAO;EACR,CAZG,CAAJ;EAcAT,IAAI,CAAC,uCAAD,EAA0C,MAAM;IAClD,MAAM;MAAEO;IAAF,IAAa,IAAAG,sBAAA,EAAWC,iCAAX,CAAnB;IAEAE,MAAM,CAACN,MAAM,CAACO,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,IAA5B;EACD,CAJG,CAAJ;AAKD,CAlCO,CAAR"}
1
+ {"version":3,"names":["describe","test","jest","spyOn","Native","mockReturnValue","Promise","resolve","result","renderHook","useIsHealthDataAvailable","waitForNextUpdate","expect","current","toBe"],"sources":["useIsHealthDataAvailable.test.ts"],"sourcesContent":["import { renderHook } from '@testing-library/react-native'\n\nimport Native from '../native-types'\nimport waitForNextUpdate from '../test-utils'\nimport useIsHealthDataAvailable from './useIsHealthDataAvailable'\n\ndescribe('useIsHealthDataAvailable', () => {\n test('should return false', async () => {\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false))\n\n const { result } = renderHook(useIsHealthDataAvailable)\n\n await waitForNextUpdate()\n\n expect(result.current).toBe(false)\n })\n\n test('should return true', async () => {\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true))\n\n const { result } = renderHook(useIsHealthDataAvailable)\n\n await waitForNextUpdate()\n\n expect(result.current).toBe(true)\n })\n\n test('should return null before initalizing', async () => {\n const { result } = renderHook(useIsHealthDataAvailable)\n\n expect(result.current).toBe(null)\n\n await waitForNextUpdate()\n })\n})\n"],"mappings":";;AAAA;;AAEA;;AACA;;AACA;;;;AAEAA,QAAQ,CAAC,0BAAD,EAA6B,MAAM;EACzCC,IAAI,CAAC,qBAAD,EAAwB,YAAY;IACtCC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,uBAAnB,EAA4CC,eAA5C,CAA4DC,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAA5D;IAEA,MAAM;MAAEC;IAAF,IAAa,IAAAC,uBAAA,EAAWC,iCAAX,CAAnB;IAEA,MAAM,IAAAC,kBAAA,GAAN;IAEAC,MAAM,CAACJ,MAAM,CAACK,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,KAA5B;EACD,CARG,CAAJ;EAUAb,IAAI,CAAC,oBAAD,EAAuB,YAAY;IACrCC,IAAI,CAACC,KAAL,CAAWC,oBAAX,EAAmB,uBAAnB,EAA4CC,eAA5C,CAA4DC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAA5D;IAEA,MAAM;MAAEC;IAAF,IAAa,IAAAC,uBAAA,EAAWC,iCAAX,CAAnB;IAEA,MAAM,IAAAC,kBAAA,GAAN;IAEAC,MAAM,CAACJ,MAAM,CAACK,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,IAA5B;EACD,CARG,CAAJ;EAUAb,IAAI,CAAC,uCAAD,EAA0C,YAAY;IACxD,MAAM;MAAEO;IAAF,IAAa,IAAAC,uBAAA,EAAWC,iCAAX,CAAnB;IAEAE,MAAM,CAACJ,MAAM,CAACK,OAAR,CAAN,CAAuBC,IAAvB,CAA4B,IAA5B;IAEA,MAAM,IAAAH,kBAAA,GAAN;EACD,CANG,CAAJ;AAOD,CA5BO,CAAR"}
@@ -77,6 +77,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
77
77
  const Healthkit = {
78
78
  authorizationStatusFor: _nativeTypes.default.authorizationStatusFor.bind(_nativeTypes.default),
79
79
  isHealthDataAvailable: _nativeTypes.default.isHealthDataAvailable.bind(_nativeTypes.default),
80
+ canAccessProtectedData: _nativeTypes.default.canAccessProtectedData.bind(_nativeTypes.default),
80
81
  disableAllBackgroundDelivery: _nativeTypes.default.disableAllBackgroundDelivery.bind(_nativeTypes.default),
81
82
  disableBackgroundDelivery: _nativeTypes.default.disableBackgroundDelivery.bind(_nativeTypes.default),
82
83
  enableBackgroundDelivery: _nativeTypes.default.enableBackgroundDelivery.bind(_nativeTypes.default),
@@ -1 +1 @@
1
- {"version":3,"names":["Healthkit","authorizationStatusFor","Native","bind","isHealthDataAvailable","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","getWorkoutRoutes","getDateOfBirth","getMostRecentQuantitySample","getMostRecentCategorySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","queryWorkouts","requestAuthorization","deleteQuantitySample","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useIsHealthDataAvailable","useHealthkitAuthorization"],"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 deleteQuantitySample from './utils/deleteQuantitySample'\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 // delete methods\n deleteQuantitySample,\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;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AA8DA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;AA5DA,MAAMA,SAAS,GAAG;EAChBC,sBAAsB,EAAEC,oBAAA,CAAOD,sBAAP,CAA8BE,IAA9B,CAAmCD,oBAAnC,CADR;EAGhBE,qBAAqB,EAAEF,oBAAA,CAAOE,qBAAP,CAA6BD,IAA7B,CAAkCD,oBAAlC,CAHP;EAKhBG,4BAA4B,EAAEH,oBAAA,CAAOG,4BAAP,CAAoCF,IAApC,CAAyCD,oBAAzC,CALd;EAMhBI,yBAAyB,EAAEJ,oBAAA,CAAOI,yBAAP,CAAiCH,IAAjC,CAAsCD,oBAAtC,CANX;EAOhBK,wBAAwB,EAAEL,oBAAA,CAAOK,wBAAP,CAAgCJ,IAAhC,CAAqCD,oBAArC,CAPV;EAShB;EACAM,gBAAgB,EAAEN,oBAAA,CAAOM,gBAAP,CAAwBL,IAAxB,CAA6BD,oBAA7B,CAVF;EAWhBO,sBAAsB,EAAEP,oBAAA,CAAOO,sBAAP,CAA8BN,IAA9B,CAAmCD,oBAAnC,CAXR;EAYhBQ,gBAAgB,EAAER,oBAAA,CAAOQ,gBAAP,CAAwBP,IAAxB,CAA6BD,oBAA7B,CAZF;EAahBS,YAAY,EAAET,oBAAA,CAAOS,YAAP,CAAoBR,IAApB,CAAyBD,oBAAzB,CAbE;EAehBU,gBAAgB,EAAEV,oBAAA,CAAOU,gBAAP,CAAwBT,IAAxB,CAA6BD,oBAA7B,CAfF;EAiBhBW,cAAc,EAAdA,uBAjBgB;EAmBhBC,2BAA2B,EAA3BA,oCAnBgB;EAoBhBC,2BAA2B,EAA3BA,oCApBgB;EAqBhBC,oBAAoB,EAApBA,6BArBgB;EAuBhBC,gBAAgB,EAAhBA,yBAvBgB;EAwBhBC,iBAAiB,EAAjBA,0BAxBgB;EAyBhBC,gCAAgC,EAAhCA,yCAzBgB;EA2BhB;EACAC,oBAAoB,EAApBA,6BA5BgB;EA6BhBC,uBAAuB,EAAvBA,gCA7BgB;EA8BhBC,oBAAoB,EAApBA,6BA9BgB;EA+BhBC,0BAA0B,EAA1BA,mCA/BgB;EAgChBC,aAAa,EAAbA,sBAhCgB;EAkChBC,oBAAoB,EAApBA,6BAlCgB;EAoChB;EACAC,oBAAoB,EAApBA,6BArCgB;EAuChB;EACAC,kBAAkB,EAAlBA,2BAxCgB;EAyChBC,qBAAqB,EAArBA,8BAzCgB;EA0ChBC,kBAAkB,EAAlBA,2BA1CgB;EA2ChBC,iBAAiB,EAAjBA,0BA3CgB;EA6ChB;EACAC,kBAAkB,EAAlBA,2BA9CgB;EAgDhB;EACAC,2BAA2B,EAA3BA,oCAjDgB;EAmDhBC,2BAA2B,EAA3BA,oCAnDgB;EAoDhBC,oBAAoB,EAApBA,6BApDgB;EAsDhBC,qBAAqB,EAArBA,8BAtDgB;EAwDhBC,wBAAwB,EAAxBA,iCAxDgB;EAyDhBC,yBAAyB,EAAzBA;AAzDgB,CAAlB;eA8DerC,S"}
1
+ {"version":3,"names":["Healthkit","authorizationStatusFor","Native","bind","isHealthDataAvailable","canAccessProtectedData","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","getWorkoutRoutes","getDateOfBirth","getMostRecentQuantitySample","getMostRecentCategorySample","getMostRecentWorkout","getPreferredUnit","getPreferredUnits","getRequestStatusForAuthorization","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","queryWorkouts","requestAuthorization","deleteQuantitySample","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useIsHealthDataAvailable","useHealthkitAuthorization"],"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 deleteQuantitySample from './utils/deleteQuantitySample'\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 canAccessProtectedData: Native.canAccessProtectedData.bind(Native),\n\n disableAllBackgroundDelivery:\n 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 // delete methods\n deleteQuantitySample,\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;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAgEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;AA9DA,MAAMA,SAAS,GAAG;EAChBC,sBAAsB,EAAEC,oBAAA,CAAOD,sBAAP,CAA8BE,IAA9B,CAAmCD,oBAAnC,CADR;EAGhBE,qBAAqB,EAAEF,oBAAA,CAAOE,qBAAP,CAA6BD,IAA7B,CAAkCD,oBAAlC,CAHP;EAIhBG,sBAAsB,EAAEH,oBAAA,CAAOG,sBAAP,CAA8BF,IAA9B,CAAmCD,oBAAnC,CAJR;EAMhBI,4BAA4B,EAC1BJ,oBAAA,CAAOI,4BAAP,CAAoCH,IAApC,CAAyCD,oBAAzC,CAPc;EAQhBK,yBAAyB,EAAEL,oBAAA,CAAOK,yBAAP,CAAiCJ,IAAjC,CAAsCD,oBAAtC,CARX;EAShBM,wBAAwB,EAAEN,oBAAA,CAAOM,wBAAP,CAAgCL,IAAhC,CAAqCD,oBAArC,CATV;EAWhB;EACAO,gBAAgB,EAAEP,oBAAA,CAAOO,gBAAP,CAAwBN,IAAxB,CAA6BD,oBAA7B,CAZF;EAahBQ,sBAAsB,EAAER,oBAAA,CAAOQ,sBAAP,CAA8BP,IAA9B,CAAmCD,oBAAnC,CAbR;EAchBS,gBAAgB,EAAET,oBAAA,CAAOS,gBAAP,CAAwBR,IAAxB,CAA6BD,oBAA7B,CAdF;EAehBU,YAAY,EAAEV,oBAAA,CAAOU,YAAP,CAAoBT,IAApB,CAAyBD,oBAAzB,CAfE;EAiBhBW,gBAAgB,EAAEX,oBAAA,CAAOW,gBAAP,CAAwBV,IAAxB,CAA6BD,oBAA7B,CAjBF;EAmBhBY,cAAc,EAAdA,uBAnBgB;EAqBhBC,2BAA2B,EAA3BA,oCArBgB;EAsBhBC,2BAA2B,EAA3BA,oCAtBgB;EAuBhBC,oBAAoB,EAApBA,6BAvBgB;EAyBhBC,gBAAgB,EAAhBA,yBAzBgB;EA0BhBC,iBAAiB,EAAjBA,0BA1BgB;EA2BhBC,gCAAgC,EAAhCA,yCA3BgB;EA6BhB;EACAC,oBAAoB,EAApBA,6BA9BgB;EA+BhBC,uBAAuB,EAAvBA,gCA/BgB;EAgChBC,oBAAoB,EAApBA,6BAhCgB;EAiChBC,0BAA0B,EAA1BA,mCAjCgB;EAkChBC,aAAa,EAAbA,sBAlCgB;EAoChBC,oBAAoB,EAApBA,6BApCgB;EAsChB;EACAC,oBAAoB,EAApBA,6BAvCgB;EAyChB;EACAC,kBAAkB,EAAlBA,2BA1CgB;EA2ChBC,qBAAqB,EAArBA,8BA3CgB;EA4ChBC,kBAAkB,EAAlBA,2BA5CgB;EA6ChBC,iBAAiB,EAAjBA,0BA7CgB;EA+ChB;EACAC,kBAAkB,EAAlBA,2BAhDgB;EAkDhB;EACAC,2BAA2B,EAA3BA,oCAnDgB;EAqDhBC,2BAA2B,EAA3BA,oCArDgB;EAsDhBC,oBAAoB,EAApBA,6BAtDgB;EAwDhBC,qBAAqB,EAArBA,8BAxDgB;EA0DhBC,wBAAwB,EAAxBA,iCA1DgB;EA2DhBC,yBAAyB,EAAzBA;AA3DgB,CAAlB;eAgEetC,S"}
@@ -29,6 +29,7 @@ let hasWarned = false;
29
29
  function UnavailableFn(retVal) {
30
30
  return () => {
31
31
  if (!hasWarned) {
32
+ // eslint-disable-next-line no-console
32
33
  console.warn(notAvailableError);
33
34
  hasWarned = true;
34
35
  }
@@ -80,7 +81,8 @@ const Healthkit = {
80
81
  useMostRecentWorkout: UnavailableFn(null),
81
82
  useSubscribeToChanges: UnavailableFn([null, () => null]),
82
83
  useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(_nativeTypes.HKAuthorizationRequestStatus.unknown)]),
83
- useIsHealthDataAvailable: () => false
84
+ useIsHealthDataAvailable: () => false,
85
+ canAccessProtectedData: async () => Promise.resolve(false)
84
86
  };
85
87
  var _default = Healthkit;
86
88
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["notAvailableError","Platform","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","HKBiologicalSex","notSet","getBloodType","HKBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","HKFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","HKUnits","Count","getPreferredUnits","getRequestStatusForAuthorization","HKAuthorizationRequestStatus","unknown","getWheelchairUse","HKWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","requestAuthorization","deleteQuantitySample","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 deleteQuantitySample: 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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"}
1
+ {"version":3,"names":["notAvailableError","Platform","OS","hasWarned","UnavailableFn","retVal","console","warn","Healthkit","authorizationStatusFor","Promise","resolve","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","HKBiologicalSex","notSet","getBloodType","HKBloodType","getDateOfBirth","Date","getFitzpatrickSkinType","HKFitzpatrickSkinType","getMostRecentCategorySample","getMostRecentQuantitySample","getMostRecentWorkout","getPreferredUnit","HKUnits","Count","getPreferredUnits","getRequestStatusForAuthorization","HKAuthorizationRequestStatus","unknown","getWheelchairUse","HKWheelchairUse","getWorkoutRoutes","isHealthDataAvailable","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","averageQuantity","undefined","maximumQuantity","minimumQuantity","sumQuantity","mostRecentQuantity","mostRecentQuantityDateInterval","duration","queryWorkouts","requestAuthorization","deleteQuantitySample","saveCategorySample","saveCorrelationSample","saveQuantitySample","saveWorkoutSample","subscribeToChanges","useMostRecentCategorySample","useMostRecentQuantitySample","useMostRecentWorkout","useSubscribeToChanges","useHealthkitAuthorization","useIsHealthDataAvailable","canAccessProtectedData"],"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 // eslint-disable-next-line no-console\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 deleteQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveCategorySample: UnavailableFn(Promise.resolve(false)),\n saveCorrelationSample: UnavailableFn(Promise.resolve(false)),\n saveQuantitySample: UnavailableFn(Promise.resolve(false)),\n saveWorkoutSample: UnavailableFn(Promise.resolve(false)),\n subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),\n useMostRecentCategorySample: UnavailableFn(null),\n useMostRecentQuantitySample: UnavailableFn(null),\n useMostRecentWorkout: UnavailableFn(null),\n useSubscribeToChanges: UnavailableFn([null, () => null]),\n useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(HKAuthorizationRequestStatus.unknown)] as const),\n useIsHealthDataAvailable: () => false,\n canAccessProtectedData: async () => Promise.resolve(false),\n}\n\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"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"}
@@ -2,9 +2,36 @@
2
2
 
3
3
  var _reactNative = require("react-native");
4
4
 
5
- _reactNative.NativeModules.ReactNativeHealthkit = {
5
+ const mockModule = {
6
6
  isHealthDataAvailable: jest.fn(),
7
7
  addListener: jest.fn(),
8
- removeListeners: jest.fn()
8
+ removeListeners: jest.fn(),
9
+ authorizationStatusFor: jest.fn(),
10
+ requestAuthorization: jest.fn(),
11
+ saveQuantitySample: jest.fn(),
12
+ deleteQuantitySample: jest.fn(),
13
+ disableAllBackgroundDelivery: jest.fn(),
14
+ disableBackgroundDelivery: jest.fn(),
15
+ enableBackgroundDelivery: jest.fn(),
16
+ getBiologicalSex: jest.fn(),
17
+ getBloodType: jest.fn(),
18
+ getDateOfBirth: jest.fn(),
19
+ getFitzpatrickSkinType: jest.fn(),
20
+ getPreferredUnits: jest.fn(),
21
+ getRequestStatusForAuthorization: jest.fn(),
22
+ getWheelchairUse: jest.fn(),
23
+ getWorkoutRoutes: jest.fn(),
24
+ queryCategorySamples: jest.fn(),
25
+ queryCorrelationSamples: jest.fn(),
26
+ queryQuantitySamples: jest.fn(),
27
+ queryStatisticsForQuantity: jest.fn(),
28
+ queryWorkoutSamples: jest.fn(),
29
+ saveCategorySample: jest.fn(),
30
+ saveCorrelationSample: jest.fn(),
31
+ saveWorkoutSample: jest.fn(),
32
+ subscribeToObserverQuery: jest.fn(),
33
+ unsubscribeQuery: jest.fn(),
34
+ canAccessProtectedData: jest.fn()
9
35
  };
36
+ _reactNative.NativeModules.ReactNativeHealthkit = mockModule;
10
37
  //# sourceMappingURL=jest.setup.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","ReactNativeHealthkit","isHealthDataAvailable","jest","fn","addListener","removeListeners"],"sources":["jest.setup.ts"],"sourcesContent":["import { NativeModules } from 'react-native'\n\nNativeModules.ReactNativeHealthkit = {\n isHealthDataAvailable: jest.fn(),\n addListener: jest.fn(),\n removeListeners: jest.fn(),\n}\n"],"mappings":";;AAAA;;AAEAA,0BAAA,CAAcC,oBAAd,GAAqC;EACnCC,qBAAqB,EAAEC,IAAI,CAACC,EAAL,EADY;EAEnCC,WAAW,EAAEF,IAAI,CAACC,EAAL,EAFsB;EAGnCE,eAAe,EAAEH,IAAI,CAACC,EAAL;AAHkB,CAArC"}
1
+ {"version":3,"names":["mockModule","isHealthDataAvailable","jest","fn","addListener","removeListeners","authorizationStatusFor","requestAuthorization","saveQuantitySample","deleteQuantitySample","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getBloodType","getDateOfBirth","getFitzpatrickSkinType","getPreferredUnits","getRequestStatusForAuthorization","getWheelchairUse","getWorkoutRoutes","queryCategorySamples","queryCorrelationSamples","queryQuantitySamples","queryStatisticsForQuantity","queryWorkoutSamples","saveCategorySample","saveCorrelationSample","saveWorkoutSample","subscribeToObserverQuery","unsubscribeQuery","canAccessProtectedData","NativeModules","ReactNativeHealthkit"],"sources":["jest.setup.ts"],"sourcesContent":["import { NativeModule, NativeModules } from 'react-native'\n\nimport type Native from './native-types'\n\nconst mockModule: (NativeModule & typeof Native) = {\n isHealthDataAvailable: jest.fn(),\n addListener: jest.fn(),\n removeListeners: jest.fn(),\n authorizationStatusFor: jest.fn(),\n requestAuthorization: jest.fn(),\n saveQuantitySample: jest.fn(),\n deleteQuantitySample: jest.fn(),\n disableAllBackgroundDelivery: jest.fn(),\n disableBackgroundDelivery: jest.fn(),\n enableBackgroundDelivery: jest.fn(),\n getBiologicalSex: jest.fn(),\n getBloodType: jest.fn(),\n getDateOfBirth: jest.fn(),\n getFitzpatrickSkinType: jest.fn(),\n getPreferredUnits: jest.fn(),\n getRequestStatusForAuthorization: jest.fn(),\n getWheelchairUse: jest.fn(),\n getWorkoutRoutes: jest.fn(),\n queryCategorySamples: jest.fn(),\n queryCorrelationSamples: jest.fn(),\n queryQuantitySamples: jest.fn(),\n queryStatisticsForQuantity: jest.fn(),\n queryWorkoutSamples: jest.fn(),\n saveCategorySample: jest.fn(),\n saveCorrelationSample: jest.fn(),\n saveWorkoutSample: jest.fn(),\n subscribeToObserverQuery: jest.fn(),\n unsubscribeQuery: jest.fn(),\n canAccessProtectedData: jest.fn(),\n}\n\nNativeModules.ReactNativeHealthkit = mockModule\n"],"mappings":";;AAAA;;AAIA,MAAMA,UAA0C,GAAG;EACjDC,qBAAqB,EAAEC,IAAI,CAACC,EAAL,EAD0B;EAEjDC,WAAW,EAAEF,IAAI,CAACC,EAAL,EAFoC;EAGjDE,eAAe,EAAEH,IAAI,CAACC,EAAL,EAHgC;EAIjDG,sBAAsB,EAAEJ,IAAI,CAACC,EAAL,EAJyB;EAKjDI,oBAAoB,EAAEL,IAAI,CAACC,EAAL,EAL2B;EAMjDK,kBAAkB,EAAEN,IAAI,CAACC,EAAL,EAN6B;EAOjDM,oBAAoB,EAAEP,IAAI,CAACC,EAAL,EAP2B;EAQjDO,4BAA4B,EAAER,IAAI,CAACC,EAAL,EARmB;EASjDQ,yBAAyB,EAAET,IAAI,CAACC,EAAL,EATsB;EAUjDS,wBAAwB,EAAEV,IAAI,CAACC,EAAL,EAVuB;EAWjDU,gBAAgB,EAAEX,IAAI,CAACC,EAAL,EAX+B;EAYjDW,YAAY,EAAEZ,IAAI,CAACC,EAAL,EAZmC;EAajDY,cAAc,EAAEb,IAAI,CAACC,EAAL,EAbiC;EAcjDa,sBAAsB,EAAEd,IAAI,CAACC,EAAL,EAdyB;EAejDc,iBAAiB,EAAEf,IAAI,CAACC,EAAL,EAf8B;EAgBjDe,gCAAgC,EAAEhB,IAAI,CAACC,EAAL,EAhBe;EAiBjDgB,gBAAgB,EAAEjB,IAAI,CAACC,EAAL,EAjB+B;EAkBjDiB,gBAAgB,EAAElB,IAAI,CAACC,EAAL,EAlB+B;EAmBjDkB,oBAAoB,EAAEnB,IAAI,CAACC,EAAL,EAnB2B;EAoBjDmB,uBAAuB,EAAEpB,IAAI,CAACC,EAAL,EApBwB;EAqBjDoB,oBAAoB,EAAErB,IAAI,CAACC,EAAL,EArB2B;EAsBjDqB,0BAA0B,EAAEtB,IAAI,CAACC,EAAL,EAtBqB;EAuBjDsB,mBAAmB,EAAEvB,IAAI,CAACC,EAAL,EAvB4B;EAwBjDuB,kBAAkB,EAAExB,IAAI,CAACC,EAAL,EAxB6B;EAyBjDwB,qBAAqB,EAAEzB,IAAI,CAACC,EAAL,EAzB0B;EA0BjDyB,iBAAiB,EAAE1B,IAAI,CAACC,EAAL,EA1B8B;EA2BjD0B,wBAAwB,EAAE3B,IAAI,CAACC,EAAL,EA3BuB;EA4BjD2B,gBAAgB,EAAE5B,IAAI,CAACC,EAAL,EA5B+B;EA6BjD4B,sBAAsB,EAAE7B,IAAI,CAACC,EAAL;AA7ByB,CAAnD;AAgCA6B,0BAAA,CAAcC,oBAAd,GAAqCjC,UAArC"}