@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
@@ -22,7 +22,10 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
22
22
  renderManualRequestUI,
23
23
  onAuthorizationStatusChange
24
24
  }) => {
25
- const [authorizationStatus, requestAuthorization] = (0, _reactNativeHealthkit.useHealthkitAuthorization)(readIdentifiers, writeIdentifiers);
25
+ const [authorizationStatus, requestAuthorization] = (0, _reactNativeHealthkit.useHealthkitAuthorization)({
26
+ toRead: readIdentifiers,
27
+ toWrite: writeIdentifiers
28
+ });
26
29
  const [requestState, setRequestState] = React.useState("unknown");
27
30
  const [notRequestedReadIdentifiers, setNotRequestedReadIdentifiers] = React.useState(readIdentifiers);
28
31
  const [notRequestedWriteIdentifiers, setNotRequestedWriteIdentifiers] = React.useState(writeIdentifiers || []);
@@ -54,7 +57,11 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
54
57
  readIdentifiers: currentRead,
55
58
  writeIdentifiers: currentWrite
56
59
  } = identifiersRef.current;
57
- const [notRequestedRead, notRequestedWrite] = await Promise.all([(0, _appleHealthAuthorizationUtils.getNotRequestedIdentifiers)(currentRead, identifier => (0, _reactNativeHealthkit.getRequestStatusForAuthorization)([identifier])), (0, _appleHealthAuthorizationUtils.getNotRequestedIdentifiers)(currentWrite || [], identifier => (0, _reactNativeHealthkit.getRequestStatusForAuthorization)([], [identifier]))]);
60
+ const [notRequestedRead, notRequestedWrite] = await Promise.all([(0, _appleHealthAuthorizationUtils.getNotRequestedIdentifiers)(currentRead, identifier => (0, _reactNativeHealthkit.getRequestStatusForAuthorization)({
61
+ toRead: [identifier]
62
+ })), (0, _appleHealthAuthorizationUtils.getNotRequestedIdentifiers)(currentWrite || [], identifier => (0, _reactNativeHealthkit.getRequestStatusForAuthorization)({
63
+ toShare: [identifier]
64
+ }))]);
58
65
  setNotRequestedReadIdentifiers(notRequestedRead);
59
66
  setNotRequestedWriteIdentifiers(notRequestedWrite);
60
67
  }, []);
@@ -77,7 +84,7 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
77
84
  }
78
85
  previousRequestKey.current = requestKey;
79
86
  setRequestError(undefined);
80
- setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "unknown");
87
+ setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "unknown");
81
88
  setNotRequestedReadIdentifiers(readIdentifiers);
82
89
  setNotRequestedWriteIdentifiers(writeIdentifiers || []);
83
90
  }, [authorizationStatus, readIdentifiers, requestKey, writeIdentifiers]);
@@ -85,11 +92,11 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
85
92
  if (authorizationStatus === null) {
86
93
  return;
87
94
  }
88
- if (authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest) {
95
+ if (authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest) {
89
96
  setRequestState(currentState => currentState === "unknown" ? "shouldRequest" : currentState);
90
97
  }
91
98
  void inspectAuthorization().then(() => {
92
- setRequestState(currentState => currentState === "unknown" && authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : currentState === "unknown" ? "ready" : currentState);
99
+ setRequestState(currentState => currentState === "unknown" && authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest ? "shouldRequest" : currentState === "unknown" ? "ready" : currentState);
93
100
  }).catch(error => {
94
101
  const normalizedError = (0, _toError.toError)(error);
95
102
  setRequestError(normalizedError);
@@ -97,12 +104,12 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
97
104
  });
98
105
  }, [authorizationStatus, inspectAuthorization]);
99
106
  React.useEffect(() => {
100
- if (renderManualRequestUI || skipRequest || authorizationStatus !== _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
107
+ if (renderManualRequestUI || skipRequest || authorizationStatus !== _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
101
108
  return;
102
109
  }
103
110
  void requestAccess();
104
111
  }, [authorizationStatus, requestAccess, renderManualRequestUI, requestState, skipRequest]);
105
- const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest;
112
+ const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest;
106
113
  const shouldRenderManualRequestUI = renderManualRequestUI && needsAuthorization && requestState !== "requesting" && !skipRequest;
107
114
  const shouldRenderFallback = fallback && needsAuthorization && !skipRequest;
108
115
  const exposedStatus = React.useMemo(() => skipRequest && status.state === "unknown" ? {
@@ -116,7 +123,7 @@ const AppleHealthAuthorizationProvider = exports.AppleHealthAuthorizationProvide
116
123
  request: requestAccess
117
124
  }), [exposedStatus, requestAccess]);
118
125
  let content = null;
