@ovok/native 1.16.1-dev.2173 → 1.16.1-dev.2175

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 (135) hide show
  1. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +15 -8
  2. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  3. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js +1 -1
  4. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -1
  5. package/lib/commonjs/modules/data-sync/constants.js +4 -1
  6. package/lib/commonjs/modules/data-sync/constants.js.map +1 -1
  7. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js +6 -9
  8. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  9. package/lib/commonjs/modules/data-sync/utils/convert-ecg-samples-to-observation.js +47 -0
  10. package/lib/commonjs/modules/data-sync/utils/convert-ecg-samples-to-observation.js.map +1 -0
  11. package/lib/commonjs/modules/data-sync/utils/convert-samples-to-observation.js +7 -15
  12. package/lib/commonjs/modules/data-sync/utils/convert-samples-to-observation.js.map +1 -1
  13. package/lib/commonjs/modules/data-sync/utils/default-health-coding.js +1 -0
  14. package/lib/commonjs/modules/data-sync/utils/default-health-coding.js.map +1 -1
  15. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +43 -86
  16. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  17. package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js +6 -5
  18. package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
  19. package/lib/commonjs/modules/data-sync/utils/health-data-catalog.js +15 -15
  20. package/lib/commonjs/modules/data-sync/utils/health-data-catalog.js.map +1 -1
  21. package/lib/commonjs/modules/data-sync/utils/healthkit-daily-statistics.js +64 -0
  22. package/lib/commonjs/modules/data-sync/utils/healthkit-daily-statistics.js.map +1 -0
  23. package/lib/commonjs/modules/data-sync/utils/healthkit-data-types.js.map +1 -1
  24. package/lib/commonjs/modules/data-sync/utils/healthkit-query-options.js +20 -0
  25. package/lib/commonjs/modules/data-sync/utils/healthkit-query-options.js.map +1 -0
  26. package/lib/commonjs/modules/data-sync/utils/healthkit-sample-source.js +21 -0
  27. package/lib/commonjs/modules/data-sync/utils/healthkit-sample-source.js.map +1 -0
  28. package/lib/commonjs/modules/data-sync/utils/healthkit-samples.js +59 -0
  29. package/lib/commonjs/modules/data-sync/utils/healthkit-samples.js.map +1 -0
  30. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +20 -11
  31. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -1
  32. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +16 -9
  33. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  34. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js +2 -2
  35. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -1
  36. package/lib/module/modules/data-sync/constants.js +4 -1
  37. package/lib/module/modules/data-sync/constants.js.map +1 -1
  38. package/lib/module/modules/data-sync/hooks/use-listen-changes.js +7 -10
  39. package/lib/module/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  40. package/lib/module/modules/data-sync/utils/convert-ecg-samples-to-observation.js +43 -0
  41. package/lib/module/modules/data-sync/utils/convert-ecg-samples-to-observation.js.map +1 -0
  42. package/lib/module/modules/data-sync/utils/convert-samples-to-observation.js +7 -15
  43. package/lib/module/modules/data-sync/utils/convert-samples-to-observation.js.map +1 -1
  44. package/lib/module/modules/data-sync/utils/default-health-coding.js +1 -0
  45. package/lib/module/modules/data-sync/utils/default-health-coding.js.map +1 -1
  46. package/lib/module/modules/data-sync/utils/get-samples-from-health.js +44 -87
  47. package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  48. package/lib/module/modules/data-sync/utils/get-total-samples-count.js +5 -4
  49. package/lib/module/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
  50. package/lib/module/modules/data-sync/utils/health-data-catalog.js +15 -15
  51. package/lib/module/modules/data-sync/utils/health-data-catalog.js.map +1 -1
  52. package/lib/module/modules/data-sync/utils/healthkit-daily-statistics.js +59 -0
  53. package/lib/module/modules/data-sync/utils/healthkit-daily-statistics.js.map +1 -0
  54. package/lib/module/modules/data-sync/utils/healthkit-data-types.js.map +1 -1
  55. package/lib/module/modules/data-sync/utils/healthkit-query-options.js +16 -0
  56. package/lib/module/modules/data-sync/utils/healthkit-query-options.js.map +1 -0
  57. package/lib/module/modules/data-sync/utils/healthkit-sample-source.js +17 -0
  58. package/lib/module/modules/data-sync/utils/healthkit-sample-source.js.map +1 -0
  59. package/lib/module/modules/data-sync/utils/healthkit-samples.js +52 -0
  60. package/lib/module/modules/data-sync/utils/healthkit-samples.js.map +1 -0
  61. package/lib/module/modules/data-sync/utils/healthkit-series.js +19 -10
  62. package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -1
  63. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +2 -2
  65. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +3 -1
  67. package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +2 -2
  70. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts +4 -7
  72. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +2 -2
  74. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-ecg-samples-to-observation.d.ts +6 -0
  76. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-ecg-samples-to-observation.d.ts.map +1 -0
  77. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-samples-to-observation.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/src/modules/data-sync/utils/default-health-coding.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +12 -46
  80. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/data-sync/utils/health-data-catalog.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/src/modules/data-sync/utils/health-units.d.ts +2 -2
  84. package/lib/typescript/commonjs/src/modules/data-sync/utils/health-units.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-daily-statistics.d.ts +10 -0
  86. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-daily-statistics.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-data-types.d.ts +5 -5
  88. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-data-types.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-query-options.d.ts +7 -0
  90. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-query-options.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-sample-source.d.ts +8 -0
  92. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-sample-source.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-samples.d.ts +30 -0
  94. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-samples.d.ts.map +1 -0
  95. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts +2 -2
  96. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/modules/data-sync/utils/to-core-health-observations.d.ts +1 -0
  98. package/lib/typescript/commonjs/src/modules/data-sync/utils/to-core-health-observations.d.ts.map +1 -1
  99. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  100. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +2 -2
  101. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -1
  102. package/lib/typescript/module/src/modules/data-sync/constants.d.ts +3 -1
  103. package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -1
  104. package/lib/typescript/module/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  105. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +2 -2
  106. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  107. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts +4 -7
  108. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  109. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +2 -2
  110. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  111. package/lib/typescript/module/src/modules/data-sync/utils/convert-ecg-samples-to-observation.d.ts +6 -0
  112. package/lib/typescript/module/src/modules/data-sync/utils/convert-ecg-samples-to-observation.d.ts.map +1 -0
  113. package/lib/typescript/module/src/modules/data-sync/utils/convert-samples-to-observation.d.ts.map +1 -1
  114. package/lib/typescript/module/src/modules/data-sync/utils/default-health-coding.d.ts.map +1 -1
  115. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +12 -46
  116. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  117. package/lib/typescript/module/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
  118. package/lib/typescript/module/src/modules/data-sync/utils/health-data-catalog.d.ts.map +1 -1
  119. package/lib/typescript/module/src/modules/data-sync/utils/health-units.d.ts +2 -2
  120. package/lib/typescript/module/src/modules/data-sync/utils/health-units.d.ts.map +1 -1
  121. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-daily-statistics.d.ts +10 -0
  122. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-daily-statistics.d.ts.map +1 -0
  123. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-data-types.d.ts +5 -5
  124. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-data-types.d.ts.map +1 -1
  125. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-query-options.d.ts +7 -0
  126. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-query-options.d.ts.map +1 -0
  127. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-sample-source.d.ts +8 -0
  128. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-sample-source.d.ts.map +1 -0
  129. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-samples.d.ts +30 -0
  130. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-samples.d.ts.map +1 -0
  131. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts +2 -2
  132. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  133. package/lib/typescript/module/src/modules/data-sync/utils/to-core-health-observations.d.ts +1 -0
  134. package/lib/typescript/module/src/modules/data-sync/utils/to-core-health-observations.d.ts.map +1 -1
  135. package/package.json +8 -3
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { getRequestStatusForAuthorization, HKAuthorizationRequestStatus, useHealthkitAuthorization } from "@kingstinct/react-native-healthkit";
3
+ import { AuthorizationRequestStatus, getRequestStatusForAuthorization, useHealthkitAuthorization } from "@kingstinct/react-native-healthkit";
4
4
  import * as React from "react";
5
5
  import { toError } from "../../../helpers/utils/to-error.js";
6
6
  import { HealthAuthorizationContext } from "../../contexts/health-authorization-context.js";
@@ -17,7 +17,10 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
17
17
  renderManualRequestUI,
18
18
  onAuthorizationStatusChange
19
19
  }) => {
20
- const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization(readIdentifiers, writeIdentifiers);
20
+ const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization({
21
+ toRead: readIdentifiers,
22
+ toWrite: writeIdentifiers
23
+ });
21
24
  const [requestState, setRequestState] = React.useState("unknown");
22
25
  const [notRequestedReadIdentifiers, setNotRequestedReadIdentifiers] = React.useState(readIdentifiers);
23
26
  const [notRequestedWriteIdentifiers, setNotRequestedWriteIdentifiers] = React.useState(writeIdentifiers || []);
@@ -49,7 +52,11 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
49
52
  readIdentifiers: currentRead,
50
53
  writeIdentifiers: currentWrite
51
54
  } = identifiersRef.current;
