@ovok/native 1.11.2 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/bt-device/constants/device-model.js +85 -0
- package/lib/commonjs/modules/bt-device/constants/device-model.js.map +1 -0
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js +21 -1
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js +16 -0
- package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-device/index.js +117 -0
- package/lib/commonjs/modules/bt-device/index.js.map +1 -1
- package/lib/commonjs/modules/bt-device/types/device-kind.js +2 -0
- package/lib/commonjs/modules/bt-device/types/device-kind.js.map +1 -0
- package/lib/commonjs/modules/bt-device/utils/device-query.js +57 -0
- package/lib/commonjs/modules/bt-device/utils/device-query.js.map +1 -0
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
- package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js +25 -0
- package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js +8 -7
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js +41 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-open-series.js +18 -0
- package/lib/commonjs/modules/bt-management/hooks/use-open-series.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js +15 -0
- package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js.map +1 -0
- package/lib/commonjs/modules/bt-management/index.js +60 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +34 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +23 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +4 -3
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +10 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +6 -0
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js +4 -3
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/series-recorder.js +176 -0
- package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/series-slots.js +93 -0
- package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/measurement-series.js +6 -0
- package/lib/commonjs/modules/bt-management/types/measurement-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/constants.js +14 -1
- package/lib/commonjs/modules/data-sync/constants.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +6 -5
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +10 -7
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +10 -4
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-data.js +5 -1
- package/lib/commonjs/modules/data-sync/types/health-data.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-sync-keys.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js +19 -5
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/fhir-systems.js +4 -1
- package/lib/commonjs/modules/data-sync/utils/fhir-systems.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +10 -5
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js +18 -12
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js +6 -1
- package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +3 -2
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/health-connect-series.js +101 -0
- package/lib/commonjs/modules/data-sync/utils/health-connect-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +44 -0
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/hourly-series.js +57 -0
- package/lib/commonjs/modules/data-sync/utils/hourly-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js +13 -0
- package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
- package/lib/module/modules/bt-device/constants/device-model.js +77 -0
- package/lib/module/modules/bt-device/constants/device-model.js.map +1 -0
- package/lib/module/modules/bt-device/constants/supported-devices.js +21 -1
- package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/module/modules/bt-device/hooks/use-supported-devices.js +12 -0
- package/lib/module/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
- package/lib/module/modules/bt-device/index.js +4 -0
- package/lib/module/modules/bt-device/index.js.map +1 -1
- package/lib/module/modules/bt-device/types/device-kind.js +2 -0
- package/lib/module/modules/bt-device/types/device-kind.js.map +1 -0
- package/lib/module/modules/bt-device/utils/device-query.js +50 -0
- package/lib/module/modules/bt-device/utils/device-query.js.map +1 -0
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
- package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
- package/lib/module/modules/bt-management/constants/measurement-feedback.js +22 -0
- package/lib/module/modules/bt-management/constants/measurement-feedback.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-bt-device.js +9 -8
- package/lib/module/modules/bt-management/hooks/use-bt-device.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-bt-devices.js +37 -0
- package/lib/module/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-open-series.js +13 -0
- package/lib/module/modules/bt-management/hooks/use-open-series.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-queued-results.js +10 -0
- package/lib/module/modules/bt-management/hooks/use-queued-results.js.map +1 -0
- package/lib/module/modules/bt-management/index.js +5 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +34 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +23 -1
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +4 -3
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +10 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +6 -0
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js +4 -3
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/series-recorder.js +173 -0
- package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -0
- package/lib/module/modules/bt-management/services/series-slots.js +85 -0
- package/lib/module/modules/bt-management/services/series-slots.js.map +1 -0
- package/lib/module/modules/bt-management/types/measurement-series.js +4 -0
- package/lib/module/modules/bt-management/types/measurement-series.js.map +1 -0
- package/lib/module/modules/data-sync/constants.js +14 -1
- package/lib/module/modules/data-sync/constants.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +6 -5
- package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/data-processor.js +11 -8
- package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/storage-manager.js +10 -4
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-data.js +6 -1
- package/lib/module/modules/data-sync/types/health-data.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-sync-keys.js.map +1 -1
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js +19 -6
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/module/modules/data-sync/utils/fhir-systems.js +4 -1
- package/lib/module/modules/data-sync/utils/fhir-systems.js.map +1 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +10 -5
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js +16 -11
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js +7 -2
- package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js +3 -2
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/module/modules/data-sync/utils/health-connect-series.js +97 -0
- package/lib/module/modules/data-sync/utils/health-connect-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/healthkit-series.js +40 -0
- package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/hourly-series.js +52 -0
- package/lib/module/modules/data-sync/utils/hourly-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/replaces-saved-observation.js +8 -0
- package/lib/module/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts +35 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts +49 -0
- package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +11 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts +56 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +36 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts +26 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +11 -1
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +3 -2
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts +15 -2
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts +35 -0
- package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts +49 -0
- package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +11 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +13 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts +56 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +36 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts +26 -0
- package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +6 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts +11 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +3 -2
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts +15 -2
- package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
- package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
- package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
- package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
- package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
- package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
- package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getStableObservationId = exports.generateObservationEntry = void 0;
|
|
7
7
|
var _fhirSystems = require("./fhir-systems.js");
|
|
8
|
+
var _getHealthRecordSyncId = require("./get-health-record-sync-id.js");
|
|
8
9
|
var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
|
|
10
|
+
var _replacesSavedObservation = require("./replaces-saved-observation.js");
|
|
9
11
|
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
10
12
|
const getObservationTime = observation => {
|
|
11
13
|
if (observation.effectivePeriod) {
|
|
@@ -38,11 +40,13 @@ const generateObservationEntry = ({
|
|
|
38
40
|
groupedObservationBodies,
|
|
39
41
|
provider,
|
|
40
42
|
groupedObservationSyncIds,
|
|
43
|
+
groupedRecordIds,
|
|
41
44
|
patientId,
|
|
42
45
|
mode
|
|
43
46
|
}) => {
|
|
44
47
|
return groupedObservationBodies.map((observationBodies, groupIndex) => {
|
|
45
48
|
const fullUrls = observationBodies.map(() => `urn:uuid:${createBundleUuid()}`);
|
|
49
|
+
const recordId = groupedRecordIds?.[groupIndex];
|
|
46
50
|
return observationBodies.map((observationBody, bodyIndex) => {
|
|
47
51
|
const syncIdentifier = getStableObservationId({
|
|
48
52
|
observation: observationBody,
|
|
@@ -53,6 +57,7 @@ const generateObservationEntry = ({
|
|
|
53
57
|
const fullUrl = fullUrls[bodyIndex];
|
|
54
58
|
const searchParams = new URLSearchParams();
|
|
55
59
|
const isDailyAggregate = (0, _isDailyAggregateMode.isDailyAggregateMode)(mode);
|
|
60
|
+
const replaces = (0, _replacesSavedObservation.replacesSavedObservation)(mode);
|
|
56
61
|
const legacySyncIdentifier = isDailyAggregate && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
|
|
57
62
|
const syncIdentifiers = Array.from(new Set([syncIdentifier, legacySyncIdentifier].filter(Boolean)));
|
|
58
63
|
searchParams.set("identifier", syncIdentifiers.map(identifier => `${_fhirSystems.OBSERVATION_SYNC_ID_SYSTEM}|${identifier}`).join(","));
|
|
@@ -63,15 +68,15 @@ const generateObservationEntry = ({
|
|
|
63
68
|
const observationResource = {
|
|
64
69
|
...observationBody
|
|
65
70
|
};
|
|
66
|
-
if (
|
|
71
|
+
if (replaces) {
|
|
67
72
|
delete observationResource.id;
|
|
68
73
|
}
|
|
69
74
|
return {
|
|
70
75
|
fullUrl,
|
|
71
76
|
request: {
|
|
72
|
-
method:
|
|
73
|
-
url:
|
|
74
|
-
...(
|
|
77
|
+
method: replaces ? "PUT" : "POST",
|
|
78
|
+
url: replaces ? `Observation?${search}` : "Observation",
|
|
79
|
+
...(replaces ? {} : {
|
|
75
80
|
ifNoneExist: search
|
|
76
81
|
})
|
|
77
82
|
},
|
|
@@ -83,7 +88,7 @@ const generateObservationEntry = ({
|
|
|
83
88
|
}, {
|
|
84
89
|
system: _fhirSystems.OBSERVATION_SYNC_ID_SYSTEM,
|
|
85
90
|
value: syncIdentifier
|
|
86
|
-
}],
|
|
91
|
+
}, ...(recordId ? [(0, _getHealthRecordSyncId.getHealthRecordIdentifier)(provider, recordId)] : [])],
|
|
87
92
|
device: {
|
|
88
93
|
...(observationBody.device ?? {}),
|
|
89
94
|
identifier: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fhirSystems","require","_isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","patientId","mode","observationBodies","groupIndex","fullUrls","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","isDailyAggregateMode","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","OBSERVATION_SYNC_ID_SYSTEM","search","observationResource","request","method","url","ifNoneExist","resource","OBSERVATION_SYNC_PROVIDER_SYSTEM","value","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,
|
|
1
|
+
{"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_isDailyAggregateMode","_replacesSavedObservation","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","patientId","mode","observationBodies","groupIndex","fullUrls","recordId","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","isDailyAggregateMode","replaces","replacesSavedObservation","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","OBSERVATION_SYNC_ID_SYSTEM","search","observationResource","request","method","url","ifNoneExist","resource","OBSERVATION_SYNC_PROVIDER_SYSTEM","value","getHealthRecordIdentifier","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getHealthRecordSyncId = exports.
|
|
7
|
-
|
|
6
|
+
exports.getHealthRecordSyncId = exports.getHealthRecordSourceId = exports.getHealthRecordIdentifier = void 0;
|
|
7
|
+
var _fhirSystems = require("./fhir-systems.js");
|
|
8
8
|
const asText = value => {
|
|
9
9
|
if (value instanceof Date) {
|
|
10
10
|
return value.toISOString();
|
|
@@ -12,15 +12,22 @@ const asText = value => {
|
|
|
12
12
|
return typeof value === "string" || typeof value === "number" ? String(value) : undefined;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
/** The record's own id: `uuid` in Apple Health, `metadata.id` in Health Connect. */
|
|
16
|
+
const getHealthRecordSourceId = record => {
|
|
17
|
+
const healthRecord = record;
|
|
18
|
+
return asText(healthRecord.uuid ?? healthRecord.metadata?.id);
|
|
19
|
+
};
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
* Builds an import identity from the source record's type and interval.
|
|
17
23
|
* Values are deliberately excluded so an updated daily total replaces the
|
|
18
24
|
* previous total instead of creating a second observation.
|
|
19
25
|
*/
|
|
26
|
+
exports.getHealthRecordSourceId = getHealthRecordSourceId;
|
|
20
27
|
const getHealthRecordSyncId = (record, measurementTypeKey) => {
|
|
21
28
|
const healthRecord = record;
|
|
22
29
|
const type = asText(healthRecord.quantityType ?? healthRecord.categoryType ?? healthRecord.correlationType ?? healthRecord.recordType) ?? measurementTypeKey;
|
|
23
|
-
const sourceId =
|
|
30
|
+
const sourceId = getHealthRecordSourceId(record);
|
|
24
31
|
if (sourceId) {
|
|
25
32
|
return `${type}:${sourceId}`;
|
|
26
33
|
}
|
|
@@ -37,15 +44,14 @@ const getHealthRecordSyncId = (record, measurementTypeKey) => {
|
|
|
37
44
|
};
|
|
38
45
|
|
|
39
46
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* have no discriminator on the sample object.
|
|
47
|
+
* The identifier of every observation imported from a source record. A deletion
|
|
48
|
+
* reports only the record's id, so the import marks its observations with this
|
|
49
|
+
* and the deletion looks them up by it.
|
|
44
50
|
*/
|
|
45
51
|
exports.getHealthRecordSyncId = getHealthRecordSyncId;
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
exports.
|
|
52
|
+
const getHealthRecordIdentifier = (provider, recordId) => ({
|
|
53
|
+
system: _fhirSystems.OBSERVATION_SYNC_RECORD_SYSTEM,
|
|
54
|
+
value: `${provider}:${recordId}`
|
|
55
|
+
});
|
|
56
|
+
exports.getHealthRecordIdentifier = getHealthRecordIdentifier;
|
|
51
57
|
//# sourceMappingURL=get-health-record-sync-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_fhirSystems","require","asText","value","Date","toISOString","String","undefined","getHealthRecordSourceId","record","healthRecord","uuid","metadata","id","exports","getHealthRecordSyncId","measurementTypeKey","type","quantityType","categoryType","correlationType","recordType","sourceId","start","startDate","startTime","end","endDate","endTime","time","getHealthRecordIdentifier","provider","recordId","system","OBSERVATION_SYNC_RECORD_SYSTEM"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-health-record-sync-id.ts"],"mappings":";;;;;;AAIA,IAAAA,YAAA,GAAAC,OAAA;AAgBA,MAAMC,MAAM,GAAIC,KAAc,IAAyB;EACrD,IAAIA,KAAK,YAAYC,IAAI,EAAE;IACzB,OAAOD,KAAK,CAACE,WAAW,CAAC,CAAC;EAC5B;EAEA,OAAO,OAAOF,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GACzDG,MAAM,CAACH,KAAK,CAAC,GACbI,SAAS;AACf,CAAC;;AAED;AACA,MAAMC,uBAAuB,GAAIC,MAAe,IAAyB;EACvE,MAAMC,YAAY,GAAGD,MAA0B;EAE/C,OAAOP,MAAM,CAACQ,YAAY,CAACC,IAAI,IAAID,YAAY,CAACE,QAAQ,EAAEC,EAAE,CAAC;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAC,OAAA,CAAAN,uBAAA,GAAAA,uBAAA;AAKA,MAAMO,qBAAqB,GAAGA,CAC5BN,MAAe,EACfO,kBAA0B,KACH;EACvB,MAAMN,YAAY,GAAGD,MAA0B;EAE/C,MAAMQ,IAAI,GACRf,MAAM,CACJQ,YAAY,CAACQ,YAAY,IACvBR,YAAY,CAACS,YAAY,IACzBT,YAAY,CAACU,eAAe,IAC5BV,YAAY,CAACW,UACjB,CAAC,IAAIL,kBAAkB;EAEzB,MAAMM,QAAQ,GAAGd,uBAAuB,CAACC,MAAM,CAAC;EAEhD,IAAIa,QAAQ,EAAE;IACZ,OAAO,GAAGL,IAAI,IAAIK,QAAQ,EAAE;EAC9B;EAEA,MAAMC,KAAK,GAAGrB,MAAM,CAACQ,YAAY,CAACc,SAAS,IAAId,YAAY,CAACe,SAAS,CAAC;EACtE,MAAMC,GAAG,GAAGxB,MAAM,CAACQ,YAAY,CAACiB,OAAO,IAAIjB,YAAY,CAACkB,OAAO,CAAC;EAEhE,IAAIL,KAAK,IAAIG,GAAG,EAAE;IAChB,OAAO,GAAGT,IAAI,IAAIM,KAAK,IAAIG,GAAG,IAAIA,GAAG,IAAIH,KAAK,EAAE;EAClD;EAEA,MAAMM,IAAI,GAAG3B,MAAM,CAACQ,YAAY,CAACmB,IAAI,CAAC;EAEtC,IAAIA,IAAI,EAAE;IACR,OAAO,GAAGZ,IAAI,IAAIY,IAAI,EAAE;EAC1B;EAEA,OAAOtB,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAO,OAAA,CAAAC,qBAAA,GAAAA,qBAAA;AAKA,MAAMe,yBAAyB,GAAGA,CAChCC,QAAwB,EACxBC,QAAgB,MACA;EAChBC,MAAM,EAAEC,2CAA8B;EACtC/B,KAAK,EAAE,GAAG4B,QAAQ,IAAIC,QAAQ;AAChC,CAAC,CAAC;AAAClB,OAAA,CAAAgB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getLatestValidStartDate = void 0;
|
|
7
7
|
var _dateFns = require("date-fns");
|
|
8
|
+
var _constants = require("../constants.js");
|
|
8
9
|
var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
|
|
9
10
|
const getLatestValidStartDate = ({
|
|
10
11
|
latestObservationDates,
|
|
@@ -17,7 +18,11 @@ const getLatestValidStartDate = ({
|
|
|
17
18
|
const latestObservationDate = latestObservationDates.find(latestObservationDate => data.typeIdentifiers.some(identifier => identifier.code === latestObservationDate.code))?.date;
|
|
18
19
|
let latestValidStartDate;
|
|
19
20
|
const latestDate = latestObservationDate ? new Date(latestObservationDate) : undefined;
|
|
20
|
-
const
|
|
21
|
+
const resolvedMode = mode ?? data.mode;
|
|
22
|
+
|
|
23
|
+
// A total or an hour of a series already imported may still change, so it is read again.
|
|
24
|
+
const rereadFrom = date => resolvedMode === "series" ? (0, _dateFns.subHours)(date, _constants.SERIES_REREAD_HOURS) : (0, _isDailyAggregateMode.isDailyAggregateMode)(mode) || (0, _isDailyAggregateMode.isDailyAggregateMode)(data.mode) ? (0, _dateFns.subDays)(date, _constants.DAILY_REREAD_DAYS) : date;
|
|
25
|
+
const dates = [latestDate && rereadFrom(latestDate), data.minDate].filter(Boolean);
|
|
21
26
|
if (dates.length > 0) {
|
|
22
27
|
latestValidStartDate = new Date(Math.max(...dates.map(date => date.getTime())));
|
|
23
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dateFns","require","_isDailyAggregateMode","getLatestValidStartDate","latestObservationDates","data","mode","undefined","latestObservationDate","find","typeIdentifiers","some","identifier","code","date","latestValidStartDate","latestDate","Date","
|
|
1
|
+
{"version":3,"names":["_dateFns","require","_constants","_isDailyAggregateMode","getLatestValidStartDate","latestObservationDates","data","mode","undefined","latestObservationDate","find","typeIdentifiers","some","identifier","code","date","latestValidStartDate","latestDate","Date","resolvedMode","rereadFrom","subHours","SERIES_REREAD_HOURS","isDailyAggregateMode","subDays","DAILY_REREAD_DAYS","dates","minDate","filter","Boolean","length","Math","max","map","getTime","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-latest-valid-start-date.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAKA,IAAAE,qBAAA,GAAAF,OAAA;AAYO,MAAMG,uBAAuB,GAAGA,CAAC;EACtCC,sBAAsB;EACtBC,IAAI;EACJC;AAC4B,CAAC,KAAK;EAClC,IAAI,CAACD,IAAI,EAAE;IACT,OAAOE,SAAS;EAClB;EAEA,MAAMC,qBAAqB,GAAGJ,sBAAsB,CAACK,IAAI,CACtDD,qBAAqB,IACpBH,IAAI,CAACK,eAAe,CAACC,IAAI,CACtBC,UAAU,IAAKA,UAAU,CAACC,IAAI,KAAKL,qBAAqB,CAACK,IAC5D,CACJ,CAAC,EAAEC,IAAI;EAEP,IAAIC,oBAAsC;EAE1C,MAAMC,UAAU,GAAGR,qBAAqB,GACpC,IAAIS,IAAI,CAACT,qBAAqB,CAAC,GAC/BD,SAAS;EAEb,MAAMW,YAAY,GAAGZ,IAAI,IAAID,IAAI,CAACC,IAAI;;EAEtC;EACA,MAAMa,UAAU,GAAIL,IAAU,IAC5BI,YAAY,KAAK,QAAQ,GACrB,IAAAE,iBAAQ,EAACN,IAAI,EAAEO,8BAAmB,CAAC,GACnC,IAAAC,0CAAoB,EAAChB,IAAI,CAAC,IAAI,IAAAgB,0CAAoB,EAACjB,IAAI,CAACC,IAAI,CAAC,GAC3D,IAAAiB,gBAAO,EAACT,IAAI,EAAEU,4BAAiB,CAAC,GAChCV,IAAI;EAEZ,MAAMW,KAAK,GAAG,CAACT,UAAU,IAAIG,UAAU,CAACH,UAAU,CAAC,EAAEX,IAAI,CAACqB,OAAO,CAAC,CAACC,MAAM,CAACC,OAAO,CAAW;EAE5F,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;IACpBd,oBAAoB,GAAG,IAAIE,IAAI,CAC7Ba,IAAI,CAACC,GAAG,CAAC,GAAGN,KAAK,CAACO,GAAG,CAAElB,IAAI,IAAKA,IAAI,CAACmB,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;EACH;EAEA,OAAOlB,oBAAoB;AAC7B,CAAC;AAACmB,OAAA,CAAA/B,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.getRecordsFromHealthConnect = void 0;
|
|
|
7
7
|
var _dateFns = require("date-fns");
|
|
8
8
|
var _reactNativeHealthConnect = require("react-native-health-connect");
|
|
9
9
|
var _constants = require("../constants.js");
|
|
10
|
+
var _healthConnectSeries = require("./health-connect-series.js");
|
|
10
11
|
var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
|
|
11
12
|
var _syncWindowStart = require("./sync-window-start.js");
|
|
12
13
|
/* eslint-disable max-lines */
|
|
@@ -21,6 +22,9 @@ const getRecordsFromHealthConnect = async ({
|
|
|
21
22
|
if ((0, _isDailyAggregateMode.isDailyAggregateMode)(mode)) {
|
|
22
23
|
return getDailyAggregates(typeIdentifier, mode, _startDate);
|
|
23
24
|
}
|
|
25
|
+
if (mode === "series") {
|
|
26
|
+
return (0, _healthConnectSeries.getHealthConnectSeries)(typeIdentifier, (0, _syncWindowStart.syncWindowStart)(_startDate));
|
|
27
|
+
}
|
|
24
28
|
const savedAnchor = decodeAnchor(anchor);
|
|
25
29
|
if (savedAnchor?.phase === "changes") {
|
|
26
30
|
const changes = await (0, _reactNativeHealthConnect.getChanges)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dateFns","require","_reactNativeHealthConnect","_constants","_isDailyAggregateMode","_syncWindowStart","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","anchor","mode","isDailyAggregateMode","getDailyAggregates","savedAnchor","decodeAnchor","phase","changes","getChanges","changesToken","recordTypes","changesTokenExpired","data","upsertionChanges","map","record","deletionChanges","length","deletedRecordIds","recordId","hasMore","encodeAnchor","version","nextChangesToken","baseline","readSnapshot","pageToken","undefined","snapshotAnchor","exports","endDate","Date","toISOString","resolvedStartDate","
|
|
1
|
+
{"version":3,"names":["_dateFns","require","_reactNativeHealthConnect","_constants","_healthConnectSeries","_isDailyAggregateMode","_syncWindowStart","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","anchor","mode","isDailyAggregateMode","getDailyAggregates","getHealthConnectSeries","syncWindowStart","savedAnchor","decodeAnchor","phase","changes","getChanges","changesToken","recordTypes","changesTokenExpired","data","upsertionChanges","map","record","deletionChanges","length","deletedRecordIds","recordId","hasMore","encodeAnchor","version","nextChangesToken","baseline","readSnapshot","pageToken","undefined","snapshotAnchor","exports","endDate","Date","toISOString","resolvedStartDate","result","readRecords","timeRangeFilter","operator","startTime","endTime","pageSize","nextAnchor","records","Boolean","JSON","stringify","startsWith","parsed","parse","aggregateType","startOfDay","subDays","DEFAULT_SYNC_LOOKBACK_DAYS","today","groups","aggregateGroupByPeriod","recordType","timeRangeSlicer","period","flatMap","group","end","measurement","aggregateMeasurement","dataOrigins","kind","sourceApp","average","numberValue","BPM_AVG","unit","minimum","BPM_MIN","maximum","BPM_MAX","value","COUNT_TOTAL","nestedNumber","DISTANCE","ACTIVE_CALORIES_TOTAL","FLOORS_CLIMBED_TOTAL","scale","EXERCISE_DURATION_TOTAL","Number","isFinite","key","factor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-records-from-health-connect.ts"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AASA,IAAAE,UAAA,GAAAF,OAAA;AAMA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,qBAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AApBA;;AA2BO,MAAMM,2BAA2B,GAAG,MAAAA,CAAO;EAChDC,cAAc;EACdC,SAAS,EAAEC,UAAU;EACrBC,SAAS,GAAGC,yCAA8B;EAC1CC,MAAM;EACNC,IAAI,GAAG;AAC6B,CAAC,KAElC;EACH,IAAI,IAAAC,0CAAoB,EAACD,IAAI,CAAC,EAAE;IAC9B,OAAOE,kBAAkB,CAACR,cAAc,EAAEM,IAAI,EAAEJ,UAAU,CAAC;EAC7D;EAEA,IAAII,IAAI,KAAK,QAAQ,EAAE;IACrB,OAAO,IAAAG,2CAAsB,EAACT,cAAc,EAAE,IAAAU,gCAAe,EAACR,UAAU,CAAC,CAAC;EAC5E;EAEA,MAAMS,WAAW,GAAGC,YAAY,CAACP,MAAM,CAAC;EAExC,IAAIM,WAAW,EAAEE,KAAK,KAAK,SAAS,EAAE;IACpC,MAAMC,OAAO,GAAG,MAAM,IAAAC,oCAAU,EAAC;MAC/BC,YAAY,EAAEL,WAAW,CAACK,YAAY;MACtCC,WAAW,EAAE,CAACjB,cAAc;IAC9B,CAAC,CAAC;IAEF,IAAI,CAACc,OAAO,CAACI,mBAAmB,EAAE;MAChC,OAAO;QACLC,IAAI,EAAEL,OAAO,CAACM,gBAAgB,CAACC,GAAG,CAAC,CAAC;UAAEC;QAAO,CAAC,KAAKA,MAAM,CAAC;QAC1D,IAAIR,OAAO,CAACS,eAAe,CAACC,MAAM,GAAG,CAAC,GAClC;UACEC,gBAAgB,EAAEX,OAAO,CAACS,eAAe,CAACF,GAAG,CAC3C,CAAC;YAAEK;UAAS,CAAC,KAAKA,QACpB;QACF,CAAC,GACD,CAAC,CAAC,CAAC;QACPC,OAAO,EAAEb,OAAO,CAACa,OAAO;QACxBtB,MAAM,EAAE;UACNL,cAAc;UACdK,MAAM,EAAEuB,YAAY,CAAC;YACnBC,OAAO,EAAE,CAAC;YACVhB,KAAK,EAAE,SAAS;YAChBG,YAAY,EAAEF,OAAO,CAACgB;UACxB,CAAC;QACH;MACF,CAAC;IACH;;IAEA;IACA;IACA;IACA,MAAMC,QAAQ,GAAG,MAAM,IAAAhB,oCAAU,EAAC;MAAEE,WAAW,EAAE,CAACjB,cAAc;IAAE,CAAC,CAAC;IAEpE,OAAOgC,YAAY,CAAC;MAClBhC,cAAc;MACdC,SAAS,EAAEC,UAAU;MACrBC,SAAS;MACT8B,SAAS,EAAEC,SAAS;MACpBlB,YAAY,EAAEe,QAAQ,CAACD;IACzB,CAAC,CAAC;EACJ;EAEA,MAAMC,QAAQ,GAAGpB,WAAW,GACxBuB,SAAS,GACT,MAAM,IAAAnB,oCAAU,EAAC;IAAEE,WAAW,EAAE,CAACjB,cAAc;EAAE,CAAC,CAAC;EAEvD,MAAMmC,cAAmE,GACvExB,WAAW,EAAEE,KAAK,KAAK,UAAU,GAC7BF,WAAW,GACX;IACEkB,OAAO,EAAE,CAAC;IACVhB,KAAK,EAAE,UAAU;IACjBG,YAAY,EAAEe,QAAQ,EAAED,gBAAgB,IAAI,EAAE;IAE9C;IACA;IACA,IAAIzB,MAAM,IAAI,CAACM,WAAW,GAAG;MAAEsB,SAAS,EAAE5B;IAAO,CAAC,GAAG,CAAC,CAAC;EACzD,CAAC;EAEP,OAAO2B,YAAY,CAAC;IAClBhC,cAAc;IACdC,SAAS,EAAEC,UAAU;IACrBC,SAAS;IACT8B,SAAS,EAAEE,cAAc,CAACF,SAAS;IACnCjB,YAAY,EAAEmB,cAAc,CAACnB;EAC/B,CAAC,CAAC;AACJ,CAAC;AAACoB,OAAA,CAAArC,2BAAA,GAAAA,2BAAA;AAEF,MAAMiC,YAAY,GAAG,MAAAA,CAAO;EAC1BhC,cAAc;EACdC,SAAS;EACToC,OAAO,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAClCpC,SAAS;EACT8B,SAAS;EACTjB;AAQF,CAAC,KAAqE;EACpE,MAAMwB,iBAAiB,GAAG,IAAA9B,gCAAe,EAACT,SAAS,CAAC,CAACsC,WAAW,CAAC,CAAC;EAElE,MAAME,MAAM,GAAG,MAAM,IAAAC,qCAAW,EAAC1C,cAAc,EAAE;IAC/C2C,eAAe,EAAE;MACfC,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAEL,iBAAiB;MAC5BM,OAAO,EAAET;IACX,CAAC;IACDU,QAAQ,EAAE5C,SAAS;IACnB8B;EACF,CAAC,CAAC;EAEF,MAAMe,UAA+B,GAAGP,MAAM,CAACR,SAAS,GACpD;IACEJ,OAAO,EAAE,CAAC;IACVhB,KAAK,EAAE,UAAU;IACjBG,YAAY;IACZiB,SAAS,EAAEQ,MAAM,CAACR;EACpB,CAAC,GACD;IAAEJ,OAAO,EAAE,CAAC;IAAEhB,KAAK,EAAE,SAAS;IAAEG;EAAa,CAAC;EAElD,OAAO;IACLG,IAAI,EAAEsB,MAAM,CAACQ,OAAO;IACpBtB,OAAO,EAAEuB,OAAO,CAACT,MAAM,CAACR,SAAS,CAAC;IAClC5B,MAAM,EAAE;MACNL,cAAc;MACdK,MAAM,EAAEuB,YAAY,CAACoB,UAAU;IACjC;EACF,CAAC;AACH,CAAC;AAED,MAAMpB,YAAY,GAAIvB,MAA2B,IAC/C8C,IAAI,CAACC,SAAS,CAAC/C,MAAM,CAAC;AAExB,MAAMO,YAAY,GAChBP,MAA0B,IACU;EACpC,IAAI,CAACA,MAAM,EAAEgD,UAAU,CAAC,GAAG,CAAC,EAAE;IAC5B,OAAOnB,SAAS;EAClB;EAEA,IAAI;IACF,MAAMoB,MAAM,GAAGH,IAAI,CAACI,KAAK,CAAClD,MAAM,CAAiC;IAEjE,OAAOiD,MAAM,CAACzB,OAAO,KAAK,CAAC,KACxByB,MAAM,CAACzC,KAAK,KAAK,UAAU,IAAIyC,MAAM,CAACzC,KAAK,KAAK,SAAS,CAAC,IAC3D,OAAOyC,MAAM,CAACtC,YAAY,KAAK,QAAQ,GACpCsC,MAAM,GACPpB,SAAS;EACf,CAAC,CAAC,MAAM;IACN,OAAOA,SAAS;EAClB;AACF,CAAC;AAED,MAAM1B,kBAAkB,GAAG,MAAAA,CACzBR,cAA0B,EAC1BM,IAA8D,EAC9DJ,UAAmB,KACmD;EACtE,MAAMsD,aAAa,GAAGxD,cAA2C;EAEjE,MAAMC,SAAS,GAAGC,UAAU,GACxB,IAAAuD,mBAAU,EAAC,IAAInB,IAAI,CAACpC,UAAU,CAAC,CAAC,GAChC,IAAAuD,mBAAU,EAAC,IAAAC,gBAAO,EAAC,IAAIpB,IAAI,CAAC,CAAC,EAAEqB,qCAA0B,CAAC,CAAC;EAE/D,MAAMC,KAAK,GAAG,IAAAH,mBAAU,EAAC,IAAInB,IAAI,CAAC,CAAC,CAAC;EAEpC,MAAMuB,MAAM,GAAG,MAAM,IAAAC,gDAAsB,EAAC;IAC1CC,UAAU,EAAEP,aAAa;IACzBb,eAAe,EAAE;MACfC,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAE5C,SAAS,CAACsC,WAAW,CAAC,CAAC;MAClCO,OAAO,EAAEc,KAAK,CAACrB,WAAW,CAAC;IAC7B,CAAC;IACDyB,eAAe,EAAE;MAAEC,MAAM,EAAE,MAAM;MAAEzC,MAAM,EAAE;IAAE;EAC/C,CAAC,CAAC;EAEF,MAAML,IAAI,GAAG0C,MAAM,CAACK,OAAO,CAAEC,KAAK,IAAK;IACrC,MAAMC,GAAG,GAAG,IAAI9B,IAAI,CAAC6B,KAAK,CAACrB,OAAO,CAAC;IAEnC,IAAIsB,GAAG,GAAGR,KAAK,EAAE;MACf,OAAO,EAAE;IACX;IAEA,MAAMnB,MAAM,GAAG0B,KAAK,CAAC1B,MAA4C;IACjE,MAAM4B,WAAW,GAAGC,oBAAoB,CAACtE,cAAc,EAAEyC,MAAM,EAAEnC,IAAI,CAAC;IAEtE,IAAI,CAAC+D,WAAW,EAAE;MAChB,OAAO,EAAE;IACX;IAEA,MAAME,WAAW,GAAG9B,MAAM,CAAC8B,WAAmC;IAE9D,OAAO,CACL;MACEC,IAAI,EAAElE,IAAI;MACVN,cAAc;MACdC,SAAS,EAAE,IAAIqC,IAAI,CAAC6B,KAAK,CAACtB,SAAS,CAAC;MACpCR,OAAO,EAAE+B,GAAG;MACZK,SAAS,EAAEF,WAAW,GAAG,CAAC,CAAC;MAC3B,GAAGF;IACL,CAAC,CACF;EACH,CAAC,CAAC;EAEF,OAAO;IAAElD,IAAI;IAAEd,MAAM,EAAE6B;EAAU,CAAC;AACpC,CAAC;AAED,MAAMoC,oBAAoB,GAAGA,CAC3BtE,cAA0B,EAC1ByC,MAA+B,EAC/BnC,IAA8D,KAI/C;EACf,IAAIA,IAAI,KAAK,eAAe,IAAIN,cAAc,KAAK,WAAW,EAAE;IAC9D,MAAM0E,OAAO,GAAGC,WAAW,CAAClC,MAAM,CAACmC,OAAO,CAAC;IAE3C,OAAOF,OAAO,KAAKxC,SAAS,GACxBA,SAAS,GACT;MACE2C,IAAI,EAAE,WAAW;MACjBH,OAAO;MACPI,OAAO,EAAEH,WAAW,CAAClC,MAAM,CAACsC,OAAO,CAAC;MACpCC,OAAO,EAAEL,WAAW,CAAClC,MAAM,CAACwC,OAAO;IACrC,CAAC;EACP;EAEA,QAAQjF,cAAc;IACpB,KAAK,OAAO;MACV,OAAOkF,KAAK,CAACP,WAAW,CAAClC,MAAM,CAAC0C,WAAW,CAAC,EAAE,OAAO,CAAC;IACxD,KAAK,UAAU;MACb,OAAOD,KAAK,CAACE,YAAY,CAAC3C,MAAM,CAAC4C,QAAQ,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC;IACnE,KAAK,sBAAsB;MACzB,OAAOH,KAAK,CACVE,YAAY,CAAC3C,MAAM,CAAC6C,qBAAqB,EAAE,gBAAgB,CAAC,EAC5D,MACF,CAAC;IACH,KAAK,eAAe;MAClB,OAAOJ,KAAK,CAACP,WAAW,CAAClC,MAAM,CAAC8C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACjE,KAAK,iBAAiB;MACpB,OAAOL,KAAK,CACVM,KAAK,CAACJ,YAAY,CAAC3C,MAAM,CAACgD,uBAAuB,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EACxE,KACF,CAAC;IACH;MACE,OAAOvD,SAAS;EACpB;AACF,CAAC;AAED,MAAMgD,KAAK,GAAGA,CACZb,WAA+B,EAC/BQ,IAAY,KAEZR,WAAW,KAAKnC,SAAS,GAAGA,SAAS,GAAG;EAAE2C,IAAI;EAAEK,KAAK,EAAEb;AAAY,CAAC;AAEtE,MAAMM,WAAW,GAAIO,KAAc,IACjC,OAAOA,KAAK,KAAK,QAAQ,IAAIQ,MAAM,CAACC,QAAQ,CAACT,KAAK,CAAC,GAAGA,KAAK,GAAGhD,SAAS;AAEzE,MAAMkD,YAAY,GAAGA,CAACF,KAAc,EAAEU,GAAW,KAC/CjB,WAAW,CAAEO,KAAK,GAA2CU,GAAG,CAAC,CAAC;AAEpE,MAAMJ,KAAK,GAAGA,CAACN,KAAyB,EAAEW,MAAc,KACtDX,KAAK,KAAKhD,SAAS,GAAGA,SAAS,GAAGgD,KAAK,GAAGW,MAAM","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ var _dateFns = require("date-fns");
|
|
|
9
9
|
var _constants = require("../constants.js");
|
|
10
10
|
var _healthUnits = require("./health-units.js");
|
|
11
11
|
var _healthkitDataTypes = require("./healthkit-data-types.js");
|
|
12
|
+
var _healthkitSeries = require("./healthkit-series.js");
|
|
12
13
|
var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
|
|
13
14
|
var _syncWindowStart = require("./sync-window-start.js");
|
|
14
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -21,11 +22,11 @@ const getSamplesFromHealth = async ({
|
|
|
21
22
|
}) => {
|
|
22
23
|
const startDate = (0, _syncWindowStart.syncWindowStart)(_startDate);
|
|
23
24
|
const endDate = new Date();
|
|
24
|
-
if ((0, _isDailyAggregateMode.isDailyAggregateMode)(mode)) {
|
|
25
|
+
if ((0, _isDailyAggregateMode.isDailyAggregateMode)(mode) || mode === "series") {
|
|
25
26
|
if (!(0, _healthkitDataTypes.isQuantityIdentifier)(typeIdentifier)) {
|
|
26
27
|
throw new _healthkitDataTypes.UnsupportedHealthKitDataError(typeIdentifier, `HealthKit ${mode} mode is only supported for quantity samples.`);
|
|
27
28
|
}
|
|
28
|
-
return getDailyStatistics(typeIdentifier, mode, startDate, endDate);
|
|
29
|
+
return mode === "series" ? (0, _healthkitSeries.getHealthKitSeries)(typeIdentifier, startDate) : getDailyStatistics(typeIdentifier, mode, startDate, endDate);
|
|
29
30
|
}
|
|
30
31
|
const options = {
|
|
31
32
|
from: startDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","_dateFns","_constants","_healthUnits","_healthkitDataTypes","_isDailyAggregateMode","_syncWindowStart","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","mode","syncWindowStart","endDate","Date","isDailyAggregateMode","isQuantityIdentifier","UnsupportedHealthKitDataError","getDailyStatistics","options","from","to","limit","HKWorkoutTypeIdentifier","Healthkit","queryWorkoutSamplesWithAnchor","result","energyUnit","UnitOfEnergy","Kilocalories","distanceUnit","data","undefined","toAnchoredResult","queryHeartbeatSeriesSamplesWithAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","isCorrelationIdentifier","samples","queryCorrelationSamples","queryStateOfMindSamples","ascending","queryQuantitySamplesWithAnchor","unit","healthUnitFor","unsupportedHealthKitTypeReason","exports","deletedRecordIds","recordIds","map","uuid","length","deletedSamples","newAnchor","firstDay","startOfDay","today","HKStatisticsOptions","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","addDays","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,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAQA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAMA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAOA,IAAAK,
|
|
1
|
+
{"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","_dateFns","_constants","_healthUnits","_healthkitDataTypes","_healthkitSeries","_isDailyAggregateMode","_syncWindowStart","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","mode","syncWindowStart","endDate","Date","isDailyAggregateMode","isQuantityIdentifier","UnsupportedHealthKitDataError","getHealthKitSeries","getDailyStatistics","options","from","to","limit","HKWorkoutTypeIdentifier","Healthkit","queryWorkoutSamplesWithAnchor","result","energyUnit","UnitOfEnergy","Kilocalories","distanceUnit","data","undefined","toAnchoredResult","queryHeartbeatSeriesSamplesWithAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","isCorrelationIdentifier","samples","queryCorrelationSamples","queryStateOfMindSamples","ascending","queryQuantitySamplesWithAnchor","unit","healthUnitFor","unsupportedHealthKitTypeReason","exports","deletedRecordIds","recordIds","map","uuid","length","deletedSamples","newAnchor","firstDay","startOfDay","today","HKStatisticsOptions","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","addDays","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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getHealthConnectSeries = void 0;
|
|
7
|
+
var _reactNativeHealthConnect = require("react-native-health-connect");
|
|
8
|
+
var _constants = require("../constants.js");
|
|
9
|
+
var _convertGenericHealthData = require("./convert-generic-health-data.js");
|
|
10
|
+
var _hourlySeries = require("./hourly-series.js");
|
|
11
|
+
const HEART_RATE_UNIT = "count/min";
|
|
12
|
+
const between = (from, to) => ({
|
|
13
|
+
operator: "between",
|
|
14
|
+
startTime: from.toISOString(),
|
|
15
|
+
endTime: to.toISOString()
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
/** Health Connect's own average a minute, which follows the user's app priority where sources overlap. */
|
|
19
|
+
const heartRateMinutes = async (from, to) => {
|
|
20
|
+
const groups = await (0, _reactNativeHealthConnect.aggregateGroupByDuration)({
|
|
21
|
+
recordType: "HeartRate",
|
|
22
|
+
timeRangeFilter: between(from, to),
|
|
23
|
+
timeRangeSlicer: {
|
|
24
|
+
duration: "MINUTES",
|
|
25
|
+
length: 1
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return groups.flatMap(group => {
|
|
29
|
+
const average = group.result.BPM_AVG;
|
|
30
|
+
return typeof average === "number" && Number.isFinite(average) ? [{
|
|
31
|
+
start: new Date(group.startTime),
|
|
32
|
+
value: average
|
|
33
|
+
}] : [];
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** Records of a type Health Connect doesn't average, such as SpO₂ and respiratory rate, averaged a minute here. */
|
|
38
|
+
const recordMinutes = async (typeIdentifier, from, to) => {
|
|
39
|
+
const sums = new Map();
|
|
40
|
+
let unit;
|
|
41
|
+
let pageToken;
|
|
42
|
+
do {
|
|
43
|
+
const page = await (0, _reactNativeHealthConnect.readRecords)(typeIdentifier, {
|
|
44
|
+
timeRangeFilter: between(from, to),
|
|
45
|
+
pageToken
|
|
46
|
+
});
|
|
47
|
+
page.records.forEach(record => {
|
|
48
|
+
const raw = record;
|
|
49
|
+
const measured = (0, _convertGenericHealthData.extractValue)(raw);
|
|
50
|
+
const time = raw.time ?? raw.startTime;
|
|
51
|
+
if (!measured || typeof time !== "string") {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const minute = Math.floor(new Date(time).getTime() / _constants.SERIES_SLOT_MS) * _constants.SERIES_SLOT_MS;
|
|
55
|
+
const sum = sums.get(minute) ?? {
|
|
56
|
+
total: 0,
|
|
57
|
+
count: 0
|
|
58
|
+
};
|
|
59
|
+
sums.set(minute, {
|
|
60
|
+
total: sum.total + measured.value,
|
|
61
|
+
count: sum.count + 1
|
|
62
|
+
});
|
|
63
|
+
unit ??= measured.unit;
|
|
64
|
+
});
|
|
65
|
+
pageToken = page.pageToken;
|
|
66
|
+
} while (pageToken);
|
|
67
|
+
return {
|
|
68
|
+
unit,
|
|
69
|
+
minutes: [...sums.entries()].map(([minute, {
|
|
70
|
+
total,
|
|
71
|
+
count
|
|
72
|
+
}]) => ({
|
|
73
|
+
start: new Date(minute),
|
|
74
|
+
value: total / count
|
|
75
|
+
}))
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/** The finished hours from `startDate`, one `series` item an hour, read a day at a time. */
|
|
80
|
+
const getHealthConnectSeries = async (typeIdentifier, startDate) => {
|
|
81
|
+
const minutes = [];
|
|
82
|
+
let unit = typeIdentifier === "HeartRate" ? HEART_RATE_UNIT : undefined;
|
|
83
|
+
for (const {
|
|
84
|
+
from,
|
|
85
|
+
to
|
|
86
|
+
} of (0, _hourlySeries.finishedHourWindows)(startDate)) {
|
|
87
|
+
if (typeIdentifier === "HeartRate") {
|
|
88
|
+
minutes.push(...(await heartRateMinutes(from, to)));
|
|
89
|
+
} else {
|
|
90
|
+
const read = await recordMinutes(typeIdentifier, from, to);
|
|
91
|
+
minutes.push(...read.minutes);
|
|
92
|
+
unit ??= read.unit;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
data: (0, _hourlySeries.toHourlySeries)(typeIdentifier, unit ?? "1", minutes),
|
|
97
|
+
anchor: undefined
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
exports.getHealthConnectSeries = getHealthConnectSeries;
|
|
101
|
+
//# sourceMappingURL=health-connect-series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeHealthConnect","require","_constants","_convertGenericHealthData","_hourlySeries","HEART_RATE_UNIT","between","from","to","operator","startTime","toISOString","endTime","heartRateMinutes","groups","aggregateGroupByDuration","recordType","timeRangeFilter","timeRangeSlicer","duration","length","flatMap","group","average","result","BPM_AVG","Number","isFinite","start","Date","value","recordMinutes","typeIdentifier","sums","Map","unit","pageToken","page","readRecords","records","forEach","record","raw","measured","extractValue","time","minute","Math","floor","getTime","SERIES_SLOT_MS","sum","get","total","count","set","minutes","entries","map","getHealthConnectSeries","startDate","undefined","finishedHourWindows","push","read","data","toHourlySeries","anchor","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/health-connect-series.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getHealthKitSeries = void 0;
|
|
7
|
+
var _reactNativeHealthkit = _interopRequireWildcard(require("@kingstinct/react-native-healthkit"));
|
|
8
|
+
var _constants = require("../constants.js");
|
|
9
|
+
var _healthUnits = require("./health-units.js");
|
|
10
|
+
var _hourlySeries = require("./hourly-series.js");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
+
/**
|
|
13
|
+
* The finished hours from `startDate`, one `series` item an hour, from HealthKit's own average a minute: it follows
|
|
14
|
+
* the user's source priority where a watch and another app both recorded. Read a day at a time.
|
|
15
|
+
*/
|
|
16
|
+
const getHealthKitSeries = async (typeIdentifier, startDate) => {
|
|
17
|
+
const unit = (0, _healthUnits.healthUnitFor)(typeIdentifier);
|
|
18
|
+
const minutes = [];
|
|
19
|
+
for (const {
|
|
20
|
+
from,
|
|
21
|
+
to
|
|
22
|
+
} of (0, _hourlySeries.finishedHourWindows)(startDate)) {
|
|
23
|
+
const statistics = await _reactNativeHealthkit.default.queryStatisticsCollectionForQuantity(typeIdentifier, [_reactNativeHealthkit.HKStatisticsOptions.discreteAverage], from, {
|
|
24
|
+
minute: 1
|
|
25
|
+
}, from, to, unit);
|
|
26
|
+
|
|
27
|
+
// One statistic per minute from `from`, empty minutes included.
|
|
28
|
+
statistics.forEach((statistic, index) => {
|
|
29
|
+
const value = statistic.averageQuantity?.quantity;
|
|
30
|
+
if (value !== undefined) {
|
|
31
|
+
minutes.push({
|
|
32
|
+
start: new Date(from.getTime() + index * _constants.SERIES_SLOT_MS),
|
|
33
|
+
value
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
data: (0, _hourlySeries.toHourlySeries)(typeIdentifier, unit ?? "1", minutes),
|
|
40
|
+
anchor: undefined
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
exports.getHealthKitSeries = getHealthKitSeries;
|
|
44
|
+
//# sourceMappingURL=healthkit-series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","_constants","_healthUnits","_hourlySeries","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getHealthKitSeries","typeIdentifier","startDate","unit","healthUnitFor","minutes","from","to","finishedHourWindows","statistics","Healthkit","queryStatisticsCollectionForQuantity","HKStatisticsOptions","discreteAverage","minute","forEach","statistic","index","value","averageQuantity","quantity","undefined","push","start","Date","getTime","SERIES_SLOT_MS","data","toHourlySeries","anchor","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-series.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAAmF,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEnF;AACA;AACA;AACA;AACA,MAAMkB,kBAAkB,GAAG,MAAAA,CACzBC,cAAwC,EACxCC,SAAe,KAC8C;EAC7D,MAAMC,IAAI,GAAG,IAAAC,0BAAa,EAACH,cAAc,CAAC;EAC1C,MAAMI,OAAsB,GAAG,EAAE;EAEjC,KAAK,MAAM;IAAEC,IAAI;IAAEC;EAAG,CAAC,IAAI,IAAAC,iCAAmB,EAACN,SAAS,CAAC,EAAE;IACzD,MAAMO,UAAU,GAAG,MAAMC,6BAAS,CAACC,oCAAoC,CACrEV,cAAc,EACd,CAACW,yCAAmB,CAACC,eAAe,CAAC,EACrCP,IAAI,EACJ;MAAEQ,MAAM,EAAE;IAAE,CAAC,EACbR,IAAI,EACJC,EAAE,EACFJ,IACF,CAAC;;IAED;IACAM,UAAU,CAACM,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;MACvC,MAAMC,KAAK,GAAGF,SAAS,CAACG,eAAe,EAAEC,QAAQ;MAEjD,IAAIF,KAAK,KAAKG,SAAS,EAAE;QACvBhB,OAAO,CAACiB,IAAI,CAAC;UAAEC,KAAK,EAAE,IAAIC,IAAI,CAAClB,IAAI,CAACmB,OAAO,CAAC,CAAC,GAAGR,KAAK,GAAGS,yBAAc,CAAC;UAAER;QAAM,CAAC,CAAC;MACnF;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IAAES,IAAI,EAAE,IAAAC,4BAAc,EAAC3B,cAAc,EAAEE,IAAI,IAAI,GAAG,EAAEE,OAAO,CAAC;IAAEwB,MAAM,EAAER;EAAU,CAAC;AAC1F,CAAC;AAACS,OAAA,CAAA9B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.toHourlySeries = exports.finishedHourWindows = void 0;
|
|
7
|
+
var _constants = require("../constants.js");
|
|
8
|
+
const HOUR_MS = 3_600_000;
|
|
9
|
+
const DAY_MS = 24 * HOUR_MS;
|
|
10
|
+
|
|
11
|
+
/** A minute's value: the average of what was measured in it. */
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Per-minute values grouped into hours (UTC, so a day never has two 01:00s), each with one slot a minute and `null`
|
|
15
|
+
* for a minute without a value. Hours without any value are left out.
|
|
16
|
+
*/
|
|
17
|
+
const toHourlySeries = (typeIdentifier, unit, minutes) => {
|
|
18
|
+
const hours = new Map();
|
|
19
|
+
minutes.forEach(({
|
|
20
|
+
start,
|
|
21
|
+
value
|
|
22
|
+
}) => {
|
|
23
|
+
const time = start.getTime();
|
|
24
|
+
const hour = Math.floor(time / HOUR_MS) * HOUR_MS;
|
|
25
|
+
const slots = hours.get(hour) ?? Array(HOUR_MS / _constants.SERIES_SLOT_MS).fill(null);
|
|
26
|
+
slots[Math.floor((time - hour) / _constants.SERIES_SLOT_MS)] = value;
|
|
27
|
+
hours.set(hour, slots);
|
|
28
|
+
});
|
|
29
|
+
return [...hours.entries()].sort(([first], [second]) => first - second).map(([hour, values]) => ({
|
|
30
|
+
kind: "series",
|
|
31
|
+
typeIdentifier,
|
|
32
|
+
startDate: new Date(hour),
|
|
33
|
+
endDate: new Date(hour + HOUR_MS),
|
|
34
|
+
unit,
|
|
35
|
+
periodMs: _constants.SERIES_SLOT_MS,
|
|
36
|
+
values
|
|
37
|
+
}));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The finished hours from `start`'s hour up to the current one, in windows of a day at most: one health-store query
|
|
42
|
+
* each, so a first import of months doesn't ask for everything at once.
|
|
43
|
+
*/
|
|
44
|
+
exports.toHourlySeries = toHourlySeries;
|
|
45
|
+
const finishedHourWindows = (start, now = new Date()) => {
|
|
46
|
+
const windows = [];
|
|
47
|
+
const end = Math.floor(now.getTime() / HOUR_MS) * HOUR_MS;
|
|
48
|
+
for (let from = Math.floor(start.getTime() / HOUR_MS) * HOUR_MS; from < end; from += DAY_MS) {
|
|
49
|
+
windows.push({
|
|
50
|
+
from: new Date(from),
|
|
51
|
+
to: new Date(Math.min(from + DAY_MS, end))
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return windows;
|
|
55
|
+
};
|
|
56
|
+
exports.finishedHourWindows = finishedHourWindows;
|
|
57
|
+
//# sourceMappingURL=hourly-series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","HOUR_MS","DAY_MS","toHourlySeries","typeIdentifier","unit","minutes","hours","Map","forEach","start","value","time","getTime","hour","Math","floor","slots","get","Array","SERIES_SLOT_MS","fill","set","entries","sort","first","second","map","values","kind","startDate","Date","endDate","periodMs","exports","finishedHourWindows","now","windows","end","from","push","to","min"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/hourly-series.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGA,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,MAAM,GAAG,EAAE,GAAGD,OAAO;;AAE3B;;AAGA;AACA;AACA;AACA;AACA,MAAME,cAAc,GAAGA,CACrBC,cAAsB,EACtBC,IAAY,EACZC,OAA+B,KACR;EACvB,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAA+B,CAAC;EAErDF,OAAO,CAACG,OAAO,CAAC,CAAC;IAAEC,KAAK;IAAEC;EAAM,CAAC,KAAK;IACpC,MAAMC,IAAI,GAAGF,KAAK,CAACG,OAAO,CAAC,CAAC;IAC5B,MAAMC,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,GAAGX,OAAO,CAAC,GAAGA,OAAO;IACjD,MAAMgB,KAAK,GAAGV,KAAK,CAACW,GAAG,CAACJ,IAAI,CAAC,IAAIK,KAAK,CAAgBlB,OAAO,GAAGmB,yBAAc,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IAE1FJ,KAAK,CAACF,IAAI,CAACC,KAAK,CAAC,CAACJ,IAAI,GAAGE,IAAI,IAAIM,yBAAc,CAAC,CAAC,GAAGT,KAAK;IACzDJ,KAAK,CAACe,GAAG,CAACR,IAAI,EAAEG,KAAK,CAAC;EACxB,CAAC,CAAC;EAEF,OAAO,CAAC,GAAGV,KAAK,CAACgB,OAAO,CAAC,CAAC,CAAC,CACxBC,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,EAAE,CAACC,MAAM,CAAC,KAAKD,KAAK,GAAGC,MAAM,CAAC,CAC3CC,GAAG,CAAC,CAAC,CAACb,IAAI,EAAEc,MAAM,CAAC,MAAM;IACxBC,IAAI,EAAE,QAAQ;IACdzB,cAAc;IACd0B,SAAS,EAAE,IAAIC,IAAI,CAACjB,IAAI,CAAC;IACzBkB,OAAO,EAAE,IAAID,IAAI,CAACjB,IAAI,GAAGb,OAAO,CAAC;IACjCI,IAAI;IACJ4B,QAAQ,EAAEb,yBAAc;IACxBQ;EACF,CAAC,CAAC,CAAC;AACP,CAAC;;AAED;AACA;AACA;AACA;AAHAM,OAAA,CAAA/B,cAAA,GAAAA,cAAA;AAIA,MAAMgC,mBAAmB,GAAGA,CAACzB,KAAW,EAAE0B,GAAG,GAAG,IAAIL,IAAI,CAAC,CAAC,KAAsC;EAC9F,MAAMM,OAAwC,GAAG,EAAE;EACnD,MAAMC,GAAG,GAAGvB,IAAI,CAACC,KAAK,CAACoB,GAAG,CAACvB,OAAO,CAAC,CAAC,GAAGZ,OAAO,CAAC,GAAGA,OAAO;EAEzD,KAAK,IAAIsC,IAAI,GAAGxB,IAAI,CAACC,KAAK,CAACN,KAAK,CAACG,OAAO,CAAC,CAAC,GAAGZ,OAAO,CAAC,GAAGA,OAAO,EAAEsC,IAAI,GAAGD,GAAG,EAAEC,IAAI,IAAIrC,MAAM,EAAE;IAC3FmC,OAAO,CAACG,IAAI,CAAC;MAAED,IAAI,EAAE,IAAIR,IAAI,CAACQ,IAAI,CAAC;MAAEE,EAAE,EAAE,IAAIV,IAAI,CAAChB,IAAI,CAAC2B,GAAG,CAACH,IAAI,GAAGrC,MAAM,EAAEoC,GAAG,CAAC;IAAE,CAAC,CAAC;EACpF;EAEA,OAAOD,OAAO;AAChB,CAAC;AAACH,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.replacesSavedObservation = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Modes whose observation is written over when its source changes, a day's total that grew or an hour of a series
|
|
9
|
+
* that got more minutes, instead of being created once.
|
|
10
|
+
*/
|
|
11
|
+
const replacesSavedObservation = mode => mode === "daily-total" || mode === "daily-summary" || mode === "series";
|
|
12
|
+
exports.replacesSavedObservation = replacesSavedObservation;
|
|
13
|
+
//# sourceMappingURL=replaces-saved-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["replacesSavedObservation","mode","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/replaces-saved-observation.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACO,MAAMA,wBAAwB,GAAIC,IAAqB,IAC5DA,IAAI,KAAK,aAAa,IAAIA,IAAI,KAAK,eAAe,IAAIA,IAAI,KAAK,QAAQ;AAACC,OAAA,CAAAF,wBAAA,GAAAA,wBAAA","ignoreList":[]}
|