119
- if (skipRequest || requestState === "ready" || requestState === "unknown" && (authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.unknown || authorizationStatus === _reactNativeHealthkit.HKAuthorizationRequestStatus.unnecessary)) {
126
+ if (skipRequest || requestState === "ready" || requestState === "unknown" && (authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.unknown || authorizationStatus === _reactNativeHealthkit.AuthorizationRequestStatus.unnecessary)) {
120
127
  content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
121
128
  children: children
122
129
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeHealthkit","require","React","_interopRequireWildcard","_toError","_healthAuthorizationContext","_appleHealthAuthorizationContext","_appleHealthAuthorizationUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthAuthorizationProvider","exports","memo","readIdentifiers","writeIdentifiers","dataToSync","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","requestAuthorization","useHealthkitAuthorization","requestState","setRequestState","useState","notRequestedReadIdentifiers","setNotRequestedReadIdentifiers","notRequestedWriteIdentifiers","setNotRequestedWriteIdentifiers","requestError","setRequestError","requestKey","join","identifiersRef","useRef","current","previousRequestKey","status","useMemo","error","state","notRequestedMeasurementTypes","entries","filter","data","typeIdentifiers","some","typeIdentifier","includes","map","key","useEffect","inspectAuthorization","useCallback","currentRead","currentWrite","notRequestedRead","notRequestedWrite","Promise","all","getNotRequestedIdentifiers","identifier","getRequestStatusForAuthorization","requestAccess","undefined","normalizedError","toError","HKAuthorizationRequestStatus","shouldRequest","currentState","then","catch","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","exposedStatus","authorizationValue","platform","missingTypes","request","content","unknown","unnecessary","jsx","Fragment","HealthAuthorizationContext","Provider","value","AppleHealthAuthorizationContext"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeHealthkit","require","React","_interopRequireWildcard","_toError","_healthAuthorizationContext","_appleHealthAuthorizationContext","_appleHealthAuthorizationUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthAuthorizationProvider","exports","memo","readIdentifiers","writeIdentifiers","dataToSync","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","requestAuthorization","useHealthkitAuthorization","toRead","toWrite","requestState","setRequestState","useState","notRequestedReadIdentifiers","setNotRequestedReadIdentifiers","notRequestedWriteIdentifiers","setNotRequestedWriteIdentifiers","requestError","setRequestError","requestKey","join","identifiersRef","useRef","current","previousRequestKey","status","useMemo","error","state","notRequestedMeasurementTypes","entries","filter","data","typeIdentifiers","some","typeIdentifier","includes","map","key","useEffect","inspectAuthorization","useCallback","currentRead","currentWrite","notRequestedRead","notRequestedWrite","Promise","all","getNotRequestedIdentifiers","identifier","getRequestStatusForAuthorization","toShare","requestAccess","undefined","normalizedError","toError","AuthorizationRequestStatus","shouldRequest","currentState","then","catch","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","exposedStatus","authorizationValue","platform","missingTypes","request","content","unknown","unnecessary","jsx","Fragment","HealthAuthorizationContext","Provider","value","AppleHealthAuthorizationContext"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ const getNotRequestedIdentifiers = async (identifiers, getStatus) => {
12
12
  })));
13
13
  return statuses.filter(({
14
14
  status
15
- }) => status === _reactNativeHealthkit.HKAuthorizationRequestStatus.shouldRequest).map(({
15
+ }) => status === _reactNativeHealthkit.AuthorizationRequestStatus.shouldRequest).map(({
16
16
  identifier
17
17
  }) => identifier);
18
18
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeHealthkit","require","getNotRequestedIdentifiers","identifiers","getStatus","statuses","Promise","all","map","identifier","status","filter","HKAuthorizationRequestStatus","shouldRequest","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-utils.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAEA,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,KAAKE,kDAA4B,CAACC,aAAa,CAAC,CAC7EL,GAAG,CAAC,CAAC;IAAEC;EAAW,CAAC,KAAKA,UAAU,CAAC;AACxC,CAAC;AAACK,OAAA,CAAAZ,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeHealthkit","require","getNotRequestedIdentifiers","identifiers","getStatus","statuses","Promise","all","map","identifier","status","filter","AuthorizationRequestStatus","shouldRequest","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-utils.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAEA,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,KAAKE,gDAA0B,CAACC,aAAa,CAAC,CAC3EL,GAAG,CAAC,CAAC;IAAEC;EAAW,CAAC,KAAKA,UAAU,CAAC;AACxC,CAAC;AAACK,OAAA,CAAAZ,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SERIES_SLOT_MS = exports.SERIES_REREAD_HOURS = exports.DEFAULT_SYNC_LOOKBACK_DAYS = exports.DEFAULT_HEALTH_SYNC_CHUNK_SIZE = exports.DAILY_REREAD_DAYS = void 0;
6
+ exports.SERIES_SLOT_MS = exports.SERIES_REREAD_HOURS = exports.ECG_PAGE_SIZE = exports.DEFAULT_SYNC_LOOKBACK_DAYS = exports.DEFAULT_HEALTH_SYNC_CHUNK_SIZE = exports.DAILY_REREAD_DAYS = void 0;
7
7
  /**
8
8
  * Keeps provider pages comfortably below Medplum's synchronous request limit.
9
9
  * The save helper also enforces the byte limit because an observation's size
@@ -11,6 +11,9 @@ exports.SERIES_SLOT_MS = exports.SERIES_REREAD_HOURS = exports.DEFAULT_SYNC_LOOK
11
11
  */
12
12
  const DEFAULT_HEALTH_SYNC_CHUNK_SIZE = exports.DEFAULT_HEALTH_SYNC_CHUNK_SIZE = 250;
13
13
 
14
+ /** Each ECG recording holds about 15,000 voltages, so a page of them stays small whatever the chunk size. */
15
+ const ECG_PAGE_SIZE = exports.ECG_PAGE_SIZE = 10;
16
+
14
17
  /** How far back the first import of a type reaches when no watermark exists yet. */
15
18
  const DEFAULT_SYNC_LOOKBACK_DAYS = exports.DEFAULT_SYNC_LOOKBACK_DAYS = 30;
16
19
 
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","exports","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,GAAAC,OAAA,CAAAD,8BAAA,GAAG,GAAG;;AAE1C;AACA,MAAME,0BAA0B,GAAAD,OAAA,CAAAC,0BAAA,GAAG,EAAE;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAAF,OAAA,CAAAE,iBAAA,GAAG,CAAC;;AAE3B;AACA,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,MAAM;;AAE7B;AACA,MAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAAG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","exports","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,GAAAC,OAAA,CAAAD,8BAAA,GAAG,GAAG;;AAE1C;AACA,MAAME,aAAa,GAAAD,OAAA,CAAAC,aAAA,GAAG,EAAE;;AAExB;AACA,MAAMC,0BAA0B,GAAAF,OAAA,CAAAE,0BAAA,GAAG,EAAE;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAG,CAAC;;AAE3B;AACA,MAAMC,cAAc,GAAAJ,OAAA,CAAAI,cAAA,GAAG,MAAM;;AAE7B;AACA,MAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,CAAC","ignoreList":[]}
@@ -12,10 +12,10 @@ const useListenChanges = (dataToSync, onChange, backgroundDelivery, onError) =>
12
12
  const onChangeRef = React.useRef(onChange);