52
- const [notRequestedRead, notRequestedWrite] = await Promise.all([getNotRequestedIdentifiers(currentRead, identifier => getRequestStatusForAuthorization([identifier])), getNotRequestedIdentifiers(currentWrite || [], identifier => getRequestStatusForAuthorization([], [identifier]))]);
55
+ const [notRequestedRead, notRequestedWrite] = await Promise.all([getNotRequestedIdentifiers(currentRead, identifier => getRequestStatusForAuthorization({
56
+ toRead: [identifier]
57
+ })), getNotRequestedIdentifiers(currentWrite || [], identifier => getRequestStatusForAuthorization({
58
+ toShare: [identifier]
59
+ }))]);
53
60
  setNotRequestedReadIdentifiers(notRequestedRead);
54
61
  setNotRequestedWriteIdentifiers(notRequestedWrite);
55
62
  }, []);
@@ -72,7 +79,7 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
72
79
  }
73
80
  previousRequestKey.current = requestKey;
74
81
  setRequestError(undefined);
75
- setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "unknown");
82
+ setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === AuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "unknown");
76
83
  setNotRequestedReadIdentifiers(readIdentifiers);
77
84
  setNotRequestedWriteIdentifiers(writeIdentifiers || []);
78
85
  }, [authorizationStatus, readIdentifiers, requestKey, writeIdentifiers]);
@@ -80,11 +87,11 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
80
87
  if (authorizationStatus === null) {
81
88
  return;
82
89
  }
83
- if (authorizationStatus === HKAuthorizationRequestStatus.shouldRequest) {
90
+ if (authorizationStatus === AuthorizationRequestStatus.shouldRequest) {
84
91
  setRequestState(currentState => currentState === "unknown" ? "shouldRequest" : currentState);
85
92
  }
86
93
  void inspectAuthorization().then(() => {
87
- setRequestState(currentState => currentState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : currentState === "unknown" ? "ready" : currentState);
94
+ setRequestState(currentState => currentState === "unknown" && authorizationStatus === AuthorizationRequestStatus.shouldRequest ? "shouldRequest" : currentState === "unknown" ? "ready" : currentState);
88
95
  }).catch(error => {
89
96
  const normalizedError = toError(error);
90
97
  setRequestError(normalizedError);
@@ -92,12 +99,12 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
92
99
  });
93
100
  }, [authorizationStatus, inspectAuthorization]);
94
101
  React.useEffect(() => {
95
- if (renderManualRequestUI || skipRequest || authorizationStatus !== HKAuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
102
+ if (renderManualRequestUI || skipRequest || authorizationStatus !== AuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
96
103
  return;
97
104
  }
98
105
  void requestAccess();
99
106
  }, [authorizationStatus, requestAccess, renderManualRequestUI, requestState, skipRequest]);
100
- const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest;
107
+ const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === AuthorizationRequestStatus.shouldRequest;
101
108
  const shouldRenderManualRequestUI = renderManualRequestUI && needsAuthorization && requestState !== "requesting" && !skipRequest;
102
109
  const shouldRenderFallback = fallback && needsAuthorization && !skipRequest;
103
110
  const exposedStatus = React.useMemo(() => skipRequest && status.state === "unknown" ? {
@@ -111,7 +118,7 @@ export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
111
118
  request: requestAccess
112
119
  }), [exposedStatus, requestAccess]);
113
120
  let content = null;
