@kingstinct/react-native-healthkit 5.0.0 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -12
- package/ios/ReactNativeHealthkit.m +6 -0
- package/ios/ReactNativeHealthkit.swift +23 -0
- package/lib/commonjs/hooks/useIsHealthDataAvailable.js.map +1 -1
- package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js +45 -0
- package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js.map +1 -0
- package/lib/commonjs/hooks/useMostRecentWorkout.js +0 -4
- package/lib/commonjs/hooks/useMostRecentWorkout.js.map +1 -1
- package/lib/commonjs/index.ios.js +4 -0
- package/lib/commonjs/index.ios.js.map +1 -1
- package/lib/commonjs/index.js +1 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/jest.setup.js +10 -0
- package/lib/commonjs/jest.setup.js.map +1 -0
- package/lib/commonjs/native-types.js.map +1 -1
- package/lib/commonjs/utils/deleteQuantitySample.js +16 -0
- package/lib/commonjs/utils/deleteQuantitySample.js.map +1 -0
- package/lib/commonjs/utils/deserializeCategorySample.js +2 -2
- package/lib/commonjs/utils/deserializeCategorySample.js.map +1 -1
- package/lib/commonjs/utils/deserializeCategorySample.test.js +25 -0
- package/lib/commonjs/utils/deserializeCategorySample.test.js.map +1 -0
- package/lib/commonjs/utils/serializeDate.test.js +19 -0
- package/lib/commonjs/utils/serializeDate.test.js.map +1 -0
- package/lib/module/hooks/useIsHealthDataAvailable.js.map +1 -1
- package/lib/module/hooks/useIsHealthDataAvailable.test.js +38 -0
- package/lib/module/hooks/useIsHealthDataAvailable.test.js.map +1 -0
- package/lib/module/hooks/useMostRecentWorkout.js +0 -4
- package/lib/module/hooks/useMostRecentWorkout.js.map +1 -1
- package/lib/module/index.ios.js +3 -0
- package/lib/module/index.ios.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/jest.setup.js +7 -0
- package/lib/module/jest.setup.js.map +1 -0
- package/lib/module/native-types.js.map +1 -1
- package/lib/module/utils/deleteQuantitySample.js +6 -0
- package/lib/module/utils/deleteQuantitySample.js.map +1 -0
- package/lib/module/utils/deserializeCategorySample.js +2 -2
- package/lib/module/utils/deserializeCategorySample.js.map +1 -1
- package/lib/module/utils/deserializeCategorySample.test.js +19 -0
- package/lib/module/utils/deserializeCategorySample.test.js.map +1 -0
- package/lib/module/utils/serializeDate.test.js +14 -0
- package/lib/module/utils/serializeDate.test.js.map +1 -0
- package/lib/typescript/src/hooks/useIsHealthDataAvailable.test.d.ts +1 -0
- package/lib/typescript/src/index.ios.d.ts +1 -0
- package/lib/typescript/src/jest.setup.d.ts +1 -0
- package/lib/typescript/src/native-types.d.ts +1 -0
- package/lib/typescript/src/utils/deleteQuantitySample.d.ts +4 -0
- package/lib/typescript/src/utils/deserializeCategorySample.d.ts +2 -2
- package/lib/typescript/src/utils/deserializeCategorySample.test.d.ts +1 -0
- package/lib/typescript/src/utils/serializeDate.test.d.ts +1 -0
- package/package.json +3 -8
- package/src/hooks/useIsHealthDataAvailable.test.ts +40 -0
- package/src/hooks/useIsHealthDataAvailable.ts +2 -0
- package/src/hooks/useMostRecentWorkout.ts +0 -2
- package/src/index.ios.tsx +4 -0
- package/src/index.tsx +1 -0
- package/src/jest.setup.ts +7 -0
- package/src/native-types.ts +21 -5
- package/src/utils/deleteQuantitySample.ts +14 -0
- package/src/utils/deserializeCategorySample.test.ts +21 -0
- package/src/utils/deserializeCategorySample.ts +2 -2
- package/src/utils/serializeDate.test.ts +16 -0
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# @kingstinct/react-native-healthkit
|
|
2
2
|
|
|
3
|
-
[](https://github.com/Kingstinct/react-native-healthkit/actions/workflows/test.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/@kingstinct/react-native-healthkit)
|
|
5
|
+

|
|
5
6
|
|
|
6
|
-
React Native bindings for HealthKit with full TypeScript and Promise support covering
|
|
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).
|
|
7
8
|
|
|
8
9
|
| Data Types | Query | Save | Subscribe | Examples |
|
|
9
10
|
| ----------------------------|:------|:------|:----------|:---------------------------------------|
|
|
@@ -14,28 +15,54 @@ React Native bindings for HealthKit with full TypeScript and Promise support cov
|
|
|
14
15
|
| Document Types | ✅ | ❌ | ✅ | [CDA documents](https://developer.apple.com/documentation/healthkit/hkcdadocument) exposed as Base64 data |
|
|
15
16
|
| Clinical Records | ✅ | ❌ | ✅ | Lab results etc in [FHIR JSON format](https://www.hl7.org/fhir/json.html) |
|
|
16
17
|
|
|
18
|
+
## Disclaimer
|
|
19
|
+
|
|
20
|
+
This library is provided without any warranty and is not affiliated with Apple in any way. The data might be incomplete or inaccurate.
|
|
21
|
+
|
|
17
22
|
## Installation
|
|
18
23
|
|
|
24
|
+
### Native App
|
|
25
|
+
1. Install package
|
|
19
26
|
```sh
|
|
20
|
-
npm install @kingstinct/react-native-healthkit
|
|
21
|
-
|
|
22
|
-
pod install
|
|
27
|
+
yarn add @kingstinct/react-native-healthkit # or npm install @kingstinct/react-native-healthkit
|
|
28
|
+
npx pod-install
|
|
23
29
|
```
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
2. Remember to set `NSHealthUpdateUsageDescription` and `NSHealthShareUsageDescription` in your `Info.plist`
|
|
26
32
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
3. Enable the HealthKit capability for the project in Xcode.
|
|
34
|
+
|
|
35
|
+
4. 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)
|
|
36
|
+
|
|
37
|
+
5. During runtime you can check if HealthKit is available on the device with `isHealthDataAvailable` and request permissions with `requestAuthorization`. Failing to request authorization will result in the app crashing.
|
|
38
|
+
|
|
39
|
+
### Expo Managed Workflow
|
|
40
|
+
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/).
|
|
41
|
+
|
|
42
|
+
1. Install package
|
|
43
|
+
```sh
|
|
44
|
+
yarn add @kingstinct/react-native-healthkit # or npm install @kingstinct/react-native-healthkit
|
|
31
45
|
```
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
2. 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.
|
|
34
48
|
|
|
35
|
-
|
|
49
|
+
3. During runtime you can check if HealthKit is available on the device with `isHealthDataAvailable` and request permissions with `requestAuthorization`. Failing to request authorization will result in the app crashing.
|
|
36
50
|
|
|
37
51
|
## Usage
|
|
38
52
|
|
|
53
|
+
Some hook examples:
|
|
54
|
+
```TypeScript
|
|
55
|
+
import { HKQuantityTypeIdentifier, useHealthkitAuthorization } from '@kingstinct/react-native-healthkit';
|
|
56
|
+
|
|
57
|
+
const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization([HKQuantityTypeIdentifier.bloodGlucose])
|
|
58
|
+
|
|
59
|
+
// make sure that you've requested authorization before requesting data, otherwise your app will crash
|
|
60
|
+
import { useMostRecentQuantitySample, HKQuantityTypeIdentifier } from '@kingstinct/react-native-healthkit';
|
|
61
|
+
|
|
62
|
+
const mostRecentBloodGlucoseSample = useMostRecentQuantitySample(HKQuantityTypeIdentifier.bloodGlucose)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Some imperative examples:
|
|
39
66
|
```TypeScript
|
|
40
67
|
import HealthKit, { HKUnit, HKQuantityTypeIdentifier, HKInsulinDeliveryReason, HKCategoryTypeIdentifier } from '@kingstinct/react-native-healthkit';
|
|
41
68
|
|
|
@@ -62,6 +62,12 @@ RCT_EXTERN_METHOD(saveQuantitySample:(NSString)typeIdentifier
|
|
|
62
62
|
reject:(RCTPromiseRejectBlock)reject
|
|
63
63
|
)
|
|
64
64
|
|
|
65
|
+
RCT_EXTERN_METHOD(deleteQuantitySample:(NSString)typeIdentifier
|
|
66
|
+
uuid:(NSString)uuid
|
|
67
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
68
|
+
reject:(RCTPromiseRejectBlock)reject
|
|
69
|
+
)
|
|
70
|
+
|
|
65
71
|
RCT_EXTERN_METHOD(subscribeToObserverQuery:(NSString)typeIdentifier
|
|
66
72
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
67
73
|
reject:(RCTPromiseRejectBlock)reject
|
|
@@ -379,6 +379,29 @@ class ReactNativeHealthkit: RCTEventEmitter {
|
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
+
@objc(deleteQuantitySample:uuid:resolve:reject:)
|
|
383
|
+
func deleteQuantitySample(typeIdentifier: String, uuid: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock){
|
|
384
|
+
guard let store = _store else {
|
|
385
|
+
return reject(INIT_ERROR, INIT_ERROR_MESSAGE, nil);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
let identifier = HKQuantityTypeIdentifier.init(rawValue: typeIdentifier);
|
|
389
|
+
let sampleUuid = UUID.init(uuidString: uuid) as! UUID;
|
|
390
|
+
|
|
391
|
+
guard let sampleType = HKObjectType.quantityType(forIdentifier: identifier) else {
|
|
392
|
+
return reject(TYPE_IDENTIFIER_ERROR, typeIdentifier, nil);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
let samplePredicate = HKQuery.predicateForObject(with: sampleUuid);
|
|
396
|
+
|
|
397
|
+
store.deleteObjects(of: sampleType, predicate: samplePredicate) { (success: Bool, deletedObjectCount: Int, error: Error?) in
|
|
398
|
+
guard let err = error else {
|
|
399
|
+
return resolve(success);
|
|
400
|
+
}
|
|
401
|
+
reject(GENERIC_ERROR, err.localizedDescription, error);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
382
405
|
@objc(saveCorrelationSample:samples:start:end:metadata:resolve:reject:)
|
|
383
406
|
func saveCorrelationSample(typeIdentifier: String, samples: Array<Dictionary<String, Any>>, start: Date, end: Date, metadata: Dictionary<String, Any>, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock){
|
|
384
407
|
guard let store = _store else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useIsHealthDataAvailable","isAvailable","setIsAvailable","useState","useEffect","init","res","Native","isHealthDataAvailable"],"sources":["useIsHealthDataAvailable.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nimport Native from '../native-types'\n\nconst 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\nexport default useIsHealthDataAvailable\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAEA,MAAMA,wBAAwB,GAAG,MAAM;EACrC,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAyB,IAAzB,CAAtC;
|
|
1
|
+
{"version":3,"names":["useIsHealthDataAvailable","isAvailable","setIsAvailable","useState","useEffect","init","res","Native","isHealthDataAvailable"],"sources":["useIsHealthDataAvailable.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nimport Native from '../native-types'\n\nconst useIsHealthDataAvailable = () => {\n const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n\n useEffect(() => {\n const init = async () => {\n const res = await Native.isHealthDataAvailable()\n setIsAvailable(res)\n }\n void init()\n }, [])\n\n return isAvailable\n}\n\nexport default useIsHealthDataAvailable\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAEA,MAAMA,wBAAwB,GAAG,MAAM;EACrC,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAyB,IAAzB,CAAtC;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACd,MAAMC,IAAI,GAAG,YAAY;MACvB,MAAMC,GAAG,GAAG,MAAMC,oBAAA,CAAOC,qBAAP,EAAlB;MACAN,cAAc,CAACI,GAAD,CAAd;IACD,CAHD;;IAIA,KAAKD,IAAI,EAAT;EACD,CAND,EAMG,EANH;EAQA,OAAOJ,WAAP;AACD,CAZD;;eAceD,wB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _reactHooks = require("@testing-library/react-hooks");
|
|
4
|
+
|
|
5
|
+
var _nativeTypes = _interopRequireDefault(require("../native-types"));
|
|
6
|
+
|
|
7
|
+
var _useIsHealthDataAvailable = _interopRequireDefault(require("./useIsHealthDataAvailable"));
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
|
|
11
|
+
describe('useIsHealthDataAvailable', () => {
|
|
12
|
+
test('should return false', async () => {
|
|
13
|
+
jest.spyOn(_nativeTypes.default, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false));
|
|
14
|
+
const {
|
|
15
|
+
result,
|
|
16
|
+
waitForNextUpdate,
|
|
17
|
+
unmount
|
|
18
|
+
} = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
|
|
19
|
+
await (0, _reactHooks.act)(async () => {
|
|
20
|
+
await waitForNextUpdate();
|
|
21
|
+
});
|
|
22
|
+
expect(result.current).toBe(false);
|
|
23
|
+
unmount();
|
|
24
|
+
});
|
|
25
|
+
test('should return true', async () => {
|
|
26
|
+
jest.spyOn(_nativeTypes.default, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true));
|
|
27
|
+
const {
|
|
28
|
+
result,
|
|
29
|
+
waitForNextUpdate,
|
|
30
|
+
unmount
|
|
31
|
+
} = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
|
|
32
|
+
await (0, _reactHooks.act)(async () => {
|
|
33
|
+
await waitForNextUpdate();
|
|
34
|
+
});
|
|
35
|
+
expect(result.current).toBe(true);
|
|
36
|
+
unmount();
|
|
37
|
+
});
|
|
38
|
+
test('should return null before initalizing', () => {
|
|
39
|
+
const {
|
|
40
|
+
result
|
|
41
|
+
} = (0, _reactHooks.renderHook)(_useIsHealthDataAvailable.default);
|
|
42
|
+
expect(result.current).toBe(null);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=useIsHealthDataAvailable.test.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -26,10 +26,6 @@ function useMostRecentWorkout(options) {
|
|
|
26
26
|
energyUnit,
|
|
27
27
|
distanceUnit
|
|
28
28
|
} = await (0, _getPreferredUnitsTyped.default)(optionsRef.current);
|
|
29
|
-
console.log({
|
|
30
|
-
energyUnit,
|
|
31
|
-
distanceUnit
|
|
32
|
-
});
|
|
33
29
|
setWorkout(await (0, _getMostRecentWorkout.default)({
|
|
34
30
|
energyUnit,
|
|
35
31
|
distanceUnit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMostRecentWorkout","options","workout","setWorkout","useState","optionsRef","useRef","useEffect","current","update","useCallback","energyUnit","distanceUnit","getPreferredUnitsTyped","
|
|
1
|
+
{"version":3,"names":["useMostRecentWorkout","options","workout","setWorkout","useState","optionsRef","useRef","useEffect","current","update","useCallback","energyUnit","distanceUnit","getPreferredUnitsTyped","getMostRecentWorkout","cancelSubscription","init","subscribeToChanges"],"sources":["useMostRecentWorkout.ts"],"sourcesContent":["import {\n useEffect, useState, useRef, useCallback,\n} from 'react'\n\nimport getMostRecentWorkout from '../utils/getMostRecentWorkout'\nimport getPreferredUnitsTyped from '../utils/getPreferredUnitsTyped'\nimport subscribeToChanges from '../utils/subscribeToChanges'\n\nimport type { EnergyUnit, LengthUnit } from '../native-types'\nimport type { HKWorkout } from '../types'\n\nfunction useMostRecentWorkout<\n TEnergy extends EnergyUnit,\n TDistance extends LengthUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n const [workout, setWorkout] = useState<HKWorkout<TEnergy, TDistance> | null>(null)\n\n const optionsRef = useRef(options)\n\n useEffect(() => {\n optionsRef.current = options\n }, [options])\n\n const update = useCallback(async () => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(\n optionsRef.current,\n )\n\n setWorkout(await getMostRecentWorkout({\n energyUnit,\n distanceUnit,\n }))\n }, [])\n\n useEffect(() => {\n void update()\n }, [update])\n\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(\n 'HKWorkoutTypeIdentifier',\n update,\n )\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [update])\n\n return workout\n}\n\nexport default useMostRecentWorkout\n"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;AACA;;;;AAKA,SAASA,oBAAT,CAGEC,OAHF,EAGkF;EAChF,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwB,IAAAC,eAAA,EAA+C,IAA/C,CAA9B;EAEA,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOL,OAAP,CAAnB;EAEA,IAAAM,gBAAA,EAAU,MAAM;IACdF,UAAU,CAACG,OAAX,GAAqBP,OAArB;EACD,CAFD,EAEG,CAACA,OAAD,CAFH;EAIA,MAAMQ,MAAM,GAAG,IAAAC,kBAAA,EAAY,YAAY;IACrC,MAAM;MAAEC,UAAF;MAAcC;IAAd,IAA+B,MAAM,IAAAC,+BAAA,EACzCR,UAAU,CAACG,OAD8B,CAA3C;IAIAL,UAAU,CAAC,MAAM,IAAAW,6BAAA,EAAqB;MACpCH,UADoC;MAEpCC;IAFoC,CAArB,CAAP,CAAV;EAID,CATc,EASZ,EATY,CAAf;EAWA,IAAAL,gBAAA,EAAU,MAAM;IACd,KAAKE,MAAM,EAAX;EACD,CAFD,EAEG,CAACA,MAAD,CAFH;EAIA,IAAAF,gBAAA,EAAU,MAAM;IACd,IAAIQ,kBAAJ;;IAEA,MAAMC,IAAI,GAAG,YAAY;MACvBD,kBAAkB,GAAG,MAAM,IAAAE,2BAAA,EACzB,yBADyB,EAEzBR,MAFyB,CAA3B;IAID,CALD;;IAMA,KAAKO,IAAI,EAAT;IAEA,OAAO,MAAM;MAAA;;MACX,6BAAKD,kBAAL,wDAAK,qBAAL;IACD,CAFD;EAGD,CAdD,EAcG,CAACN,MAAD,CAdH;EAgBA,OAAOP,OAAP;AACD;;eAEcF,oB"}
|
|
@@ -20,6 +20,8 @@ var _useSubscribeToChanges = _interopRequireDefault(require("./hooks/useSubscrib
|
|
|
20
20
|
|
|
21
21
|
var _nativeTypes = _interopRequireDefault(require("./native-types"));
|
|
22
22
|
|
|
23
|
+
var _deleteQuantitySample = _interopRequireDefault(require("./utils/deleteQuantitySample"));
|
|
24
|
+
|
|
23
25
|
var _getDateOfBirth = _interopRequireDefault(require("./utils/getDateOfBirth"));
|
|
24
26
|
|
|
25
27
|
var _getMostRecentCategorySample = _interopRequireDefault(require("./utils/getMostRecentCategorySample"));
|
|
@@ -98,6 +100,8 @@ const Healthkit = {
|
|
|
98
100
|
queryStatisticsForQuantity: _queryStatisticsForQuantity.default,
|
|
99
101
|
queryWorkouts: _queryWorkouts.default,
|
|
100
102
|
requestAuthorization: _requestAuthorization.default,
|
|
103
|
+
// delete methods
|
|
104
|
+
deleteQuantitySample: _deleteQuantitySample.default,
|
|
101
105
|
// save methods
|
|
102
106
|
saveCategorySample: _saveCategorySample.default,
|
|
103
107
|
saveCorrelationSample: _saveCorrelationSample.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","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 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;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;
|
|
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"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -69,6 +69,7 @@ const Healthkit = {
|
|
|
69
69
|
})),
|
|
70
70
|
queryWorkouts: UnavailableFn(Promise.resolve([])),
|
|
71
71
|
requestAuthorization: UnavailableFn(Promise.resolve(false)),
|
|
72
|
+
deleteQuantitySample: UnavailableFn(Promise.resolve(false)),
|
|
72
73
|
saveCategorySample: UnavailableFn(Promise.resolve(false)),
|
|
73
74
|
saveCorrelationSample: UnavailableFn(Promise.resolve(false)),
|
|
74
75
|
saveQuantitySample: UnavailableFn(Promise.resolve(false)),
|
|
@@ -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","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":";;;;;;;;AAAA;;AAEA;;
|
|
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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"}
|
|
@@ -0,0 +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"}
|