13
13
  const onErrorRef = React.useRef(onError);
14
14
  const identifiers = React.useMemo(() => {
15
- return Object.values(dataToSync).flatMap(data => data?.typeIdentifiers.map(identifier => identifier.typeIdentifier));
15
+ return Object.values(dataToSync).flatMap(data => data?.typeIdentifiers.map(identifier => identifier.typeIdentifier) ?? []);
16
16
  }, [dataToSync]);
17
17
  const backgroundDeliveryEnabled = backgroundDelivery !== undefined;
18
- const backgroundDeliveryFrequency = backgroundDelivery?.frequency ?? _reactNativeHealthkit.HKUpdateFrequency.hourly;
18
+ const backgroundDeliveryFrequency = backgroundDelivery?.frequency ?? _reactNativeHealthkit.UpdateFrequency.hourly;
19
19
  const debouncedOnChange = React.useCallback(identifier => {
20
20
  if (timeoutRef.current) {
21
21
  clearTimeout(timeoutRef.current);
@@ -42,25 +42,22 @@ const useListenChanges = (dataToSync, onChange, backgroundDelivery, onError) =>
42
42
  const subscriptions = [];
43
43
  const initSubscriptions = async () => {
44
44
  try {
45
- return await Promise.all(identifiers.map(async identifier => {
45
+ await Promise.all(identifiers.map(async identifier => {
46
46
  if (backgroundDeliveryEnabled) {
47
47
  await _reactNativeHealthkit.default.enableBackgroundDelivery(identifier, backgroundDeliveryFrequency);
48
48
  }
49
- const subscription = await _reactNativeHealthkit.default.subscribeToChanges(identifier, () => {
49
+ subscriptions.push(_reactNativeHealthkit.default.subscribeToChanges(identifier, () => {
50
50
  debouncedOnChange(identifier);
51
- });
52
- subscriptions.push(subscription);
53
- return subscription;
51
+ }));
54
52
  }));
55
53
  } catch (error) {
56
54
  onErrorRef.current?.(error);
57
- return undefined;
58
55
  }
59
56
  };
60
57
  initSubscriptions();
61
58
  return () => {
62
59
  subscriptions.forEach(subscription => {
63
- subscription?.();
60
+ subscription.remove();
64
61
  });
65
62
  if (backgroundDeliveryEnabled) {
66
63
  void Promise.all(identifiers.map(identifier => _reactNativeHealthkit.default.disableBackgroundDelivery(identifier))).catch(error => onErrorRef.current?.(error));
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","React","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useListenChanges","dataToSync","onChange","backgroundDelivery","onError","timeoutRef","useRef","undefined","onChangeRef","onErrorRef","identifiers","useMemo","values","flatMap","data","typeIdentifiers","map","identifier","typeIdentifier","backgroundDeliveryEnabled","backgroundDeliveryFrequency","frequency","HKUpdateFrequency","hourly","debouncedOnChange","useCallback","current","clearTimeout","setTimeout","useEffect","subscriptions","initSubscriptions","Promise","all","Healthkit","enableBackgroundDelivery","subscription","subscribeToChanges","push","error","forEach","disableBackgroundDelivery","catch","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/hooks/use-listen-changes.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","React","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useListenChanges","dataToSync","onChange","backgroundDelivery","onError","timeoutRef","useRef","undefined","onChangeRef","onErrorRef","identifiers","useMemo","values","flatMap","data","typeIdentifiers","map","identifier","typeIdentifier","backgroundDeliveryEnabled","backgroundDeliveryFrequency","frequency","UpdateFrequency","hourly","debouncedOnChange","useCallback","current","clearTimeout","setTimeout","useEffect","subscriptions","initSubscriptions","Promise","all","Healthkit","enableBackgroundDelivery","push","subscribeToChanges","error","forEach","subscription","remove","disableBackgroundDelivery","catch","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/hooks/use-listen-changes.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.convertEcgSamplesToObservation = void 0;
7
+ var _next = require("@ovok/core/next");
8
+ var _healthkitSampleSource = require("./healthkit-sample-source.js");
9
+ var _toCoreHealthObservations = require("./to-core-health-observations.js");
10
+ const MILLIVOLTS_PER_VOLT = 1000;
11
+ const MILLISECONDS_PER_SECOND = 1000;
12
+ /** The waveform in millivolts with its heart rate; Apple's classification is never part of it. */
13
+ const toEcgMeasurement = record => {
14
+ const diagramPoints = (record.voltages ?? []).map(({
15
+ voltage
16
+ }) => voltage * MILLIVOLTS_PER_VOLT);
17
+ if (diagramPoints.length === 0) {
18
+ return undefined;
19
+ }
20
+ return {
21
+ measurementTypeKey: _next.MeasurementTypeKey.ecg,
22
+ diagramPoints,
23
+ duration: (record.endDate.getTime() - record.startDate.getTime()) / MILLISECONDS_PER_SECOND,
24
+ heartRate: record.averageHeartRateBpm,
25
+ recordedAt: record.startDate
26
+ };
27
+ };
28
+
29
+ /** Core's own ECG service cannot convert a sample, so the recording is built into a measurement here. */
30
+ const convertEcgSamplesToObservation = async props => {
31
+ const observations = await Promise.all(props.data.map(async record => {
32
+ const measurement = toEcgMeasurement(record);
33
+ if (!measurement) {
34
+ return [];
35
+ }
36
+ const observationBody = await props.client.measurements.build({
37
+ measurement
38
+ });
39
+ return (0, _toCoreHealthObservations.toCoreHealthObservations)(observationBody, {
40
+ ...props,
41
+ data: [record]
42
+ }, () => (0, _healthkitSampleSource.getHealthKitSampleSource)(record));
43
+ }));
44
+ return observations.flat();
45
+ };
46
+ exports.convertEcgSamplesToObservation = convertEcgSamplesToObservation;
47
+ //# sourceMappingURL=convert-ecg-samples-to-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_next","require","_healthkitSampleSource","_toCoreHealthObservations","MILLIVOLTS_PER_VOLT","MILLISECONDS_PER_SECOND","toEcgMeasurement","record","diagramPoints","voltages","map","voltage","length","undefined","measurementTypeKey","MeasurementTypeKey","ecg","duration","endDate","getTime","startDate","heartRate","averageHeartRateBpm","recordedAt","convertEcgSamplesToObservation","props","observations","Promise","all","data","measurement","observationBody","client","measurements","build","toCoreHealthObservations","getHealthKitSampleSource","flat","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-ecg-samples-to-observation.ts"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAD,OAAA;AAIA,IAAAE,yBAAA,GAAAF,OAAA;AAEA,MAAMG,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,EAAEC,wBAAkB,CAACC,GAAG;IAC1CR,aAAa;IACbS,QAAQ,EACN,CAACV,MAAM,CAACW,OAAO,CAACC,OAAO,CAAC,CAAC,GAAGZ,MAAM,CAACa,SAAS,CAACD,OAAO,CAAC,CAAC,IACtDd,uBAAuB;IACzBgB,SAAS,EAAEd,MAAM,CAACe,mBAAmB;IACrCC,UAAU,EAAEhB,MAAM,CAACa;EACrB,CAAC;AACH,CAAC;;AAED;AACA,MAAMI,8BAA8B,GAAG,MACrCC,KAAgC,IACL;EAC3B,MAAMC,YAAY,GAAG,MAAMC,OAAO,CAACC,GAAG,CACnCH,KAAK,CAACI,IAAI,CAAiBnB,GAAG,CAAC,MAAOH,MAAM,IAAK;IAChD,MAAMuB,WAAW,GAAGxB,gBAAgB,CAACC,MAAM,CAAC;IAE5C,IAAI,CAACuB,WAAW,EAAE;MAChB,OAAO,EAAE;IACX;IAEA,MAAMC,eAAe,GAAG,MAAMN,KAAK,CAACO,MAAM,CAACC,YAAY,CAACC,KAAK,CAAC;MAC5DJ;IACF,CAAC,CAAC;IAEF,OAAO,IAAAK,kDAAwB,EAC7BJ,eAAe,EACf;MAAE,GAAGN,KAAK;MAAEI,IAAI,EAAE,CAACtB,MAAM;IAAE,CAAC,EAC5B,MAAM,IAAA6B,+CAAwB,EAAC7B,MAAM,CACvC,CAAC;EACH,CAAC,CACH,CAAC;EAED,OAAOmB,YAAY,CAACW,IAAI,CAAC,CAAC;AAC5B,CAAC;AAACC,OAAA,CAAAd,8BAAA,GAAAA,8BAAA","ignoreList":[]}
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.convertSamplesToObservation = void 0;
7
7
  var _creator = require("@ovok/core/dist/client/observation/services/creator");
8
+ var _next = require("@ovok/core/next");
9
+ var _convertEcgSamplesToObservation = require("./convert-ecg-samples-to-observation.js");
8
10
  var _convertGenericHealthData = require("./convert-generic-health-data.js");
9
- var _healthObservationDevice = require("./health-observation-device.js");
11
+ var _healthkitSampleSource = require("./healthkit-sample-source.js");
10
12
  var _normalizeCoreHealthObservation = require("./normalize-core-health-observation.js");
11
13
  var _toCoreHealthObservations = require("./to-core-health-observations.js");
12
14
  const convertSamplesToObservation = async props => {
@@ -37,6 +39,9 @@ const convertSamplesToObservation = async props => {
37
39
  mode
38
40
  });
39
41
  }
42
+ if (measurementTypeKey === _next.MeasurementTypeKey.ecg) {
43
+ return (0, _convertEcgSamplesToObservation.convertEcgSamplesToObservation)(props);
44
+ }
40
45
  const service = _creator.ObservationServiceCreator.getInstance().getService(measurementTypeKey);
41
46
  const measurement = service.convertSamplesToMeasurement(data);
42
47
  if (!measurement) {
@@ -45,20 +50,7 @@ const convertSamplesToObservation = async props => {
45
50
  const observationBody = await client.measurements.build({
46
51
  measurement
47
52
  });
48
- return (0, _toCoreHealthObservations.toCoreHealthObservations)(observationBody, props, index => {
49
- const sample = data?.[index];
50
- return {
51
- device: sample ? (0, _healthObservationDevice.getHealthObservationDevice)({
52
- manufacturer: sample.device?.manufacturer,
53
- model: sample.device?.model,
54
- sourceApp: sample.sourceRevision?.source?.name
55
- }) : undefined,
56
- timing: {
57
- start: sample?.startDate,
58
- end: sample?.endDate
59
- }
60
- };
61
- });
53
+ return (0, _toCoreHealthObservations.toCoreHealthObservations)(observationBody, props, index => (0, _healthkitSampleSource.getHealthKitSampleSource)(data[index]));
62
54
  };
63
55
  exports.convertSamplesToObservation = convertSamplesToObservation;
64
56
  //# sourceMappingURL=convert-samples-to-observation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_creator","require","_convertGenericHealthData","_healthObservationDevice","_normalizeCoreHealthObservation","_toCoreHealthObservations","convertSamplesToObservation","props","data","client","measurementTypeKey","mode","convertGenericHealthDataToObservation","length","hasConfiguredNonLoincCoding","isCoreMeasurementTypeKey","service","ObservationServiceCreator","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","measurements","build","toCoreHealthObservations","index","sample","device","getHealthObservationDevice","manufacturer","model","sourceApp","sourceRevision","source","name","undefined","timing","start","startDate","end","endDate","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;;;;;AAKA,IAAAA,QAAA,GAAAC,OAAA;AAMA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AACA,IAAAG,+BAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AAKO,MAAMK,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,OAAO,IAAAC,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAIH,IAAI,CAACK,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAI,IAAAC,2DAA2B,EAACP,KAAK,CAAC,EAAE;IACtC,OAAO,IAAAK,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAI,CAAC,IAAAI,kDAAwB,EAACL,kBAAkB,CAAC,EAAE;IACjD,OAAO,IAAAE,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,MAAMK,OAAO,GAAGC,kCAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAChET,kBACF,CAAC;EAED,MAAMU,WAAW,GAAGJ,OAAO,CAACK,2BAA2B,CACrDb,IACF,CAAC;EAED,IAAI,CAACY,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMb,MAAM,CAACc,YAAY,CAACC,KAAK,CAAC;IACtDJ;EACF,CAAC,CAAC;EAEF,OAAO,IAAAK,kDAAwB,EAACH,eAAe,EAAEf,KAAK,EAAGmB,KAAK,IAAK;IACjE,MAAMC,MAAM,GAAGnB,IAAI,GAAGkB,KAAK,CAA2D;IAEtF,OAAO;MACLE,MAAM,EAAED,MAAM,GACV,IAAAE,mDAA0B,EAAC;QACzBC,YAAY,EAAEH,MAAM,CAACC,MAAM,EAAEE,YAAY;QACzCC,KAAK,EAAEJ,MAAM,CAACC,MAAM,EAAEG,KAAK;QAC3BC,SAAS,EAAEL,MAAM,CAACM,cAAc,EAAEC,MAAM,EAAEC;MAC5C,CAAC,CAAC,GACFC,SAAS;MACbC,MAAM,EAAE;QAAEC,KAAK,EAAEX,MAAM,EAAEY,SAAS;QAAEC,GAAG,EAAEb,MAAM,EAAEc;MAAQ;IAC3D,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;AAACC,OAAA,CAAApC,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_creator","require","_next","_convertEcgSamplesToObservation","_convertGenericHealthData","_healthkitSampleSource","_normalizeCoreHealthObservation","_toCoreHealthObservations","convertSamplesToObservation","props","data","client","measurementTypeKey","mode","convertGenericHealthDataToObservation","length","hasConfiguredNonLoincCoding","isCoreMeasurementTypeKey","MeasurementTypeKey","ecg","convertEcgSamplesToObservation","service","ObservationServiceCreator","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","measurements","build","toCoreHealthObservations","index","getHealthKitSampleSource","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAMA,IAAAE,+BAAA,GAAAF,OAAA;AACA,IAAAG,yBAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AAIA,IAAAK,+BAAA,GAAAL,OAAA;AACA,IAAAM,yBAAA,GAAAN,OAAA;AAKO,MAAMO,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,OAAO,IAAAC,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAIH,IAAI,CAACK,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAI,IAAAC,2DAA2B,EAACP,KAAK,CAAC,EAAE;IACtC,OAAO,IAAAK,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAI,CAAC,IAAAI,kDAAwB,EAACL,kBAAkB,CAAC,EAAE;IACjD,OAAO,IAAAE,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAID,kBAAkB,KAAKM,wBAAkB,CAACC,GAAG,EAAE;IACjD,OAAO,IAAAC,8DAA8B,EAACX,KAAK,CAAC;EAC9C;EAEA,MAAMY,OAAO,GAAGC,kCAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAChEZ,kBACF,CAAC;EAED,MAAMa,WAAW,GAAGJ,OAAO,CAACK,2BAA2B,CACrDhB,IACF,CAAC;EAED,IAAI,CAACe,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMhB,MAAM,CAACiB,YAAY,CAACC,KAAK,CAAC;IACtDJ;EACF,CAAC,CAAC;EAEF,OAAO,IAAAK,kDAAwB,EAACH,eAAe,EAAElB,KAAK,EAAGsB,KAAK,IAC5D,IAAAC,+CAAwB,EAACtB,IAAI,CAACqB,KAAK,CAAsC,CAC3E,CAAC;AACH,CAAC;AAACE,OAAA,CAAAzB,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -24,6 +24,7 @@ const CORE_MEASUREMENT_CODES = {
24
24
  HKQuantityTypeIdentifierRestingHeartRate: _next.ObservationCode.RESTING_HEART_RATE,
25
25
  HKQuantityTypeIdentifierWalkingHeartRateAverage: _next.ObservationCode.WALKING_HEART_RATE_AVERAGE,
26
26
  HKQuantityTypeIdentifierVO2Max: _next.ObservationCode.VO2_MAX,
27
+ HKElectrocardiogramType: _next.ObservationCode.ECG,
27
28
  BloodPressure: _next.ObservationCode.SYSTOLIC_BLOOD_PRESSURE,
28
29
  HeartRate: _next.ObservationCode.HEART_RATE,
29
30
  BloodGlucose: _next.ObservationCode.BLOOD_GLUCOSE,
@@ -1 +1 @@
1
- {"version":3,"names":["_next","require","_healthSyncKeys","_fhirSystems","_healthDataCatalog","_toCoreHealthObservations","CORE_MEASUREMENT_CODES","HKQuantityTypeIdentifierBloodPressureSystolic","ObservationCode","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","HealthDataType","carbohydrates","caloriesEaten","ExerciseSession","exerciseMinutes","getDefaultHealthCoding","provider","key","identifier","mode","coreCode","isCoreMeasurementTypeKey","undefined","code","system","LOINC_SYSTEM","coding","getHealthDataCoding","field","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/default-health-coding.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AAEA;AACA,MAAMK,sBAA0E,GAAG;EACjFC,6CAA6C,EAAEC,qBAAe,CAACC,uBAAuB;EACtFC,8CAA8C,EAAEF,qBAAe,CAACG,wBAAwB;EACxFC,iCAAiC,EAAEJ,qBAAe,CAACK,UAAU;EAC7DC,oCAAoC,EAAEN,qBAAe,CAACO,aAAa;EACnEC,gCAAgC,EAAER,qBAAe,CAACS,WAAW;EAC7DC,wCAAwC,EAAEV,qBAAe,CAACW,iBAAiB;EAC3EC,uCAAuC,EAAEZ,qBAAe,CAACa,gBAAgB;EACzEC,uCAAuC,EAAEd,qBAAe,CAACe,gBAAgB;EACzEC,iCAAiC,EAAEhB,qBAAe,CAACiB,KAAK;EACxDC,gDAAgD,EAAElB,qBAAe,CAACmB,sBAAsB;EACxFC,wCAAwC,EAAEpB,qBAAe,CAACqB,kBAAkB;EAC5EC,+CAA+C,EAAEtB,qBAAe,CAACuB,0BAA0B;EAC3FC,8BAA8B,EAAExB,qBAAe,CAACyB,OAAO;EACvDC,aAAa,EAAE1B,qBAAe,CAACC,uBAAuB;EACtD0B,SAAS,EAAE3B,qBAAe,CAACK,UAAU;EACrCuB,YAAY,EAAE5B,qBAAe,CAACO,aAAa;EAC3CsB,MAAM,EAAE7B,qBAAe,CAACS,WAAW;EACnCqB,gBAAgB,EAAE9B,qBAAe,CAACW,iBAAiB;EACnDoB,eAAe,EAAE/B,qBAAe,CAACa,gBAAgB;EACjDmB,eAAe,EAAEhC,qBAAe,CAACe,gBAAgB;EACjDkB,KAAK,EAAEjC,qBAAe,CAACiB,KAAK;EAC5BiB,gBAAgB,EAAElC,qBAAe,CAACqB,kBAAkB;EACpDc,MAAM,EAAEnC,qBAAe,CAACyB;AAC1B,CAAC;;AAED;AACA,MAAMW,oBAA+F,GAAG;EACtGC,SAAS,EAAE;IACT,CAACC,8BAAc,CAACC,aAAa,GAAG,mBAAmB;IACnD,CAACD,8BAAc,CAACE,aAAa,GAAG;EAClC,CAAC;EACDC,eAAe,EAAE;IAAE,CAACH,8BAAc,CAACI,eAAe,GAAG;EAAW;AAClE,CAAC;;AAED;AACA,MAAMC,sBAAsB,GAAGA,CAC7BC,QAAwB,EACxBC,GAAkB,EAClBC,UAAkB,EAClBC,IAAoB,KACmC;EACvD,MAAMC,QAAQ,GAAG,IAAAC,kDAAwB,EAACJ,GAAG,CAAC,GAAG/C,sBAAsB,CAACgD,UAAU,CAAC,GAAGI,SAAS;EAE/F,IAAIF,QAAQ,EAAE;IACZ,OAAO;MAAEG,IAAI,EAAEH,QAAQ;MAAEI,MAAM,EAAEC;IAAa,CAAC;EACjD;EAEA,MAAMC,MAAM,GAAG,IAAAC,sCAAmB,EAACX,QAAQ,EAAEE,UAAU,EAAEC,IAAI,CAAC;EAC9D,MAAMS,KAAK,GAAGpB,oBAAoB,CAACU,UAAU,CAAC,GAAGD,GAAG,CAAC;EAErD,OAAOW,KAAK,GAAG;IAAEL,IAAI,EAAE,GAAGG,MAAM,CAACH,IAAI,IAAIK,KAAK,EAAE;IAAEJ,MAAM,EAAEE,MAAM,CAACF;EAAO,CAAC,GAAGE,MAAM;AACpF,CAAC;AAACG,OAAA,CAAAd,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_next","require","_healthSyncKeys","_fhirSystems","_healthDataCatalog","_toCoreHealthObservations","CORE_MEASUREMENT_CODES","HKQuantityTypeIdentifierBloodPressureSystolic","ObservationCode","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","HealthDataType","carbohydrates","caloriesEaten","ExerciseSession","exerciseMinutes","getDefaultHealthCoding","provider","key","identifier","mode","coreCode","isCoreMeasurementTypeKey","undefined","code","system","LOINC_SYSTEM","coding","getHealthDataCoding","field","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/default-health-coding.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AAEA;AACA,MAAMK,sBAA0E,GAAG;EACjFC,6CAA6C,EAAEC,qBAAe,CAACC,uBAAuB;EACtFC,8CAA8C,EAAEF,qBAAe,CAACG,wBAAwB;EACxFC,iCAAiC,EAAEJ,qBAAe,CAACK,UAAU;EAC7DC,oCAAoC,EAAEN,qBAAe,CAACO,aAAa;EACnEC,gCAAgC,EAAER,qBAAe,CAACS,WAAW;EAC7DC,wCAAwC,EAAEV,qBAAe,CAACW,iBAAiB;EAC3EC,uCAAuC,EAAEZ,qBAAe,CAACa,gBAAgB;EACzEC,uCAAuC,EAAEd,qBAAe,CAACe,gBAAgB;EACzEC,iCAAiC,EAAEhB,qBAAe,CAACiB,KAAK;EACxDC,gDAAgD,EAAElB,qBAAe,CAACmB,sBAAsB;EACxFC,wCAAwC,EAAEpB,qBAAe,CAACqB,kBAAkB;EAC5EC,+CAA+C,EAAEtB,qBAAe,CAACuB,0BAA0B;EAC3FC,8BAA8B,EAAExB,qBAAe,CAACyB,OAAO;EACvDC,uBAAuB,EAAE1B,qBAAe,CAAC2B,GAAG;EAC5CC,aAAa,EAAE5B,qBAAe,CAACC,uBAAuB;EACtD4B,SAAS,EAAE7B,qBAAe,CAACK,UAAU;EACrCyB,YAAY,EAAE9B,qBAAe,CAACO,aAAa;EAC3CwB,MAAM,EAAE/B,qBAAe,CAACS,WAAW;EACnCuB,gBAAgB,EAAEhC,qBAAe,CAACW,iBAAiB;EACnDsB,eAAe,EAAEjC,qBAAe,CAACa,gBAAgB;EACjDqB,eAAe,EAAElC,qBAAe,CAACe,gBAAgB;EACjDoB,KAAK,EAAEnC,qBAAe,CAACiB,KAAK;EAC5BmB,gBAAgB,EAAEpC,qBAAe,CAACqB,kBAAkB;EACpDgB,MAAM,EAAErC,qBAAe,CAACyB;AAC1B,CAAC;;AAED;AACA,MAAMa,oBAA+F,GAAG;EACtGC,SAAS,EAAE;IACT,CAACC,8BAAc,CAACC,aAAa,GAAG,mBAAmB;IACnD,CAACD,8BAAc,CAACE,aAAa,GAAG;EAClC,CAAC;EACDC,eAAe,EAAE;IAAE,CAACH,8BAAc,CAACI,eAAe,GAAG;EAAW;AAClE,CAAC;;AAED;AACA,MAAMC,sBAAsB,GAAGA,CAC7BC,QAAwB,EACxBC,GAAkB,EAClBC,UAAkB,EAClBC,IAAoB,KACmC;EACvD,MAAMC,QAAQ,GAAG,IAAAC,kDAAwB,EAACJ,GAAG,CAAC,GAAGjD,sBAAsB,CAACkD,UAAU,CAAC,GAAGI,SAAS;EAE/F,IAAIF,QAAQ,EAAE;IACZ,OAAO;MAAEG,IAAI,EAAEH,QAAQ;MAAEI,MAAM,EAAEC;IAAa,CAAC;EACjD;EAEA,MAAMC,MAAM,GAAG,IAAAC,sCAAmB,EAACX,QAAQ,EAAEE,UAAU,EAAEC,IAAI,CAAC;EAC9D,MAAMS,KAAK,GAAGpB,oBAAoB,CAACU,UAAU,CAAC,GAAGD,GAAG,CAAC;EAErD,OAAOW,KAAK,GAAG;IAAEL,IAAI,EAAE,GAAGG,MAAM,CAACH,IAAI,IAAIK,KAAK,EAAE;IAAEJ,MAAM,EAAEE,MAAM,CAACF;EAAO,CAAC,GAAGE,MAAM;AACpF,CAAC;AAACG,OAAA,CAAAd,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getSamplesFromHealth = void 0;
7
7
  var _reactNativeHealthkit = _interopRequireWildcard(require("@kingstinct/react-native-healthkit"));
8
- var _dateFns = require("date-fns");
9
8
  var _constants = require("../constants.js");
10
9
  var _healthUnits = require("./health-units.js");
10
+ var _healthkitDailyStatistics = require("./healthkit-daily-statistics.js");
11
11
  var _healthkitDataTypes = require("./healthkit-data-types.js");
12
+ var _healthkitQueryOptions = require("./healthkit-query-options.js");
13
+ var _healthkitSamples = require("./healthkit-samples.js");
12
14
  var _healthkitSeries = require("./healthkit-series.js");
13
15
  var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
14
16
  var _syncWindowStart = require("./sync-window-start.js");
@@ -26,63 +28,58 @@ const getSamplesFromHealth = async ({
26
28
  if (!(0, _healthkitDataTypes.isQuantityIdentifier)(typeIdentifier)) {
27
29
  throw new _healthkitDataTypes.UnsupportedHealthKitDataError(typeIdentifier, `HealthKit ${mode} mode is only supported for quantity samples.`);
28
30
  }
29
- return mode === "series" ? (0, _healthkitSeries.getHealthKitSeries)(typeIdentifier, startDate) : getDailyStatistics(typeIdentifier, mode, startDate, endDate);
31
+ return mode === "series" ? (0, _healthkitSeries.getHealthKitSeries)(typeIdentifier, startDate) : (0, _healthkitDailyStatistics.getDailyStatistics)(typeIdentifier, mode, startDate, endDate);
30
32
  }
33
+ const filter = (0, _healthkitQueryOptions.strictDateWindow)(startDate, endDate);
31
34
  const options = {
32
- from: startDate,
33
- to: endDate,
34
35
  limit: chunkSize,
35
- anchor
36
+ anchor,
37
+ filter
36
38
  };
37
- if (typeIdentifier === _reactNativeHealthkit.HKWorkoutTypeIdentifier && typeof _reactNativeHealthkit.default.queryWorkoutSamplesWithAnchor === "function") {
38
- const result = await _reactNativeHealthkit.default.queryWorkoutSamplesWithAnchor({
39
+ if (typeIdentifier === _reactNativeHealthkit.WorkoutTypeIdentifier) {
40
+ const result = await _reactNativeHealthkit.default.queryWorkoutSamplesWithAnchor(options);
41
+ return toAnchoredResult(typeIdentifier, result.workouts.map(_healthkitSamples.toWorkoutRecord), result);
42
+ }
43
+ if (typeIdentifier === _reactNativeHealthkit.ElectrocardiogramTypeIdentifier) {
44
+ const limit = Math.min(chunkSize, _constants.ECG_PAGE_SIZE);
45
+ const result = await _reactNativeHealthkit.default.queryElectrocardiogramSamplesWithAnchor({
39
46
  ...options,
40
- energyUnit: _reactNativeHealthkit.UnitOfEnergy.Kilocalories,
41
- distanceUnit: "km"
47
+ limit,
48
+ includeVoltages: true
42
49
  });
43
- if (!result) {
44
- return {
45
- data: [],
46
- anchor: undefined
47
- };
48
- }
49
- return toAnchoredResult(typeIdentifier, result);
50
+ return {
51
+ ...toAnchoredResult(typeIdentifier, result.samples.map(_healthkitSamples.toEcgRecord), result),
52
+ hasMore: result.samples.length >= limit
53
+ };
50
54
  }
51
- if (typeIdentifier === "HKDataTypeIdentifierHeartbeatSeries" && typeof _reactNativeHealthkit.default.queryHeartbeatSeriesSamplesWithAnchor === "function") {
55
+ if (typeIdentifier === "HKDataTypeIdentifierHeartbeatSeries") {
52
56
  const result = await _reactNativeHealthkit.default.queryHeartbeatSeriesSamplesWithAnchor(options);
53
- return toAnchoredResult(typeIdentifier, result);
57
+ return toAnchoredResult(typeIdentifier, result.samples.map(_healthkitSamples.toPlainSample), result);
54
58
  }
55
- if ((0, _healthkitDataTypes.isCategoryIdentifier)(typeIdentifier) && typeof _reactNativeHealthkit.default.queryCategorySamplesWithAnchor === "function") {
59
+ if ((0, _healthkitDataTypes.isCategoryIdentifier)(typeIdentifier)) {
56
60
  const result = await _reactNativeHealthkit.default.queryCategorySamplesWithAnchor(typeIdentifier, options);
57
- if (!result) {
58
- return {
59
- data: [],
60
- anchor: undefined
61
- };
62
- }
63
- return toAnchoredResult(typeIdentifier, result);
61
+ return toAnchoredResult(typeIdentifier, result.samples.map(_healthkitSamples.toPlainSample), result);
64
62
  }
65
63
  if ((0, _healthkitDataTypes.isCorrelationIdentifier)(typeIdentifier)) {
66
- const samples = await _reactNativeHealthkit.default.queryCorrelationSamples(typeIdentifier, {
67
- from: startDate,
68
- to: endDate
64
+ const correlations = await _reactNativeHealthkit.default.queryCorrelationSamples(typeIdentifier, {
65
+ limit: _healthkitQueryOptions.ALL_SAMPLES,
66
+ ascending: true,
67
+ filter
69
68
  });
70
69
  return {
71
- data: [...samples],
70
+ data: correlations.map(_healthkitSamples.toPlainCorrelation),
72
71
  anchor: undefined
73
72
  };
74
73
  }
75
74
  if (typeIdentifier === "HKStateOfMindTypeIdentifier") {
75
+ // State of mind is read by window, not by anchor, so an unlimited page keeps the window from being cut short.
76
76
  const samples = await _reactNativeHealthkit.default.queryStateOfMindSamples({
77
- from: startDate,
78
- to: endDate,
79
- // This wrapper's state-of-mind API is not anchored. A zero limit maps to
80
- // HealthKit's unbounded query and avoids silently truncating the window.
81
- limit: 0,
82
- ascending: false
77
+ limit: _healthkitQueryOptions.ALL_SAMPLES,
78
+ ascending: false,
79
+ filter
83
80
  });
84
81
  return {
85
- data: [...samples],
82
+ data: samples.map(_healthkitSamples.toPlainSample),
86
83
  anchor: undefined
87
84
  };
88
85
  }
@@ -91,13 +88,7 @@ const getSamplesFromHealth = async ({
91
88
  ...options,
92
89
  unit: (0, _healthUnits.healthUnitFor)(typeIdentifier)
93
90
  });
94
- if (!result) {
95
- return {
96
- data: [],
97
- anchor: undefined
98
- };
99
- }
100
- return toAnchoredResult(typeIdentifier, result);
91
+ return toAnchoredResult(typeIdentifier, result.samples.map(_healthkitSamples.toPlainSample), result);
101
92
  }
102
93
  throw new _healthkitDataTypes.UnsupportedHealthKitDataError(typeIdentifier, (0, _healthkitDataTypes.unsupportedHealthKitTypeReason)(typeIdentifier));
103
94
  };
@@ -112,49 +103,15 @@ const deletedRecordIds = samples => {
112
103
  };
113
104
 
114
105
  /** Maps one page of an anchored HealthKit query to the provider result shape. */
115
- const toAnchoredResult = (typeIdentifier, result) => ({
116
- data: [...result.samples],
117
- ...deletedRecordIds(result.deletedSamples),
118
- anchor: result.newAnchor ? {
106
+ const toAnchoredResult = (typeIdentifier, data, {
107
+ deletedSamples,
108
+ newAnchor
109
+ }) => ({
110
+ data,
111
+ ...deletedRecordIds(deletedSamples),
112
+ anchor: newAnchor ? {
119
113
  typeIdentifier,
120
- anchor: result.newAnchor
114
+ anchor: newAnchor
121
115
  } : undefined
122
116
  });
123
- const getDailyStatistics = async (typeIdentifier, mode, startDate, endDate) => {
124
- const firstDay = (0, _dateFns.startOfDay)(startDate);
125
- const today = (0, _dateFns.startOfDay)(endDate);
126
- const options = mode === "daily-total" ? [_reactNativeHealthkit.HKStatisticsOptions.cumulativeSum] : [_reactNativeHealthkit.HKStatisticsOptions.discreteAverage, _reactNativeHealthkit.HKStatisticsOptions.discreteMin, _reactNativeHealthkit.HKStatisticsOptions.discreteMax];
127
- const statistics = await _reactNativeHealthkit.default.queryStatisticsCollectionForQuantity(typeIdentifier, options, (0, _dateFns.startOfDay)(new Date(2001, 0, 1)), {
128
- day: 1
129
- }, firstDay, today, (0, _healthUnits.healthUnitFor)(typeIdentifier));
130
- const data = statistics.flatMap((statistic, index) => {
131
- const dayStart = (0, _dateFns.addDays)(firstDay, index);
132
- const dayEnd = (0, _dateFns.addDays)(dayStart, 1);
133
- const total = statistic.sumQuantity?.quantity;
134
- const average = statistic.averageQuantity?.quantity;
135
- const minimum = statistic.minimumQuantity?.quantity;
136
- const maximum = statistic.maximumQuantity?.quantity;
137
- if (dayEnd > today || (mode === "daily-total" ? total === undefined : average === undefined)) {
138
- return [];
139
- }
140
- return [{
141
- kind: mode,
142
- typeIdentifier,
143
- startDate: dayStart,
144
- endDate: dayEnd,
145
- unit: statistic.sumQuantity?.unit ?? statistic.averageQuantity?.unit ?? (0, _healthUnits.healthUnitFor)(typeIdentifier) ?? "1",
146
- ...(mode === "daily-total" ? {
147
- value: total
148
- } : {
149
- average,
150
- minimum,
151
- maximum
152
- })
153
- }];
154
- });
155
- return {
156
- data,
157
- anchor: undefined
158
- };
159
- };
160
117
  //# sourceMappingURL=get-samples-from-health.js.map