114
- if (skipRequest || requestState === "ready" || requestState === "unknown" && (authorizationStatus === HKAuthorizationRequestStatus.unknown || authorizationStatus === HKAuthorizationRequestStatus.unnecessary)) {
121
+ if (skipRequest || requestState === "ready" || requestState === "unknown" && (authorizationStatus === AuthorizationRequestStatus.unknown || authorizationStatus === AuthorizationRequestStatus.unnecessary)) {
115
122
  content = /*#__PURE__*/_jsx(_Fragment, {
116
123
  children: children
117
124
  });
@@ -1 +1 @@
1
- {"version":3,"names":["getRequestStatusForAuthorization","HKAuthorizationRequestStatus","useHealthkitAuthorization","React","toError","HealthAuthorizationContext","AppleHealthAuthorizationContext","getNotRequestedIdentifiers","Fragment","_Fragment","jsx","_jsx","AppleHealthAuthorizationProvider","memo","readIdentifiers","writeIdentifiers","dataToSync","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","requestAuthorization","requestState","setRequestState","useState","notRequestedReadIdentifiers","setNotRequestedReadIdentifiers","notRequestedWriteIdentifiers","setNotRequestedWriteIdentifiers","requestError","setRequestError","requestKey","join","identifiersRef","useRef","current","previousRequestKey","status","useMemo","error","state","notRequestedMeasurementTypes","Object","entries","filter","data","typeIdentifiers","some","typeIdentifier","includes","map","key","useEffect","inspectAuthorization","useCallback","currentRead","currentWrite","notRequestedRead","notRequestedWrite","Promise","all","identifier","requestAccess","undefined","normalizedError","shouldRequest","currentState","then","catch","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","exposedStatus","authorizationValue","platform","missingTypes","request","content","unknown","unnecessary","Provider","value"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AuthorizationRequestStatus","getRequestStatusForAuthorization","useHealthkitAuthorization","React","toError","HealthAuthorizationContext","AppleHealthAuthorizationContext","getNotRequestedIdentifiers","Fragment","_Fragment","jsx","_jsx","AppleHealthAuthorizationProvider","memo","readIdentifiers","writeIdentifiers","dataToSync","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","requestAuthorization","toRead","toWrite","requestState","setRequestState","useState","notRequestedReadIdentifiers","setNotRequestedReadIdentifiers","notRequestedWriteIdentifiers","setNotRequestedWriteIdentifiers","requestError","setRequestError","requestKey","join","identifiersRef","useRef","current","previousRequestKey","status","useMemo","error","state","notRequestedMeasurementTypes","Object","entries","filter","data","typeIdentifiers","some","typeIdentifier","includes","map","key","useEffect","inspectAuthorization","useCallback","currentRead","currentWrite","notRequestedRead","notRequestedWrite","Promise","all","identifier","toShare","requestAccess","undefined","normalizedError","shouldRequest","currentState","then","catch","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","exposedStatus","authorizationValue","platform","missingTypes","request","content","unknown","unnecessary","Provider","value"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { HKAuthorizationRequestStatus } from "@kingstinct/react-native-healthkit";
3
+ import { AuthorizationRequestStatus } from "@kingstinct/react-native-healthkit";
4
4
  const getNotRequestedIdentifiers = async (identifiers, getStatus) => {
5
5
  const statuses = await Promise.all(identifiers.map(async identifier => ({
6
6
  identifier,
@@ -8,7 +8,7 @@ const getNotRequestedIdentifiers = async (identifiers, getStatus) => {
8
8
  })));
9
9
  return statuses.filter(({
10
10
  status
11
- }) => status === HKAuthorizationRequestStatus.shouldRequest).map(({
11
+ }) => status === AuthorizationRequestStatus.shouldRequest).map(({
12
12
  identifier
13
13
  }) => identifier);
14
14
  };
@@ -1 +1 @@
1
- {"version":3,"names":["HKAuthorizationRequestStatus","getNotRequestedIdentifiers","identifiers","getStatus","statuses","Promise","all","map","identifier","status","filter","shouldRequest"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-utils.ts"],"mappings":";;AAAA,SAASA,4BAA4B,QAAQ,oCAAoC;AAEjF,MAAMC,0BAA0B,GAAG,MAAAA,CACjCC,WAAgB,EAChBC,SAAmE,KAClD;EACjB,MAAMC,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCJ,WAAW,CAACK,GAAG,CAAC,MAAOC,UAAU,KAAM;IACrCA,UAAU;IACVC,MAAM,EAAE,MAAMN,SAAS,CAACK,UAAU;EACpC,CAAC,CAAC,CACJ,CAAC;EAED,OAAOJ,QAAQ,CACZM,MAAM,CAAC,CAAC;IAAED;EAAO,CAAC,KAAKA,MAAM,KAAKT,4BAA4B,CAACW,aAAa,CAAC,CAC7EJ,GAAG,CAAC,CAAC;IAAEC;EAAW,CAAC,KAAKA,UAAU,CAAC;AACxC,CAAC;AAED,SAASP,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["AuthorizationRequestStatus","getNotRequestedIdentifiers","identifiers","getStatus","statuses","Promise","all","map","identifier","status","filter","shouldRequest"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-utils.ts"],"mappings":";;AAAA,SAASA,0BAA0B,QAAQ,oCAAoC;AAE/E,MAAMC,0BAA0B,GAAG,MAAAA,CACjCC,WAAgB,EAChBC,SAAiE,KAChD;EACjB,MAAMC,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCJ,WAAW,CAACK,GAAG,CAAC,MAAOC,UAAU,KAAM;IACrCA,UAAU;IACVC,MAAM,EAAE,MAAMN,SAAS,CAACK,UAAU;EACpC,CAAC,CAAC,CACJ,CAAC;EAED,OAAOJ,QAAQ,CACZM,MAAM,CAAC,CAAC;IAAED;EAAO,CAAC,KAAKA,MAAM,KAAKT,0BAA0B,CAACW,aAAa,CAAC,CAC3EJ,GAAG,CAAC,CAAC;IAAEC;EAAW,CAAC,KAAKA,UAAU,CAAC;AACxC,CAAC;AAED,SAASP,0BAA0B","ignoreList":[]}
@@ -7,6 +7,9 @@
7
7
  */
8
8
  const DEFAULT_HEALTH_SYNC_CHUNK_SIZE = 250;
9
9
 
10
+ /** Each ECG recording holds about 15,000 voltages, so a page of them stays small whatever the chunk size. */
11
+ const ECG_PAGE_SIZE = 10;
12
+
10
13
  /** How far back the first import of a type reaches when no watermark exists yet. */
11
14
  const DEFAULT_SYNC_LOOKBACK_DAYS = 30;
12
15
 
@@ -22,5 +25,5 @@ const SERIES_SLOT_MS = 60_000;
22
25
 
23
26
  /** How many already-imported hours a `series` type reads again, for a watch that syncs a little late. */
24
27
  const SERIES_REREAD_HOURS = 3;
25
- export { DAILY_REREAD_DAYS, SERIES_REREAD_HOURS, SERIES_SLOT_MS, DEFAULT_HEALTH_SYNC_CHUNK_SIZE, DEFAULT_SYNC_LOOKBACK_DAYS };
28
+ export { DAILY_REREAD_DAYS, ECG_PAGE_SIZE, SERIES_REREAD_HOURS, SERIES_SLOT_MS, DEFAULT_HEALTH_SYNC_CHUNK_SIZE, DEFAULT_SYNC_LOOKBACK_DAYS };
26
29
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS","DAILY_REREAD_DAYS","SERIES_SLOT_MS","SERIES_REREAD_HOURS"],"sourceRoot":"../../../../src","sources":["modules/data-sync/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,GAAG;;AAE1C;AACA,MAAMC,0BAA0B,GAAG,EAAE;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,CAAC;;AAE3B;AACA,MAAMC,cAAc,GAAG,MAAM;;AAE7B;AACA,MAAMC,mBAAmB,GAAG,CAAC;AAE7B,SACEF,iBAAiB,EACjBE,mBAAmB,EACnBD,cAAc,EACdH,8BAA8B,EAC9BC,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","ECG_PAGE_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS","DAILY_REREAD_DAYS","SERIES_SLOT_MS","SERIES_REREAD_HOURS"],"sourceRoot":"../../../../src","sources":["modules/data-sync/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,GAAG;;AAE1C;AACA,MAAMC,aAAa,GAAG,EAAE;;AAExB;AACA,MAAMC,0BAA0B,GAAG,EAAE;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,CAAC;;AAE3B;AACA,MAAMC,cAAc,GAAG,MAAM;;AAE7B;AACA,MAAMC,mBAAmB,GAAG,CAAC;AAE7B,SACEF,iBAAiB,EACjBF,aAAa,EACbI,mBAAmB,EACnBD,cAAc,EACdJ,8BAA8B,EAC9BE,0BAA0B","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
 
3
- import Healthkit, { HKUpdateFrequency } from "@kingstinct/react-native-healthkit";
3
+ import Healthkit, { UpdateFrequency } from "@kingstinct/react-native-healthkit";
4
4
  import * as React from "react";
5
5
  export const useListenChanges = (dataToSync, onChange, backgroundDelivery, onError) => {
6
6
  const timeoutRef = React.useRef(undefined);
7
7
  const onChangeRef = React.useRef(onChange);
8
8
  const onErrorRef = React.useRef(onError);
9
9
  const identifiers = React.useMemo(() => {
10
- return Object.values(dataToSync).flatMap(data => data?.typeIdentifiers.map(identifier => identifier.typeIdentifier));
10
+ return Object.values(dataToSync).flatMap(data => data?.typeIdentifiers.map(identifier => identifier.typeIdentifier) ?? []);
11
11
  }, [dataToSync]);
12
12
  const backgroundDeliveryEnabled = backgroundDelivery !== undefined;
13
- const backgroundDeliveryFrequency = backgroundDelivery?.frequency ?? HKUpdateFrequency.hourly;
13
+ const backgroundDeliveryFrequency = backgroundDelivery?.frequency ?? UpdateFrequency.hourly;
14
14
  const debouncedOnChange = React.useCallback(identifier => {
15
15
  if (timeoutRef.current) {
16
16
  clearTimeout(timeoutRef.current);
@@ -37,25 +37,22 @@ export const useListenChanges = (dataToSync, onChange, backgroundDelivery, onErr
37
37
  const subscriptions = [];
38
38
  const initSubscriptions = async () => {
39
39
  try {
40
- return await Promise.all(identifiers.map(async identifier => {
40
+ await Promise.all(identifiers.map(async identifier => {
41
41
  if (backgroundDeliveryEnabled) {
42
42
  await Healthkit.enableBackgroundDelivery(identifier, backgroundDeliveryFrequency);
43
43
  }
44
- const subscription = await Healthkit.subscribeToChanges(identifier, () => {
44
+ subscriptions.push(Healthkit.subscribeToChanges(identifier, () => {
45
45
  debouncedOnChange(identifier);
46
- });
47
- subscriptions.push(subscription);
48
- return subscription;
46
+ }));
49
47
  }));
50
48
  } catch (error) {
51
49
  onErrorRef.current?.(error);
52
- return undefined;
53
50
  }
54
51
  };
55
52
  initSubscriptions();
56
53
  return () => {
57
54
  subscriptions.forEach(subscription => {
58
- subscription?.();
55
+ subscription.remove();
59
56
  });
60
57
  if (backgroundDeliveryEnabled) {
61
58
  void Promise.all(identifiers.map(identifier => Healthkit.disableBackgroundDelivery(identifier))).catch(error => onErrorRef.current?.(error));
@@ -1 +1 @@
1
- {"version":3,"names":["Healthkit","HKUpdateFrequency","React","useListenChanges","dataToSync","onChange","backgroundDelivery","onError","timeoutRef","useRef","undefined","onChangeRef","onErrorRef","identifiers","useMemo","Object","values","flatMap","data","typeIdentifiers","map","identifier","typeIdentifier","backgroundDeliveryEnabled","backgroundDeliveryFrequency","frequency","hourly","debouncedOnChange","useCallback","current","clearTimeout","setTimeout","useEffect","subscriptions","initSubscriptions","Promise","all","enableBackgroundDelivery","subscription","subscribeToChanges","push","error","forEach","disableBackgroundDelivery","catch"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/hooks/use-listen-changes.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Healthkit","UpdateFrequency","React","useListenChanges","dataToSync","onChange","backgroundDelivery","onError","timeoutRef","useRef","undefined","onChangeRef","onErrorRef","identifiers","useMemo","Object","values","flatMap","data","typeIdentifiers","map","identifier","typeIdentifier","backgroundDeliveryEnabled","backgroundDeliveryFrequency","frequency","hourly","debouncedOnChange","useCallback","current","clearTimeout","setTimeout","useEffect","subscriptions","initSubscriptions","Promise","all","enableBackgroundDelivery","push","subscribeToChanges","error","forEach","subscription","remove","disableBackgroundDelivery","catch"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/hooks/use-listen-changes.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import { MeasurementTypeKey } from "@ovok/core/next";
4
+ import { getHealthKitSampleSource } from "./healthkit-sample-source.js";
5
+ import { toCoreHealthObservations } from "./to-core-health-observations.js";
6
+ const MILLIVOLTS_PER_VOLT = 1000;
7
+ const MILLISECONDS_PER_SECOND = 1000;
8
+ /** The waveform in millivolts with its heart rate; Apple's classification is never part of it. */
9
+ const toEcgMeasurement = record => {
10
+ const diagramPoints = (record.voltages ?? []).map(({
11
+ voltage
12
+ }) => voltage * MILLIVOLTS_PER_VOLT);
13
+ if (diagramPoints.length === 0) {
14
+ return undefined;
15
+ }
16
+ return {
17
+ measurementTypeKey: MeasurementTypeKey.ecg,
18
+ diagramPoints,
19
+ duration: (record.endDate.getTime() - record.startDate.getTime()) / MILLISECONDS_PER_SECOND,
20
+ heartRate: record.averageHeartRateBpm,
21
+ recordedAt: record.startDate
22
+ };
23
+ };
24
+
25
+ /** Core's own ECG service cannot convert a sample, so the recording is built into a measurement here. */
26
+ const convertEcgSamplesToObservation = async props => {
27
+ const observations = await Promise.all(props.data.map(async record => {
28
+ const measurement = toEcgMeasurement(record);
29
+ if (!measurement) {
30
+ return [];
31
+ }
32
+ const observationBody = await props.client.measurements.build({
33
+ measurement
34
+ });
35
+ return toCoreHealthObservations(observationBody, {
36
+ ...props,
37
+ data: [record]
38
+ }, () => getHealthKitSampleSource(record));
39
+ }));
40
+ return observations.flat();
41
+ };
42
+ export { convertEcgSamplesToObservation };
43
+ //# sourceMappingURL=convert-ecg-samples-to-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MeasurementTypeKey","getHealthKitSampleSource","toCoreHealthObservations","MILLIVOLTS_PER_VOLT","MILLISECONDS_PER_SECOND","toEcgMeasurement","record","diagramPoints","voltages","map","voltage","length","undefined","measurementTypeKey","ecg","duration","endDate","getTime","startDate","heartRate","averageHeartRateBpm","recordedAt","convertEcgSamplesToObservation","props","observations","Promise","all","data","measurement","observationBody","client","measurements","build","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-ecg-samples-to-observation.ts"],"mappings":";;AACA,SAAyBA,kBAAkB,QAAQ,iBAAiB;AAIpE,SACEC,wBAAwB,QAEnB,8BAA2B;AAClC,SAASC,wBAAwB,QAAQ,kCAA+B;AAExE,MAAMC,mBAAmB,GAAG,IAAI;AAChC,MAAMC,uBAAuB,GAAG,IAAI;AAOpC;AACA,MAAMC,gBAAgB,GAAIC,MAAiB,IAAiC;EAC1E,MAAMC,aAAa,GAAG,CAACD,MAAM,CAACE,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAC/C,CAAC;IAAEC;EAAQ,CAAC,KAAKA,OAAO,GAAGP,mBAC7B,CAAC;EAED,IAAII,aAAa,CAACI,MAAM,KAAK,CAAC,EAAE;IAC9B,OAAOC,SAAS;EAClB;EAEA,OAAO;IACLC,kBAAkB,EAAEb,kBAAkB,CAACc,GAAG;IAC1CP,aAAa;IACbQ,QAAQ,EACN,CAACT,MAAM,CAACU,OAAO,CAACC,OAAO,CAAC,CAAC,GAAGX,MAAM,CAACY,SAAS,CAACD,OAAO,CAAC,CAAC,IACtDb,uBAAuB;IACzBe,SAAS,EAAEb,MAAM,CAACc,mBAAmB;IACrCC,UAAU,EAAEf,MAAM,CAACY;EACrB,CAAC;AACH,CAAC;;AAED;AACA,MAAMI,8BAA8B,GAAG,MACrCC,KAAgC,IACL;EAC3B,MAAMC,YAAY,GAAG,MAAMC,OAAO,CAACC,GAAG,CACnCH,KAAK,CAACI,IAAI,CAAiBlB,GAAG,CAAC,MAAOH,MAAM,IAAK;IAChD,MAAMsB,WAAW,GAAGvB,gBAAgB,CAACC,MAAM,CAAC;IAE5C,IAAI,CAACsB,WAAW,EAAE;MAChB,OAAO,EAAE;IACX;IAEA,MAAMC,eAAe,GAAG,MAAMN,KAAK,CAACO,MAAM,CAACC,YAAY,CAACC,KAAK,CAAC;MAC5DJ;IACF,CAAC,CAAC;IAEF,OAAO1B,wBAAwB,CAC7B2B,eAAe,EACf;MAAE,GAAGN,KAAK;MAAEI,IAAI,EAAE,CAACrB,MAAM;IAAE,CAAC,EAC5B,MAAML,wBAAwB,CAACK,MAAM,CACvC,CAAC;EACH,CAAC,CACH,CAAC;EAED,OAAOkB,YAAY,CAACS,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAASX,8BAA8B","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import { ObservationServiceCreator } from "@ovok/core/dist/client/observation/services/creator";
4
+ import { MeasurementTypeKey } from "@ovok/core/next";
5
+ import { convertEcgSamplesToObservation } from "./convert-ecg-samples-to-observation.js";
4
6
  import { convertGenericHealthDataToObservation } from "./convert-generic-health-data.js";
5
- import { getHealthObservationDevice } from "./health-observation-device.js";
7
+ import { getHealthKitSampleSource } from "./healthkit-sample-source.js";
6
8
  import { hasConfiguredNonLoincCoding } from "./normalize-core-health-observation.js";
7
9
  import { isCoreMeasurementTypeKey, toCoreHealthObservations } from "./to-core-health-observations.js";
8
10
  export const convertSamplesToObservation = async props => {
@@ -33,6 +35,9 @@ export const convertSamplesToObservation = async props => {
33
35
  mode
34
36
  });
35
37
  }
38
+ if (measurementTypeKey === MeasurementTypeKey.ecg) {
39
+ return convertEcgSamplesToObservation(props);
40
+ }
36
41
  const service = ObservationServiceCreator.getInstance().getService(measurementTypeKey);
37
42
  const measurement = service.convertSamplesToMeasurement(data);
38
43
  if (!measurement) {
@@ -41,19 +46,6 @@ export const convertSamplesToObservation = async props => {
41
46
  const observationBody = await client.measurements.build({
42
47
  measurement
43
48
  });
44
- return toCoreHealthObservations(observationBody, props, index => {
45
- const sample = data?.[index];
46
- return {
47
- device: sample ? getHealthObservationDevice({
48
- manufacturer: sample.device?.manufacturer,
49
- model: sample.device?.model,
50
- sourceApp: sample.sourceRevision?.source?.name
51
- }) : undefined,
52
- timing: {
53
- start: sample?.startDate,
54
- end: sample?.endDate
55
- }
56
- };
57
- });
49
+ return toCoreHealthObservations(observationBody, props, index => getHealthKitSampleSource(data[index]));
58
50
  };
59
51
  //# sourceMappingURL=convert-samples-to-observation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ObservationServiceCreator","convertGenericHealthDataToObservation","getHealthObservationDevice","hasConfiguredNonLoincCoding","isCoreMeasurementTypeKey","toCoreHealthObservations","convertSamplesToObservation","props","data","client","measurementTypeKey","mode","length","service","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","measurements","build","index","sample","device","manufacturer","model","sourceApp","sourceRevision","source","name","undefined","timing","start","startDate","end","endDate"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;AAKA,SAASA,yBAAyB,QAAQ,qDAAqD;AAM/F,SAASC,qCAAqC,QAAQ,kCAA+B;AACrF,SAASC,0BAA0B,QAAQ,gCAA6B;AACxE,SAASC,2BAA2B,QAAQ,wCAAqC;AACjF,SACEC,wBAAwB,EACxBC,wBAAwB,QACnB,kCAA+B;AAEtC,OAAO,MAAMC,2BAA2B,GAAG,MACzCC,KAAgC,IACL;EAC3B,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,kBAAkB;IAAEC,IAAI,GAAG;EAAQ,CAAC,GAAGJ,KAAK;EAElE,IAAII,IAAI,KAAK,OAAO,EAAE;IACpB,OAAOV,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAIH,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAIT,2BAA2B,CAACI,KAAK,CAAC,EAAE;IACtC,OAAON,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAI,CAACP,wBAAwB,CAACM,kBAAkB,CAAC,EAAE;IACjD,OAAOT,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,MAAME,OAAO,GAAGb,yBAAyB,CAACc,WAAW,CAAC,CAAC,CAACC,UAAU,CAChEL,kBACF,CAAC;EAED,MAAMM,WAAW,GAAGH,OAAO,CAACI,2BAA2B,CACrDT,IACF,CAAC;EAED,IAAI,CAACQ,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMT,MAAM,CAACU,YAAY,CAACC,KAAK,CAAC;IACtDJ;EACF,CAAC,CAAC;EAEF,OAAOX,wBAAwB,CAACa,eAAe,EAAEX,KAAK,EAAGc,KAAK,IAAK;IACjE,MAAMC,MAAM,GAAGd,IAAI,GAAGa,KAAK,CAA2D;IAEtF,OAAO;MACLE,MAAM,EAAED,MAAM,GACVpB,0BAA0B,CAAC;QACzBsB,YAAY,EAAEF,MAAM,CAACC,MAAM,EAAEC,YAAY;QACzCC,KAAK,EAAEH,MAAM,CAACC,MAAM,EAAEE,KAAK;QAC3BC,SAAS,EAAEJ,MAAM,CAACK,cAAc,EAAEC,MAAM,EAAEC;MAC5C,CAAC,CAAC,GACFC,SAAS;MACbC,MAAM,EAAE;QAAEC,KAAK,EAAEV,MAAM,EAAEW,SAAS;QAAEC,GAAG,EAAEZ,MAAM,EAAEa;MAAQ;IAC3D,CAAC;EACH,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ObservationServiceCreator","MeasurementTypeKey","convertEcgSamplesToObservation","convertGenericHealthDataToObservation","getHealthKitSampleSource","hasConfiguredNonLoincCoding","isCoreMeasurementTypeKey","toCoreHealthObservations","convertSamplesToObservation","props","data","client","measurementTypeKey","mode","length","ecg","service","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","measurements","build","index"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;AACA,SAASA,yBAAyB,QAAQ,qDAAqD;AAC/F,SAASC,kBAAkB,QAAQ,iBAAiB;AAMpD,SAASC,8BAA8B,QAAQ,yCAAsC;AACrF,SAASC,qCAAqC,QAAQ,kCAA+B;AACrF,SACEC,wBAAwB,QAEnB,8BAA2B;AAClC,SAASC,2BAA2B,QAAQ,wCAAqC;AACjF,SACEC,wBAAwB,EACxBC,wBAAwB,QACnB,kCAA+B;AAEtC,OAAO,MAAMC,2BAA2B,GAAG,MACzCC,KAAgC,IACL;EAC3B,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,kBAAkB;IAAEC,IAAI,GAAG;EAAQ,CAAC,GAAGJ,KAAK;EAElE,IAAII,IAAI,KAAK,OAAO,EAAE;IACpB,OAAOV,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAIH,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAIT,2BAA2B,CAACI,KAAK,CAAC,EAAE;IACtC,OAAON,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAI,CAACP,wBAAwB,CAACM,kBAAkB,CAAC,EAAE;IACjD,OAAOT,qCAAqC,CAAC;MAAE,GAAGM,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAID,kBAAkB,KAAKX,kBAAkB,CAACc,GAAG,EAAE;IACjD,OAAOb,8BAA8B,CAACO,KAAK,CAAC;EAC9C;EAEA,MAAMO,OAAO,GAAGhB,yBAAyB,CAACiB,WAAW,CAAC,CAAC,CAACC,UAAU,CAChEN,kBACF,CAAC;EAED,MAAMO,WAAW,GAAGH,OAAO,CAACI,2BAA2B,CACrDV,IACF,CAAC;EAED,IAAI,CAACS,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMV,MAAM,CAACW,YAAY,CAACC,KAAK,CAAC;IACtDJ;EACF,CAAC,CAAC;EAEF,OAAOZ,wBAAwB,CAACc,eAAe,EAAEZ,KAAK,EAAGe,KAAK,IAC5DpB,wBAAwB,CAACM,IAAI,CAACc,KAAK,CAAsC,CAC3E,CAAC;AACH,CAAC","ignoreList":[]}
@@ -21,6 +21,7 @@ const CORE_MEASUREMENT_CODES = {
21
21
  HKQuantityTypeIdentifierRestingHeartRate: ObservationCode.RESTING_HEART_RATE,
22
22
  HKQuantityTypeIdentifierWalkingHeartRateAverage: ObservationCode.WALKING_HEART_RATE_AVERAGE,
23
23
  HKQuantityTypeIdentifierVO2Max: ObservationCode.VO2_MAX,
24
+ HKElectrocardiogramType: ObservationCode.ECG,
24
25
  BloodPressure: ObservationCode.SYSTOLIC_BLOOD_PRESSURE,
25
26
  HeartRate: ObservationCode.HEART_RATE,
26
27
  BloodGlucose: ObservationCode.BLOOD_GLUCOSE,
@@ -1 +1 @@
1
- {"version":3,"names":["ObservationCode","HealthDataType","LOINC_SYSTEM","getHealthDataCoding","isCoreMeasurementTypeKey","CORE_MEASUREMENT_CODES","HKQuantityTypeIdentifierBloodPressureSystolic","SYSTOLIC_BLOOD_PRESSURE","HKQuantityTypeIdentifierBloodPressureDiastolic","DIASTOLIC_BLOOD_PRESSURE","HKQuantityTypeIdentifierHeartRate","HEART_RATE","HKQuantityTypeIdentifierBloodGlucose","BLOOD_GLUCOSE","HKQuantityTypeIdentifierBodyMass","BODY_WEIGHT","HKQuantityTypeIdentifierOxygenSaturation","OXYGEN_SATURATION","HKQuantityTypeIdentifierRespiratoryRate","RESPIRATORY_RATE","HKQuantityTypeIdentifierBodyTemperature","BODY_TEMPERATURE","HKQuantityTypeIdentifierStepCount","STEPS","HKQuantityTypeIdentifierHeartRateVariabilitySDNN","HEART_RATE_VARIABILITY","HKQuantityTypeIdentifierRestingHeartRate","RESTING_HEART_RATE","HKQuantityTypeIdentifierWalkingHeartRateAverage","WALKING_HEART_RATE_AVERAGE","HKQuantityTypeIdentifierVO2Max","VO2_MAX","BloodPressure","HeartRate","BloodGlucose","Weight","OxygenSaturation","RespiratoryRate","BodyTemperature","Steps","RestingHeartRate","Vo2Max","SHARED_RECORD_FIELDS","Nutrition","carbohydrates","caloriesEaten","ExerciseSession","exerciseMinutes","getDefaultHealthCoding","provider","key","identifier","mode","coreCode","undefined","code","system","coding","field"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/default-health-coding.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,iBAAiB;AAGjD,SAAyBC,cAAc,QAAuB,8BAA2B;AAEzF,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,wBAAwB,QAAQ,kCAA+B;;AAExE;AACA,MAAMC,sBAA0E,GAAG;EACjFC,6CAA6C,EAAEN,eAAe,CAACO,uBAAuB;EACtFC,8CAA8C,EAAER,eAAe,CAACS,wBAAwB;EACxFC,iCAAiC,EAAEV,eAAe,CAACW,UAAU;EAC7DC,oCAAoC,EAAEZ,eAAe,CAACa,aAAa;EACnEC,gCAAgC,EAAEd,eAAe,CAACe,WAAW;EAC7DC,wCAAwC,EAAEhB,eAAe,CAACiB,iBAAiB;EAC3EC,uCAAuC,EAAElB,eAAe,CAACmB,gBAAgB;EACzEC,uCAAuC,EAAEpB,eAAe,CAACqB,gBAAgB;EACzEC,iCAAiC,EAAEtB,eAAe,CAACuB,KAAK;EACxDC,gDAAgD,EAAExB,eAAe,CAACyB,sBAAsB;EACxFC,wCAAwC,EAAE1B,eAAe,CAAC2B,kBAAkB;EAC5EC,+CAA+C,EAAE5B,eAAe,CAAC6B,0BAA0B;EAC3FC,8BAA8B,EAAE9B,eAAe,CAAC+B,OAAO;EACvDC,aAAa,EAAEhC,eAAe,CAACO,uBAAuB;EACtD0B,SAAS,EAAEjC,eAAe,CAACW,UAAU;EACrCuB,YAAY,EAAElC,eAAe,CAACa,aAAa;EAC3CsB,MAAM,EAAEnC,eAAe,CAACe,WAAW;EACnCqB,gBAAgB,EAAEpC,eAAe,CAACiB,iBAAiB;EACnDoB,eAAe,EAAErC,eAAe,CAACmB,gBAAgB;EACjDmB,eAAe,EAAEtC,eAAe,CAACqB,gBAAgB;EACjDkB,KAAK,EAAEvC,eAAe,CAACuB,KAAK;EAC5BiB,gBAAgB,EAAExC,eAAe,CAAC2B,kBAAkB;EACpDc,MAAM,EAAEzC,eAAe,CAAC+B;AAC1B,CAAC;;AAED;AACA,MAAMW,oBAA+F,GAAG;EACtGC,SAAS,EAAE;IACT,CAAC1C,cAAc,CAAC2C,aAAa,GAAG,mBAAmB;IACnD,CAAC3C,cAAc,CAAC4C,aAAa,GAAG;EAClC,CAAC;EACDC,eAAe,EAAE;IAAE,CAAC7C,cAAc,CAAC8C,eAAe,GAAG;EAAW;AAClE,CAAC;;AAED;AACA,MAAMC,sBAAsB,GAAGA,CAC7BC,QAAwB,EACxBC,GAAkB,EAClBC,UAAkB,EAClBC,IAAoB,KACmC;EACvD,MAAMC,QAAQ,GAAGjD,wBAAwB,CAAC8C,GAAG,CAAC,GAAG7C,sBAAsB,CAAC8C,UAAU,CAAC,GAAGG,SAAS;EAE/F,IAAID,QAAQ,EAAE;IACZ,OAAO;MAAEE,IAAI,EAAEF,QAAQ;MAAEG,MAAM,EAAEtD;IAAa,CAAC;EACjD;EAEA,MAAMuD,MAAM,GAAGtD,mBAAmB,CAAC8C,QAAQ,EAAEE,UAAU,EAAEC,IAAI,CAAC;EAC9D,MAAMM,KAAK,GAAGhB,oBAAoB,CAACS,UAAU,CAAC,GAAGD,GAAG,CAAC;EAErD,OAAOQ,KAAK,GAAG;IAAEH,IAAI,EAAE,GAAGE,MAAM,CAACF,IAAI,IAAIG,KAAK,EAAE;IAAEF,MAAM,EAAEC,MAAM,CAACD;EAAO,CAAC,GAAGC,MAAM;AACpF,CAAC;AAED,SAAST,sBAAsB","ignoreList":[]}
1
+ {"version":3,"names":["ObservationCode","HealthDataType","LOINC_SYSTEM","getHealthDataCoding","isCoreMeasurementTypeKey","CORE_MEASUREMENT_CODES","HKQuantityTypeIdentifierBloodPressureSystolic","SYSTOLIC_BLOOD_PRESSURE","HKQuantityTypeIdentifierBloodPressureDiastolic","DIASTOLIC_BLOOD_PRESSURE","HKQuantityTypeIdentifierHeartRate","HEART_RATE","HKQuantityTypeIdentifierBloodGlucose","BLOOD_GLUCOSE","HKQuantityTypeIdentifierBodyMass","BODY_WEIGHT","HKQuantityTypeIdentifierOxygenSaturation","OXYGEN_SATURATION","HKQuantityTypeIdentifierRespiratoryRate","RESPIRATORY_RATE","HKQuantityTypeIdentifierBodyTemperature","BODY_TEMPERATURE","HKQuantityTypeIdentifierStepCount","STEPS","HKQuantityTypeIdentifierHeartRateVariabilitySDNN","HEART_RATE_VARIABILITY","HKQuantityTypeIdentifierRestingHeartRate","RESTING_HEART_RATE","HKQuantityTypeIdentifierWalkingHeartRateAverage","WALKING_HEART_RATE_AVERAGE","HKQuantityTypeIdentifierVO2Max","VO2_MAX","HKElectrocardiogramType","ECG","BloodPressure","HeartRate","BloodGlucose","Weight","OxygenSaturation","RespiratoryRate","BodyTemperature","Steps","RestingHeartRate","Vo2Max","SHARED_RECORD_FIELDS","Nutrition","carbohydrates","caloriesEaten","ExerciseSession","exerciseMinutes","getDefaultHealthCoding","provider","key","identifier","mode","coreCode","undefined","code","system","coding","field"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/default-health-coding.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,iBAAiB;AAGjD,SAAyBC,cAAc,QAAuB,8BAA2B;AAEzF,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,wBAAwB,QAAQ,kCAA+B;;AAExE;AACA,MAAMC,sBAA0E,GAAG;EACjFC,6CAA6C,EAAEN,eAAe,CAACO,uBAAuB;EACtFC,8CAA8C,EAAER,eAAe,CAACS,wBAAwB;EACxFC,iCAAiC,EAAEV,eAAe,CAACW,UAAU;EAC7DC,oCAAoC,EAAEZ,eAAe,CAACa,aAAa;EACnEC,gCAAgC,EAAEd,eAAe,CAACe,WAAW;EAC7DC,wCAAwC,EAAEhB,eAAe,CAACiB,iBAAiB;EAC3EC,uCAAuC,EAAElB,eAAe,CAACmB,gBAAgB;EACzEC,uCAAuC,EAAEpB,eAAe,CAACqB,gBAAgB;EACzEC,iCAAiC,EAAEtB,eAAe,CAACuB,KAAK;EACxDC,gDAAgD,EAAExB,eAAe,CAACyB,sBAAsB;EACxFC,wCAAwC,EAAE1B,eAAe,CAAC2B,kBAAkB;EAC5EC,+CAA+C,EAAE5B,eAAe,CAAC6B,0BAA0B;EAC3FC,8BAA8B,EAAE9B,eAAe,CAAC+B,OAAO;EACvDC,uBAAuB,EAAEhC,eAAe,CAACiC,GAAG;EAC5CC,aAAa,EAAElC,eAAe,CAACO,uBAAuB;EACtD4B,SAAS,EAAEnC,eAAe,CAACW,UAAU;EACrCyB,YAAY,EAAEpC,eAAe,CAACa,aAAa;EAC3CwB,MAAM,EAAErC,eAAe,CAACe,WAAW;EACnCuB,gBAAgB,EAAEtC,eAAe,CAACiB,iBAAiB;EACnDsB,eAAe,EAAEvC,eAAe,CAACmB,gBAAgB;EACjDqB,eAAe,EAAExC,eAAe,CAACqB,gBAAgB;EACjDoB,KAAK,EAAEzC,eAAe,CAACuB,KAAK;EAC5BmB,gBAAgB,EAAE1C,eAAe,CAAC2B,kBAAkB;EACpDgB,MAAM,EAAE3C,eAAe,CAAC+B;AAC1B,CAAC;;AAED;AACA,MAAMa,oBAA+F,GAAG;EACtGC,SAAS,EAAE;IACT,CAAC5C,cAAc,CAAC6C,aAAa,GAAG,mBAAmB;IACnD,CAAC7C,cAAc,CAAC8C,aAAa,GAAG;EAClC,CAAC;EACDC,eAAe,EAAE;IAAE,CAAC/C,cAAc,CAACgD,eAAe,GAAG;EAAW;AAClE,CAAC;;AAED;AACA,MAAMC,sBAAsB,GAAGA,CAC7BC,QAAwB,EACxBC,GAAkB,EAClBC,UAAkB,EAClBC,IAAoB,KACmC;EACvD,MAAMC,QAAQ,GAAGnD,wBAAwB,CAACgD,GAAG,CAAC,GAAG/C,sBAAsB,CAACgD,UAAU,CAAC,GAAGG,SAAS;EAE/F,IAAID,QAAQ,EAAE;IACZ,OAAO;MAAEE,IAAI,EAAEF,QAAQ;MAAEG,MAAM,EAAExD;IAAa,CAAC;EACjD;EAEA,MAAMyD,MAAM,GAAGxD,mBAAmB,CAACgD,QAAQ,EAAEE,UAAU,EAAEC,IAAI,CAAC;EAC9D,MAAMM,KAAK,GAAGhB,oBAAoB,CAACS,UAAU,CAAC,GAAGD,GAAG,CAAC;EAErD,OAAOQ,KAAK,GAAG;IAAEH,IAAI,EAAE,GAAGE,MAAM,CAACF,IAAI,IAAIG,KAAK,EAAE;IAAEF,MAAM,EAAEC,MAAM,CAACD;EAAO,CAAC,GAAGC,MAAM;AACpF,CAAC;AAED,SAAST,sBAAsB","ignoreList":[]}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import Healthkit, { HKStatisticsOptions, HKWorkoutTypeIdentifier, UnitOfEnergy } from "@kingstinct/react-native-healthkit";
4
- import { addDays, startOfDay } from "date-fns";
5
- import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
3
+ import Healthkit, { ElectrocardiogramTypeIdentifier, WorkoutTypeIdentifier } from "@kingstinct/react-native-healthkit";
4
+ import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE, ECG_PAGE_SIZE } from "../constants.js";
6
5
  import { healthUnitFor } from "./health-units.js";
6
+ import { getDailyStatistics } from "./healthkit-daily-statistics.js";
7
7
  import { isCategoryIdentifier, isCorrelationIdentifier, isQuantityIdentifier, UnsupportedHealthKitDataError, unsupportedHealthKitTypeReason } from "./healthkit-data-types.js";
8
+ import { ALL_SAMPLES, strictDateWindow } from "./healthkit-query-options.js";
9
+ import { toEcgRecord, toPlainCorrelation, toPlainSample, toWorkoutRecord } from "./healthkit-samples.js";
8
10
  import { getHealthKitSeries } from "./healthkit-series.js";
9
11
  import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
10
12
  import { syncWindowStart } from "./sync-window-start.js";
@@ -23,61 +25,56 @@ const getSamplesFromHealth = async ({
23
25
  }
24
26
  return mode === "series" ? getHealthKitSeries(typeIdentifier, startDate) : getDailyStatistics(typeIdentifier, mode, startDate, endDate);
25
27
  }
28
+ const filter = strictDateWindow(startDate, endDate);
26
29
  const options = {
27
- from: startDate,
28
- to: endDate,
29
30
  limit: chunkSize,
30
- anchor
31
+ anchor,
32
+ filter
31
33
  };
32
- if (typeIdentifier === HKWorkoutTypeIdentifier && typeof Healthkit.queryWorkoutSamplesWithAnchor === "function") {
33
- const result = await Healthkit.queryWorkoutSamplesWithAnchor({
34
+ if (typeIdentifier === WorkoutTypeIdentifier) {
35
+ const result = await Healthkit.queryWorkoutSamplesWithAnchor(options);
36
+ return toAnchoredResult(typeIdentifier, result.workouts.map(toWorkoutRecord), result);
37
+ }
38
+ if (typeIdentifier === ElectrocardiogramTypeIdentifier) {
39
+ const limit = Math.min(chunkSize, ECG_PAGE_SIZE);
40
+ const result = await Healthkit.queryElectrocardiogramSamplesWithAnchor({
34
41
  ...options,
35
- energyUnit: UnitOfEnergy.Kilocalories,
36
- distanceUnit: "km"
42
+ limit,
43
+ includeVoltages: true
37
44
  });
38
- if (!result) {
39
- return {
40
- data: [],
41
- anchor: undefined
42
- };
43
- }
44
- return toAnchoredResult(typeIdentifier, result);
45
+ return {
46
+ ...toAnchoredResult(typeIdentifier, result.samples.map(toEcgRecord), result),
47
+ hasMore: result.samples.length >= limit
48
+ };
45
49
  }
46
- if (typeIdentifier === "HKDataTypeIdentifierHeartbeatSeries" && typeof Healthkit.queryHeartbeatSeriesSamplesWithAnchor === "function") {
50
+ if (typeIdentifier === "HKDataTypeIdentifierHeartbeatSeries") {
47
51
  const result = await Healthkit.queryHeartbeatSeriesSamplesWithAnchor(options);
48
- return toAnchoredResult(typeIdentifier, result);
52
+ return toAnchoredResult(typeIdentifier, result.samples.map(toPlainSample), result);
49
53
  }
50
- if (isCategoryIdentifier(typeIdentifier) && typeof Healthkit.queryCategorySamplesWithAnchor === "function") {
54
+ if (isCategoryIdentifier(typeIdentifier)) {
51
55
  const result = await Healthkit.queryCategorySamplesWithAnchor(typeIdentifier, options);
52
- if (!result) {
53
- return {
54
- data: [],
55
- anchor: undefined
56
- };
57
- }
58
- return toAnchoredResult(typeIdentifier, result);
56
+ return toAnchoredResult(typeIdentifier, result.samples.map(toPlainSample), result);
59
57
  }
60
58
  if (isCorrelationIdentifier(typeIdentifier)) {
61
- const samples = await Healthkit.queryCorrelationSamples(typeIdentifier, {
62
- from: startDate,
63
- to: endDate
59
+ const correlations = await Healthkit.queryCorrelationSamples(typeIdentifier, {
60
+ limit: ALL_SAMPLES,
61
+ ascending: true,
62
+ filter
64
63
  });
65
64
  return {
66
- data: [...samples],
65
+ data: correlations.map(toPlainCorrelation),
67
66
  anchor: undefined
68
67
  };
69
68
  }
70
69
  if (typeIdentifier === "HKStateOfMindTypeIdentifier") {
70
+ // State of mind is read by window, not by anchor, so an unlimited page keeps the window from being cut short.
71
71
  const samples = await Healthkit.queryStateOfMindSamples({
72
- from: startDate,
73
- to: endDate,
74
- // This wrapper's state-of-mind API is not anchored. A zero limit maps to
75
- // HealthKit's unbounded query and avoids silently truncating the window.
76
- limit: 0,
77
- ascending: false
72
+ limit: ALL_SAMPLES,
73
+ ascending: false,
74
+ filter
78
75
  });
79
76
  return {
80
- data: [...samples],
77
+ data: samples.map(toPlainSample),
81
78
  anchor: undefined
82
79
  };
83
80
  }
@@ -86,13 +83,7 @@ const getSamplesFromHealth = async ({
86
83
  ...options,
87
84
  unit: healthUnitFor(typeIdentifier)
88
85
  });
89
- if (!result) {
90
- return {
91
- data: [],
92
- anchor: undefined
93
- };
94
- }
95
- return toAnchoredResult(typeIdentifier, result);
86
+ return toAnchoredResult(typeIdentifier, result.samples.map(toPlainSample), result);
96
87
  }
97
88
  throw new UnsupportedHealthKitDataError(typeIdentifier, unsupportedHealthKitTypeReason(typeIdentifier));
98
89
  };
@@ -106,50 +97,16 @@ const deletedRecordIds = samples => {
106
97
  };
107
98
 
108
99
  /** Maps one page of an anchored HealthKit query to the provider result shape. */
109
- const toAnchoredResult = (typeIdentifier, result) => ({
110
- data: [...result.samples],
111
- ...deletedRecordIds(result.deletedSamples),
112
- anchor: result.newAnchor ? {
100
+ const toAnchoredResult = (typeIdentifier, data, {
101
+ deletedSamples,
102
+ newAnchor
103
+ }) => ({
104
+ data,
105
+ ...deletedRecordIds(deletedSamples),
106
+ anchor: newAnchor ? {
113
107
  typeIdentifier,
114
- anchor: result.newAnchor
108
+ anchor: newAnchor
115
109
  } : undefined
116
110
  });
117
- const getDailyStatistics = async (typeIdentifier, mode, startDate, endDate) => {
118
- const firstDay = startOfDay(startDate);
119
- const today = startOfDay(endDate);
120
- const options = mode === "daily-total" ? [HKStatisticsOptions.cumulativeSum] : [HKStatisticsOptions.discreteAverage, HKStatisticsOptions.discreteMin, HKStatisticsOptions.discreteMax];
121
- const statistics = await Healthkit.queryStatisticsCollectionForQuantity(typeIdentifier, options, startOfDay(new Date(2001, 0, 1)), {
122
- day: 1
123
- }, firstDay, today, healthUnitFor(typeIdentifier));
124
- const data = statistics.flatMap((statistic, index) => {
125
- const dayStart = addDays(firstDay, index);
126
- const dayEnd = addDays(dayStart, 1);
127
- const total = statistic.sumQuantity?.quantity;
128
- const average = statistic.averageQuantity?.quantity;
129
- const minimum = statistic.minimumQuantity?.quantity;
130
- const maximum = statistic.maximumQuantity?.quantity;
131
- if (dayEnd > today || (mode === "daily-total" ? total === undefined : average === undefined)) {
132
- return [];
133
- }
134
- return [{
135
- kind: mode,
136
- typeIdentifier,
137
- startDate: dayStart,
138
- endDate: dayEnd,
139
- unit: statistic.sumQuantity?.unit ?? statistic.averageQuantity?.unit ?? healthUnitFor(typeIdentifier) ?? "1",
140
- ...(mode === "daily-total" ? {
141
- value: total
142
- } : {
143
- average,
144
- minimum,
145
- maximum
146
- })
147
- }];
148
- });
149
- return {
150
- data,
151
- anchor: undefined
152
- };
153
- };
154
111
  export { getSamplesFromHealth };
155
112
  //# sourceMappingURL=get-samples-from-health.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","startOfDay","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","healthUnitFor","isCategoryIdentifier","isCorrelationIdentifier","isQuantityIdentifier","UnsupportedHealthKitDataError","unsupportedHealthKitTypeReason","getHealthKitSeries","isDailyAggregateMode","syncWindowStart","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","endDate","Date","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","data","undefined","toAnchoredResult","queryHeartbeatSeriesSamplesWithAnchor","queryCategorySamplesWithAnchor","samples","queryCorrelationSamples","queryStateOfMindSamples","ascending","queryQuantitySamplesWithAnchor","unit","deletedRecordIds","recordIds","map","uuid","length","deletedSamples","newAnchor","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAIdC,mBAAmB,EACnBC,uBAAuB,EACvBC,YAAY,QACP,oCAAoC;AAC3C,SAASC,OAAO,EAAEC,UAAU,QAAQ,UAAU;AAE9C,SAASC,8BAA8B,QAAQ,iBAAc;AAM7D,SAASC,aAAa,QAAQ,mBAAgB;AAC9C,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,oBAAoB,EACpBC,6BAA6B,EAC7BC,8BAA8B,QACzB,2BAAwB;AAC/B,SAASC,kBAAkB,QAAQ,uBAAoB;AACvD,SAASC,oBAAoB,QAAQ,8BAA2B;AAChE,SAASC,eAAe,QAAQ,wBAAqB;AAErD,MAAMC,oBAAoB,GAAG,MAAAA,CAAO;EAClCC,SAAS,EAAEC,UAAU;EACrBC,cAAc;EACdC,MAAM;EACNC,SAAS,GAAGf,8BAA8B;EAC1CgB,IAAI,GAAG;AACgD,CAAC,KAAK;EAC7D,MAAML,SAAS,GAAGF,eAAe,CAACG,UAAU,CAAC;EAE7C,MAAMK,OAAO,GAAG,IAAIC,IAAI,CAAC,CAAC;EAE1B,IAAIV,oBAAoB,CAACQ,IAAI,CAAC,IAAIA,IAAI,KAAK,QAAQ,EAAE;IACnD,IAAI,CAACZ,oBAAoB,CAACS,cAAc,CAAC,EAAE;MACzC,MAAM,IAAIR,6BAA6B,CACrCQ,cAAc,EACd,aAAaG,IAAI,+CACnB,CAAC;IACH;IAEA,OAAOA,IAAI,KAAK,QAAQ,GACpBT,kBAAkB,CAACM,cAAc,EAAEF,SAAS,CAAC,GAC7CQ,kBAAkB,CAACN,cAAc,EAAEG,IAAI,EAAEL,SAAS,EAAEM,OAAO,CAAC;EAClE;EAEA,MAAMG,OAAO,GAAG;IACdC,IAAI,EAAEV,SAAS;IACfW,EAAE,EAAEL,OAAO;IACXM,KAAK,EAAER,SAAS;IAChBD;EACF,CAAC;EAED,IACED,cAAc,KAAKjB,uBAAuB,IAC1C,OAAOF,SAAS,CAAC8B,6BAA6B,KAAK,UAAU,EAC7D;IACA,MAAMC,MAAM,GAAG,MAAM/B,SAAS,CAAC8B,6BAA6B,CAAC;MAC3D,GAAGJ,OAAO;MACVM,UAAU,EAAE7B,YAAY,CAAC8B,YAAY;MACrCC,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,IAAI,CAACH,MAAM,EAAE;MACX,OAAO;QAAEI,IAAI,EAAE,EAAE;QAAEf,MAAM,EAAEgB;MAAU,CAAC;IACxC;IAEA,OAAOC,gBAAgB,CAAClB,cAAc,EAAEY,MAAM,CAAC;EACjD;EAEA,IACEZ,cAAc,KAAK,qCAAqC,IACxD,OAAOnB,SAAS,CAACsC,qCAAqC,KAAK,UAAU,EACrE;IACA,MAAMP,MAAM,GAAG,MAAM/B,SAAS,CAACsC,qCAAqC,CAACZ,OAAO,CAAC;IAE7E,OAAOW,gBAAgB,CAAClB,cAAc,EAAEY,MAAM,CAAC;EACjD;EAEA,IACEvB,oBAAoB,CAACW,cAAc,CAAC,IACpC,OAAOnB,SAAS,CAACuC,8BAA8B,KAAK,UAAU,EAC9D;IACA,MAAMR,MAAM,GAAG,MAAM/B,SAAS,CAACuC,8BAA8B,CAC3DpB,cAAc,EACdO,OACF,CAAC;IAED,IAAI,CAACK,MAAM,EAAE;MACX,OAAO;QAAEI,IAAI,EAAE,EAAE;QAAEf,MAAM,EAAEgB;MAAU,CAAC;IACxC;IAEA,OAAOC,gBAAgB,CAAClB,cAAc,EAAEY,MAAM,CAAC;EACjD;EAEA,IAAItB,uBAAuB,CAACU,cAAc,CAAC,EAAE;IAC3C,MAAMqB,OAAO,GAAG,MAAMxC,SAAS,CAACyC,uBAAuB,CACrDtB,cAAc,EACd;MAAEQ,IAAI,EAAEV,SAAS;MAAEW,EAAE,EAAEL;IAAQ,CACjC,CAAC;IAED,OAAO;MAAEY,IAAI,EAAE,CAAC,GAAGK,OAAO,CAAC;MAAEpB,MAAM,EAAEgB;IAAU,CAAC;EAClD;EAEA,IAAIjB,cAAc,KAAK,6BAA6B,EAAE;IACpD,MAAMqB,OAAO,GAAG,MAAMxC,SAAS,CAAC0C,uBAAuB,CAAC;MACtDf,IAAI,EAAEV,SAAS;MACfW,EAAE,EAAEL,OAAO;MAEX;MACA;MACAM,KAAK,EAAE,CAAC;MACRc,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,OAAO;MAAER,IAAI,EAAE,CAAC,GAAGK,OAAO,CAAC;MAAEpB,MAAM,EAAEgB;IAAU,CAAC;EAClD;EAEA,IAAI1B,oBAAoB,CAACS,cAAc,CAAC,EAAE;IACxC,MAAMY,MAAM,GAAG,MAAM/B,SAAS,CAAC4C,8BAA8B,CAC3DzB,cAAc,EACd;MACE,GAAGO,OAAO;MACVmB,IAAI,EAAEtC,aAAa,CAACY,cAA0C;IAChE,CACF,CAAC;IAED,IAAI,CAACY,MAAM,EAAE;MACX,OAAO;QAAEI,IAAI,EAAE,EAAE;QAAEf,MAAM,EAAEgB;MAAU,CAAC;IACxC;IAEA,OAAOC,gBAAgB,CAAClB,cAAc,EAAEY,MAAM,CAAC;EACjD;EAEA,MAAM,IAAIpB,6BAA6B,CACrCQ,cAAc,EACdP,8BAA8B,CAACO,cAAc,CAC/C,CAAC;AACH,CAAC;AAED,MAAM2B,gBAAgB,GAAIN,OAAoC,IAAK;EACjE,MAAMO,SAAS,GAAGP,OAAO,CAACQ,GAAG,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,CAAC;EAEjD,OAAOF,SAAS,CAACG,MAAM,GAAG,CAAC,GAAG;IAAEJ,gBAAgB,EAAEC;EAAU,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;;AAED;AACA,MAAMV,gBAAgB,GAAGA,CACvBlB,cAA6C,EAC7CY,MAIC,MACG;EACJI,IAAI,EAAE,CAAC,GAAGJ,MAAM,CAACS,OAAO,CAAC;EACzB,GAAGM,gBAAgB,CAACf,MAAM,CAACoB,cAAc,CAAC;EAC1C/B,MAAM,EAAEW,MAAM,CAACqB,SAAS,GACpB;IAAEjC,cAAc;IAAEC,MAAM,EAAEW,MAAM,CAACqB;EAAU,CAAC,GAC5ChB;AACN,CAAC,CAAC;AAEF,MAAMX,kBAAkB,GAAG,MAAAA,CACzBN,cAAwC,EACxCG,IAA8D,EAC9DL,SAAe,EACfM,OAAa,KACoD;EACjE,MAAM8B,QAAQ,GAAGhD,UAAU,CAACY,SAAS,CAAC;EACtC,MAAMqC,KAAK,GAAGjD,UAAU,CAACkB,OAAO,CAAC;EAEjC,MAAMG,OAAO,GACXJ,IAAI,KAAK,aAAa,GAClB,CAACrB,mBAAmB,CAACsD,aAAa,CAAC,GACnC,CACEtD,mBAAmB,CAACuD,eAAe,EACnCvD,mBAAmB,CAACwD,WAAW,EAC/BxD,mBAAmB,CAACyD,WAAW,CAChC;EAEP,MAAMC,UAAU,GAAG,MAAM3D,SAAS,CAAC4D,oCAAoC,CACrEzC,cAAc,EACdO,OAAO,EACPrB,UAAU,CAAC,IAAImB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAChC;IAAEqC,GAAG,EAAE;EAAE,CAAC,EACVR,QAAQ,EACRC,KAAK,EACL/C,aAAa,CAACY,cAAc,CAC9B,CAAC;EAED,MAAMgB,IAAI,GAAGwB,UAAU,CAACG,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;IACpD,MAAMC,QAAQ,GAAG7D,OAAO,CAACiD,QAAQ,EAAEW,KAAK,CAAC;IACzC,MAAME,MAAM,GAAG9D,OAAO,CAAC6D,QAAQ,EAAE,CAAC,CAAC;IACnC,MAAME,KAAK,GAAGJ,SAAS,CAACK,WAAW,EAAEC,QAAQ;IAC7C,MAAMC,OAAO,GAAGP,SAAS,CAACQ,eAAe,EAAEF,QAAQ;IACnD,MAAMG,OAAO,GAAGT,SAAS,CAACU,eAAe,EAAEJ,QAAQ;IACnD,MAAMK,OAAO,GAAGX,SAAS,CAACY,eAAe,EAAEN,QAAQ;IAEnD,IACEH,MAAM,GAAGZ,KAAK,KACbhC,IAAI,KAAK,aAAa,GAAG6C,KAAK,KAAK/B,SAAS,GAAGkC,OAAO,KAAKlC,SAAS,CAAC,EACtE;MACA,OAAO,EAAE;IACX;IAEA,OAAO,CACL;MACEwC,IAAI,EAAEtD,IAAI;MACVH,cAAc;MACdF,SAAS,EAAEgD,QAAQ;MACnB1C,OAAO,EAAE2C,MAAM;MACfrB,IAAI,EACFkB,SAAS,CAACK,WAAW,EAAEvB,IAAI,IAC3BkB,SAAS,CAACQ,eAAe,EAAE1B,IAAI,IAC/BtC,aAAa,CAACY,cAAc,CAAC,IAC7B,GAAG;MACL,IAAIG,IAAI,KAAK,aAAa,GACtB;QAAEuD,KAAK,EAAEV;MAAM,CAAC,GAChB;QAAEG,OAAO;QAAEE,OAAO;QAAEE;MAAQ,CAAC;IACnC,CAAC,CACF;EACH,CAAC,CAAC;EAEF,OAAO;IAAEvC,IAAI;IAAEf,MAAM,EAAEgB;EAAU,CAAC;AACpC,CAAC;AAED,SAASpB,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["Healthkit","ElectrocardiogramTypeIdentifier","WorkoutTypeIdentifier","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","ECG_PAGE_SIZE","healthUnitFor","getDailyStatistics","isCategoryIdentifier","isCorrelationIdentifier","isQuantityIdentifier","UnsupportedHealthKitDataError","unsupportedHealthKitTypeReason","ALL_SAMPLES","strictDateWindow","toEcgRecord","toPlainCorrelation","toPlainSample","toWorkoutRecord","getHealthKitSeries","isDailyAggregateMode","syncWindowStart","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","endDate","Date","filter","options","limit","result","queryWorkoutSamplesWithAnchor","toAnchoredResult","workouts","map","Math","min","queryElectrocardiogramSamplesWithAnchor","includeVoltages","samples","hasMore","length","queryHeartbeatSeriesSamplesWithAnchor","queryCategorySamplesWithAnchor","correlations","queryCorrelationSamples","ascending","data","undefined","queryStateOfMindSamples","queryQuantitySamplesWithAnchor","unit","deletedRecordIds","recordIds","uuid","deletedSamples","newAnchor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":"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","ignoreList":[]}