@ovok/native 1.12.1 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +14 -41
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js +75 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +2 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/series-recorder.js +9 -5
- package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/series-slots.js +9 -2
- package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +7 -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 +4 -5
- 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 +12 -5
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js +18 -0
- package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +4 -1
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js +70 -0
- package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +15 -42
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js +70 -0
- package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
- package/lib/module/modules/bt-management/services/bt-manager.js +2 -1
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/series-recorder.js +10 -6
- package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -1
- package/lib/module/modules/bt-management/services/series-slots.js +8 -2
- package/lib/module/modules/bt-management/services/series-slots.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +7 -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 +4 -5
- 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 +12 -5
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-sync-batch-error.js +18 -0
- package/lib/module/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
- package/lib/module/modules/data-sync/utils/healthkit-series.js +4 -1
- package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -1
- package/lib/module/modules/data-sync/utils/identify-imported-observations.js +65 -0
- package/lib/module/modules/data-sync/utils/identify-imported-observations.js.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/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +2 -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/series-recorder.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.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 +2 -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 +7 -2
- 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-sync-batch-error.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.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/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +2 -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/series-recorder.d.ts +3 -1
- package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.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 +2 -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 +7 -2
- 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-sync-batch-error.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
- package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
- package/package.json +3 -3
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +0 -108
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +0 -100
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +0 -103
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js +0 -95
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","toHealthSyncError","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","provider","dataProcessor","chunkSize","getTotalCount","getData","convert","startSync","once","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","
|
|
1
|
+
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","toHealthSyncError","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","provider","dataProcessor","chunkSize","getTotalCount","getData","convert","startSync","once","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","groups","identifyObservations","observationCount","flat","length","startedAt","Date","now","result","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","addResult","incrementSyncedObservations","deleteObservations","saveAnchors"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
import { MeasurementTypeKey } from "@ovok/core";
|
|
6
6
|
import { getHealthDataMode, HealthDataType } from "../../types/health-sync-keys.js";
|
|
7
|
-
import { generateObservationEntry } from "../../utils/generate-observation-entry.js";
|
|
8
7
|
import { getHealthRecordSourceId, getHealthRecordSyncId } from "../../utils/get-health-record-sync-id.js";
|
|
9
8
|
import { getLatestObservationDatesByCode } from "../../utils/get-latest-observation-dates-by-code.js";
|
|
10
9
|
import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date.js";
|
|
11
10
|
import { groupSamplesByInterval } from "../../utils/group-samples-by-interval.js";
|
|
12
11
|
import { groupSleepSamples } from "../../utils/group-sleep-samples.js";
|
|
13
12
|
import { getHealthDataCoding } from "../../utils/health-data-catalog.js";
|
|
13
|
+
import { identifyImportedObservations } from "../../utils/identify-imported-observations.js";
|
|
14
14
|
export class DataProcessor {
|
|
15
15
|
constructor(client, patientId, provider, chunkSize, storageManager, getTotalCountsFunction, getDataFromProviderFunction, getConverterFunction) {
|
|
16
16
|
this.client = client;
|
|
@@ -132,14 +132,13 @@ export class DataProcessor {
|
|
|
132
132
|
anchors: newAnchors
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
return
|
|
135
|
+
identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode) {
|
|
136
|
+
return identifyImportedObservations({
|
|
137
137
|
groupedObservationBodies: observationBodies,
|
|
138
138
|
provider: this.provider,
|
|
139
139
|
groupedObservationSyncIds: observationSyncIds,
|
|
140
140
|
groupedRecordIds: observationRecordIds,
|
|
141
|
-
mode
|
|
142
|
-
patientId: this.patientId
|
|
141
|
+
mode
|
|
143
142
|
});
|
|
144
143
|
}
|
|
145
144
|
getLatestValidStartDate(latestObservationDates, data, measurementTypeKey, mode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","getHealthRecordSourceId","getHealthRecordSyncId","getLatestObservationDatesByCode","getLatestValidStartDate","groupSamplesByInterval","groupSleepSamples","getHealthDataCoding","identifyImportedObservations","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","mode","getLatestObservationDates","codes","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","sleep","bloodPressure","observationBodies","group","length","observationSyncIds","observationRecordIds","hasMore","some","anchors","identifyObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","latestObservationDates","resolvedMode","resolvedData"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { OBSERVATION_SYNC_ID_SYSTEM } from "../../utils/fhir-systems.js";
|
|
3
4
|
import { getHealthRecordIdentifier } from "../../utils/get-health-record-sync-id.js";
|
|
4
|
-
import {
|
|
5
|
+
import { replacesSavedObservation } from "../../utils/replaces-saved-observation.js";
|
|
5
6
|
export class StorageManager {
|
|
6
7
|
/**
|
|
7
8
|
* Where an anchor goes when the host client has no storage.
|
|
@@ -25,10 +26,16 @@ export class StorageManager {
|
|
|
25
26
|
this.client = client;
|
|
26
27
|
this.provider = provider;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Saves a page of imported readings, each group one reading with its main observation first. An observation is
|
|
32
|
+
* created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
|
|
33
|
+
* out of that check: all of a reading's observations share it.
|
|
34
|
+
*/
|
|
35
|
+
async saveObservations(groups, mode) {
|
|
36
|
+
return this.client.saveObservationGroups(groups, {
|
|
37
|
+
identifierSystems: [OBSERVATION_SYNC_ID_SYSTEM],
|
|
38
|
+
replace: replacesSavedObservation(mode)
|
|
32
39
|
});
|
|
33
40
|
}
|
|
34
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHealthRecordIdentifier","
|
|
1
|
+
{"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","getHealthRecordIdentifier","replacesSavedObservation","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","groups","mode","saveObservationGroups","identifierSystems","replace","deleteObservations","recordIds","patientId","recordId","Set","system","value","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,10 +9,28 @@ class HealthSyncBatchError extends Error {
|
|
|
9
9
|
this.outcome = outcome;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
const isBundle = value => value?.resourceType === "Bundle";
|
|
13
|
+
|
|
14
|
+
/** What the entries a batch didn't save answered, as "409 Conflict × 2, 500 Internal Server Error × 1". */
|
|
15
|
+
const summarizeUnsavedEntries = bundle => {
|
|
16
|
+
const statusCounts = new Map();
|
|
17
|
+
for (const entry of bundle.entry ?? []) {
|
|
18
|
+
const status = entry.response?.status ?? "missing status";
|
|
19
|
+
if (!status.startsWith("2")) {
|
|
20
|
+
statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return [...statusCounts].map(([status, count]) => `${status} × ${count}`).join(", ");
|
|
24
|
+
};
|
|
12
25
|
const toHealthSyncError = error => {
|
|
13
26
|
if (error instanceof HealthSyncBatchError) {
|
|
14
27
|
return error;
|
|
15
28
|
}
|
|
29
|
+
|
|
30
|
+
// Core's save throws the response of a request that didn't save every entry.
|
|
31
|
+
if (isBundle(error)) {
|
|
32
|
+
return new HealthSyncBatchError(`Health import batch did not save every entry (${summarizeUnsavedEntries(error) || "an entry was not answered"})`, error);
|
|
33
|
+
}
|
|
16
34
|
const record = typeof error === "object" && error !== null ? error : undefined;
|
|
17
35
|
if (record?.outcome) {
|
|
18
36
|
return new HealthSyncBatchError(error instanceof Error ? error.message : String(error), undefined, record.outcome);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["toError","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","toHealthSyncError","error","record","undefined","String"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;AAEA,SAASA,OAAO,QAAQ,iCAA8B;AAEtD,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAEA,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,
|
|
1
|
+
{"version":3,"names":["toError","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","isBundle","value","resourceType","summarizeUnsavedEntries","statusCounts","Map","entry","status","response","startsWith","set","get","map","count","join","toHealthSyncError","error","record","undefined","String"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;AAEA,SAASA,OAAO,QAAQ,iCAA8B;AAEtD,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAEA,MAAMC,QAAQ,GAAIC,KAAc,IAC7BA,KAAK,EAAyBC,YAAY,KAAK,QAAQ;;AAE1D;AACA,MAAMC,uBAAuB,GAAIL,MAAc,IAAa;EAC1D,MAAMM,YAAY,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE9C,KAAK,MAAMC,KAAK,IAAIR,MAAM,CAACQ,KAAK,IAAI,EAAE,EAAE;IACtC,MAAMC,MAAM,GAAGD,KAAK,CAACE,QAAQ,EAAED,MAAM,IAAI,gBAAgB;IAEzD,IAAI,CAACA,MAAM,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;MAC3BL,YAAY,CAACM,GAAG,CAACH,MAAM,EAAE,CAACH,YAAY,CAACO,GAAG,CAACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D;EACF;EAEA,OAAO,CAAC,GAAGH,YAAY,CAAC,CACrBQ,GAAG,CAAC,CAAC,CAACL,MAAM,EAAEM,KAAK,CAAC,KAAK,GAAGN,MAAM,MAAMM,KAAK,EAAE,CAAC,CAChDC,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAED,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYvB,oBAAoB,EAAE;IACzC,OAAOuB,KAAK;EACd;;EAEA;EACA,IAAIhB,QAAQ,CAACgB,KAAK,CAAC,EAAE;IACnB,OAAO,IAAIvB,oBAAoB,CAC7B,iDAAiDU,uBAAuB,CAACa,KAAK,CAAC,IAAI,2BAA2B,GAAG,EACjHA,KACF,CAAC;EACH;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAElB,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BuB,KAAK,YAAYtB,KAAK,GAAGsB,KAAK,CAACnB,OAAO,GAAGsB,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAAClB,OACT,CAAC;EACH;EAEA,OAAOP,OAAO,CAACwB,KAAK,CAAC;AACvB,CAAC;AAED,SAASvB,oBAAoB,EAAEsB,iBAAiB","ignoreList":[]}
|
|
@@ -11,6 +11,9 @@ import { finishedHourWindows, toHourlySeries } from "./hourly-series.js";
|
|
|
11
11
|
*/
|
|
12
12
|
const getHealthKitSeries = async (typeIdentifier, startDate) => {
|
|
13
13
|
const unit = healthUnitFor(typeIdentifier);
|
|
14
|
+
|
|
15
|
+
// HealthKit gives a percentage as a fraction (0.97); a reading of it says 97 %, as a single sample's does.
|
|
16
|
+
const scale = unit === "%" ? 100 : 1;
|
|
14
17
|
const minutes = [];
|
|
15
18
|
for (const {
|
|
16
19
|
from,
|
|
@@ -26,7 +29,7 @@ const getHealthKitSeries = async (typeIdentifier, startDate) => {
|
|
|
26
29
|
if (value !== undefined) {
|
|
27
30
|
minutes.push({
|
|
28
31
|
start: new Date(from.getTime() + index * SERIES_SLOT_MS),
|
|
29
|
-
value
|
|
32
|
+
value: value * scale
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Healthkit","HKStatisticsOptions","SERIES_SLOT_MS","healthUnitFor","finishedHourWindows","toHourlySeries","getHealthKitSeries","typeIdentifier","startDate","unit","minutes","from","to","statistics","queryStatisticsCollectionForQuantity","discreteAverage","minute","forEach","statistic","index","value","averageQuantity","quantity","undefined","push","start","Date","getTime","data","anchor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-series.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAA8BC,mBAAmB,QAAQ,oCAAoC;AAE7G,SAASC,cAAc,QAAQ,iBAAc;AAG7C,SAASC,aAAa,QAAQ,mBAAgB;AAC9C,SAASC,mBAAmB,EAAeC,cAAc,QAAQ,oBAAiB;;AAElF;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAG,MAAAA,CACzBC,cAAwC,EACxCC,SAAe,KAC8C;EAC7D,MAAMC,IAAI,GAAGN,aAAa,CAACI,cAAc,CAAC;
|
|
1
|
+
{"version":3,"names":["Healthkit","HKStatisticsOptions","SERIES_SLOT_MS","healthUnitFor","finishedHourWindows","toHourlySeries","getHealthKitSeries","typeIdentifier","startDate","unit","scale","minutes","from","to","statistics","queryStatisticsCollectionForQuantity","discreteAverage","minute","forEach","statistic","index","value","averageQuantity","quantity","undefined","push","start","Date","getTime","data","anchor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-series.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAA8BC,mBAAmB,QAAQ,oCAAoC;AAE7G,SAASC,cAAc,QAAQ,iBAAc;AAG7C,SAASC,aAAa,QAAQ,mBAAgB;AAC9C,SAASC,mBAAmB,EAAeC,cAAc,QAAQ,oBAAiB;;AAElF;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAG,MAAAA,CACzBC,cAAwC,EACxCC,SAAe,KAC8C;EAC7D,MAAMC,IAAI,GAAGN,aAAa,CAACI,cAAc,CAAC;;EAE1C;EACA,MAAMG,KAAK,GAAGD,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;EACpC,MAAME,OAAsB,GAAG,EAAE;EAEjC,KAAK,MAAM;IAAEC,IAAI;IAAEC;EAAG,CAAC,IAAIT,mBAAmB,CAACI,SAAS,CAAC,EAAE;IACzD,MAAMM,UAAU,GAAG,MAAMd,SAAS,CAACe,oCAAoC,CACrER,cAAc,EACd,CAACN,mBAAmB,CAACe,eAAe,CAAC,EACrCJ,IAAI,EACJ;MAAEK,MAAM,EAAE;IAAE,CAAC,EACbL,IAAI,EACJC,EAAE,EACFJ,IACF,CAAC;;IAED;IACAK,UAAU,CAACI,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;MACvC,MAAMC,KAAK,GAAGF,SAAS,CAACG,eAAe,EAAEC,QAAQ;MAEjD,IAAIF,KAAK,KAAKG,SAAS,EAAE;QACvBb,OAAO,CAACc,IAAI,CAAC;UAAEC,KAAK,EAAE,IAAIC,IAAI,CAACf,IAAI,CAACgB,OAAO,CAAC,CAAC,GAAGR,KAAK,GAAGlB,cAAc,CAAC;UAAEmB,KAAK,EAAEA,KAAK,GAAGX;QAAM,CAAC,CAAC;MAClG;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IAAEmB,IAAI,EAAExB,cAAc,CAACE,cAAc,EAAEE,IAAI,IAAI,GAAG,EAAEE,OAAO,CAAC;IAAEmB,MAAM,EAAEN;EAAU,CAAC;AAC1F,CAAC;AAED,SAASlB,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM } from "./fhir-systems.js";
|
|
4
|
+
import { getHealthRecordIdentifier } from "./get-health-record-sync-id.js";
|
|
5
|
+
import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
|
|
6
|
+
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
7
|
+
const getObservationTime = observation => {
|
|
8
|
+
if (observation.effectivePeriod) {
|
|
9
|
+
return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
|
|
10
|
+
}
|
|
11
|
+
return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
|
|
12
|
+
};
|
|
13
|
+
const getStableObservationId = ({
|
|
14
|
+
observation,
|
|
15
|
+
provider,
|
|
16
|
+
sourceId,
|
|
17
|
+
bodyIndex
|
|
18
|
+
}) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
|
|
19
|
+
const syncIdentifier = value => ({
|
|
20
|
+
system: OBSERVATION_SYNC_ID_SYSTEM,
|
|
21
|
+
value
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
|
|
26
|
+
* changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
|
|
27
|
+
* read of the same source again saves nothing new, or writes over a total that grew.
|
|
28
|
+
*/
|
|
29
|
+
const identifyImportedObservations = ({
|
|
30
|
+
groupedObservationBodies,
|
|
31
|
+
provider,
|
|
32
|
+
groupedObservationSyncIds,
|
|
33
|
+
groupedRecordIds,
|
|
34
|
+
mode
|
|
35
|
+
}) => groupedObservationBodies.map((observationBodies, groupIndex) => {
|
|
36
|
+
const recordId = groupedRecordIds?.[groupIndex];
|
|
37
|
+
return observationBodies.map((observationBody, bodyIndex) => {
|
|
38
|
+
const syncId = getStableObservationId({
|
|
39
|
+
observation: observationBody,
|
|
40
|
+
provider,
|
|
41
|
+
sourceId: groupedObservationSyncIds?.[groupIndex],
|
|
42
|
+
bodyIndex
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// A day's total saved before sync ids named their source carries its old id; naming the total by that id as
|
|
46
|
+
// well is what lets the save find it and write over it.
|
|
47
|
+
const legacySyncId = isDailyAggregateMode(mode) && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
|
|
48
|
+
return {
|
|
49
|
+
...observationBody,
|
|
50
|
+
identifier: [...(observationBody.identifier || []), {
|
|
51
|
+
system: OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
52
|
+
value: provider
|
|
53
|
+
}, syncIdentifier(syncId), ...(legacySyncId && legacySyncId !== syncId ? [syncIdentifier(legacySyncId)] : []), ...(recordId ? [getHealthRecordIdentifier(provider, recordId)] : [])],
|
|
54
|
+
device: {
|
|
55
|
+
...(observationBody.device ?? {}),
|
|
56
|
+
identifier: {
|
|
57
|
+
system: OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
58
|
+
value: provider
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
export { getStableObservationId, identifyImportedObservations };
|
|
65
|
+
//# sourceMappingURL=identify-imported-observations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","syncIdentifier","value","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","mode","observationBodies","groupIndex","recordId","observationBody","syncId","legacySyncId","undefined","identifier","device"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/identify-imported-observations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAsCjF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,SAAS,cAAc,EAAE,EAAE,mWAqBvE,KAAK,CAAC,iBAAiB,CACxB,2BAA2B,CAAC,CAAC,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,CACxE,
|
|
1
|
+
{"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAsCjF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,SAAS,cAAc,EAAE,EAAE,mWAqBvE,KAAK,CAAC,iBAAiB,CACxB,2BAA2B,CAAC,CAAC,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,CACxE,sBAiiBF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-sync-coordinator.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-sync-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"background-sync-coordinator.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-sync-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAGL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAEjC,+GAA+G;AAC/G,KAAK,kBAAkB,CAAC,CAAC,SAAS,SAAS,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG;IACxE,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAWF,cAAM,yBAAyB,CAAC,CAAC,SAAS,SAAS;IACjD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;gBAEhC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAI1C,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAInD,OAAO,GAAI,QAAQ,cAAc,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CA6BzD;IAEK,KAAK,GAAI,UAAS,0BAA+B,KAAG,OAAO,CAAC,IAAI,CAAC,CAOnE;IAEL;;;OAGG;IACI,SAAS,QAAO,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAgB;IAEzE,4GAA4G;IACrG,SAAS,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAUrD;IAEF,OAAO,CAAC,OAAO,CAeb;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,UAAU,CAoEhB;CACH;AAED,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,CAAC;AACxD,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StoredBackgroundSyncItem } from "./background-sync-queue";
|
|
2
|
+
import { BackgroundSyncOptions } from "../../types/background-sync";
|
|
3
|
+
import { DeviceKey } from "../../types/device-key";
|
|
4
|
+
/** Hands every due result to `onResults` at once; whether they were all accepted, and so taken off the queue. */
|
|
5
|
+
declare const deliverTogether: <T extends DeviceKey>(queue: StoredBackgroundSyncItem<T>[], due: StoredBackgroundSyncItem<T>[], syncOptions: BackgroundSyncOptions<T>) => Promise<boolean>;
|
|
6
|
+
/** Hands one result to `onResult`: off the queue once accepted, otherwise tried again later, or kept as exhausted. */
|
|
7
|
+
declare const deliver: <T extends DeviceKey>(queue: StoredBackgroundSyncItem<T>[], item: StoredBackgroundSyncItem<T>, syncOptions: BackgroundSyncOptions<T>) => Promise<void>;
|
|
8
|
+
export { deliver, deliverTogether };
|
|
9
|
+
//# sourceMappingURL=background-sync-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-sync-delivery.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-sync-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EAAE,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,iHAAiH;AACjH,QAAA,MAAM,eAAe,GAAU,CAAC,SAAS,SAAS,EAChD,OAAO,wBAAwB,CAAC,CAAC,CAAC,EAAE,EACpC,KAAK,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAClC,aAAa,qBAAqB,CAAC,CAAC,CAAC,KACpC,OAAO,CAAC,OAAO,CAoBjB,CAAC;AAEF,sHAAsH;AACtH,QAAA,MAAM,OAAO,GAAU,CAAC,SAAS,SAAS,EACxC,OAAO,wBAAwB,CAAC,CAAC,CAAC,EAAE,EACpC,MAAM,wBAAwB,CAAC,CAAC,CAAC,EACjC,aAAa,qBAAqB,CAAC,CAAC,CAAC,KACpC,OAAO,CAAC,IAAI,CA4Cd,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -27,6 +27,8 @@ interface BTManagerOptions {
|
|
|
27
27
|
* results queue in. Without it they live in memory, and a closed app loses the series it was recording.
|
|
28
28
|
*/
|
|
29
29
|
seriesStorage?: BackgroundSyncStorage;
|
|
30
|
+
/** The signed-in account, which each series is recorded for. */
|
|
31
|
+
getOwnerKey?: () => string | undefined;
|
|
30
32
|
clockSync?: ClockSyncOptions;
|
|
31
33
|
/** Connect one newly discovered device automatically after the scan settles. */
|
|
32
34
|
autoConnect?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/bt-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EACV,MAAM,EAIP,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,UAAU,gBAAgB;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE7D;;;OAGG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bt-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/bt-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ interface SeriesRecorderOptions {
|
|
|
9
9
|
storage?: BackgroundSyncStorage;
|
|
10
10
|
storageKey?: string;
|
|
11
11
|
now?: () => number;
|
|
12
|
+
/** The signed-in account: a series is recorded for it and queued for it, even if someone else signs in meanwhile. */
|
|
13
|
+
getOwnerKey?: () => string | undefined;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Keeps each device's live values of a kind as a series of one-second slots, for a result policy of `"series"`. A
|
|
@@ -29,7 +31,7 @@ declare class SeriesRecorder {
|
|
|
29
31
|
constructor(options?: SeriesRecorderOptions);
|
|
30
32
|
/** Records a reading's values, or returns false for a stored record, which isn't part of a series. */
|
|
31
33
|
add: (deviceData: DeviceData, reading: Reading) => boolean;
|
|
32
|
-
/** Closes every series that
|
|
34
|
+
/** Closes every series that's over: quiet, full, or another account's (handed to that account). Call it now and then. */
|
|
33
35
|
closeIdle: () => void;
|
|
34
36
|
/** Hands closed series to `receiver`, those waiting and those still to close; `undefined` makes them wait. */
|
|
35
37
|
deliverTo: (receiver: ((result: ResultCallback<DeviceKey>) => void) | undefined) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series-recorder.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/series-recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAML,OAAO,EAMR,MAAM,gBAAgB,CAAC;AAexB,UAAU,qBAAqB;IAE7B,+FAA+F;IAC/F,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"series-recorder.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/series-recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAML,OAAO,EAMR,MAAM,gBAAgB,CAAC;AAexB,UAAU,qBAAqB;IAE7B,+FAA+F;IAC/F,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAEnB,qHAAqH;IACrH,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACxC;AAED;;;;;GAKG;AACH,cAAM,cAAc;IAUC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAA4D;IAC5E,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAEL,OAAO,GAAE,qBAA0B;IAIvE,sGAAsG;IAC/F,GAAG,GAAI,YAAY,UAAU,EAAE,SAAS,OAAO,KAAG,OAAO,CAqD9D;IAEF,yHAAyH;IAClH,SAAS,QAAO,IAAI,CAMzB;IAEF,8GAA8G;IACvG,SAAS,GAAI,UAAU,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,KAAG,IAAI,CAG5F;IAEF,sGAAsG;IAC/F,OAAO,QAAO,SAAS,UAAU,EAAE,CAAkB;IAErD,SAAS,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAMrD;IAEF,+FAA+F;IACxF,OAAO,QAAO,OAAO,CAAC,IAAI,CAAC,CAKhC;IAEF,OAAO,CAAC,GAAG,CAAoD;IAE/D,OAAO,CAAC,KAAK,CAYX;IAEF,OAAO,CAAC,OAAO,CAYb;IAEF,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,SAAS,CASf;IAEF,6EAA6E;IAC7E,OAAO,CAAC,KAAK,CAiBX;IAEF;;;OAGG;IACH,OAAO,CAAC,OAAO,CAqBb;CACH;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -17,6 +17,7 @@ type Reading = {
|
|
|
17
17
|
/** A series as it is kept and stored: plain JSON. */
|
|
18
18
|
interface RecordingSeries {
|
|
19
19
|
deviceData: DeviceData;
|
|
20
|
+
ownerKey?: string;
|
|
20
21
|
measurementTypeKey: MeasurementTypeKey;
|
|
21
22
|
start: number;
|
|
22
23
|
updatedAt: number;
|
|
@@ -24,6 +25,8 @@ interface RecordingSeries {
|
|
|
24
25
|
}
|
|
25
26
|
/** Whether a reading is a live value rather than a stored record dated earlier. */
|
|
26
27
|
declare const isLive: (reading: Reading, now: number) => boolean;
|
|
28
|
+
/** Whether a series takes no more values: it went quiet, is full, or was recorded for another account. */
|
|
29
|
+
declare const hasEnded: (series: RecordingSeries, now: number, ownerKey: string | undefined) => boolean;
|
|
27
30
|
declare const slotCount: (series: RecordingSeries) => number;
|
|
28
31
|
/** A closed series as a result: its values in `series`, their means in `data`. */
|
|
29
32
|
declare const toResult: (series: RecordingSeries) => ResultCallback<DeviceKey>;
|
|
@@ -31,6 +34,6 @@ declare const toResult: (series: RecordingSeries) => ResultCallback<DeviceKey>;
|
|
|
31
34
|
declare const toOpenSeries: (series: RecordingSeries) => OpenSeries;
|
|
32
35
|
/** What an earlier run stored, or `undefined` when nothing readable was. */
|
|
33
36
|
declare const readStored: <T>(storage: BackgroundSyncStorage, key: string) => Promise<T | undefined>;
|
|
34
|
-
export { IDLE_CLOSE_MS, isLive, MAX_SLOTS, NOT_MEASURED, readStored, slotCount, SLOT_MS, toOpenSeries, toResult, };
|
|
37
|
+
export { hasEnded, IDLE_CLOSE_MS, isLive, MAX_SLOTS, NOT_MEASURED, readStored, slotCount, SLOT_MS, toOpenSeries, toResult, };
|
|
35
38
|
export type { Reading, RecordingSeries };
|
|
36
39
|
//# sourceMappingURL=series-slots.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series-slots.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/series-slots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAsB,MAAM,0BAA0B,CAAC;AAE9E,iGAAiG;AACjG,QAAA,MAAM,OAAO,OAAQ,CAAC;AACtB,QAAA,MAAM,SAAS,OAAQ,CAAC;AACxB,QAAA,MAAM,aAAa,QAAc,CAAC;AAMlC,gFAAgF;AAChF,QAAA,MAAM,YAAY,aAA0B,CAAC;AAE7C,KAAK,OAAO,GAAG;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,qDAAqD;AACrD,UAAU,eAAe;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC9C;AAID,mFAAmF;AACnF,QAAA,MAAM,MAAM,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,KAAG,OAEmB,CAAC;AAEpE,QAAA,MAAM,SAAS,GAAI,QAAQ,eAAe,KAAG,MACgC,CAAC;AA8C9E,kFAAkF;AAClF,QAAA,MAAM,QAAQ,GAAI,QAAQ,eAAe,KAAG,cAAc,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"series-slots.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/series-slots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAsB,MAAM,0BAA0B,CAAC;AAE9E,iGAAiG;AACjG,QAAA,MAAM,OAAO,OAAQ,CAAC;AACtB,QAAA,MAAM,SAAS,OAAQ,CAAC;AACxB,QAAA,MAAM,aAAa,QAAc,CAAC;AAMlC,gFAAgF;AAChF,QAAA,MAAM,YAAY,aAA0B,CAAC;AAE7C,KAAK,OAAO,GAAG;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,qDAAqD;AACrD,UAAU,eAAe;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC9C;AAID,mFAAmF;AACnF,QAAA,MAAM,MAAM,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,KAAG,OAEmB,CAAC;AAEpE,0GAA0G;AAC1G,QAAA,MAAM,QAAQ,GAAI,QAAQ,eAAe,EAAE,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,OAC+B,CAAC;AAEvH,QAAA,MAAM,SAAS,GAAI,QAAQ,eAAe,KAAG,MACgC,CAAC;AA8C9E,kFAAkF;AAClF,QAAA,MAAM,QAAQ,GAAI,QAAQ,eAAe,KAAG,cAAc,CAAC,SAAS,CAenE,CAAC;AAEF,kDAAkD;AAClD,QAAA,MAAM,YAAY,GAAI,QAAQ,eAAe,KAAG,UAQ9C,CAAC;AAEH,4EAA4E;AAC5E,QAAA,MAAM,UAAU,GAAU,CAAC,EAAE,SAAS,qBAAqB,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAQ/F,CAAC;AAEF,OAAO,EACL,QAAQ,EACR,aAAa,EACb,MAAM,EACN,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,YAAY,EACZ,QAAQ,GACT,CAAC;AACF,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -23,6 +23,12 @@ interface BackgroundSyncOptions<T extends DeviceKey = DeviceKey> {
|
|
|
23
23
|
storage: BackgroundSyncStorage;
|
|
24
24
|
/** Called after a result is persisted. Resolve only after the result is accepted. */
|
|
25
25
|
onResult: (result: BackgroundSyncResult<T>) => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Takes every result that is due at once, so a device emptying its memory is saved in a few requests rather than one
|
|
28
|
+
* a reading. Resolve only after all of them are accepted. When it rejects, each is delivered by `onResult` on its
|
|
29
|
+
* own, so one that can't be saved doesn't hold back the rest; delivering a result twice must be harmless.
|
|
30
|
+
*/
|
|
31
|
+
onResults?: (results: BackgroundSyncResult<T>[]) => Promise<void>;
|
|
26
32
|
/**
|
|
27
33
|
* Returns the stable, opaque key for the account currently able to accept a
|
|
28
34
|
* result. Required at runtime before queueing or delivering account-owned data.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-sync.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/background-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,UAAU,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAC5D,SAAQ,cAAc,CAAC,CAAC,CAAC;IAEzB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IAEX,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IAEjB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAE7D,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,mGAAmG;IACnG,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qFAAqF;IACrF,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAEvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE,wCAAwC,CAAC;KAC9D,CAAC;IAEF,kFAAkF;IAClF,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAE9D,0EAA0E;QAC1E,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QAC5D,IAAI,CAAC,EACD,uBAAuB,CAAC,MAAM,CAAC,GAC/B,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;KAC5E,CAAC;IAEF,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"background-sync.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/background-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,UAAU,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAC5D,SAAQ,cAAc,CAAC,CAAC,CAAC;IAEzB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IAEX,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IAEjB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAE7D,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,mGAAmG;IACnG,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qFAAqF;IACrF,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAEvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE,wCAAwC,CAAC;KAC9D,CAAC;IAEF,kFAAkF;IAClF,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAE9D,0EAA0E;QAC1E,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QAC5D,IAAI,CAAC,EACD,uBAAuB,CAAC,MAAM,CAAC,GAC/B,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;KAC5E,CAAC;IAEF,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -16,6 +16,11 @@ interface ResultCallback<T extends DeviceKey> {
|
|
|
16
16
|
* `data` then holds each property's mean, from the series' start.
|
|
17
17
|
*/
|
|
18
18
|
series?: MeasurementSeries;
|
|
19
|
+
/**
|
|
20
|
+
* The account a series was recorded for. It closes later, perhaps after someone else signs in, and is queued for
|
|
21
|
+
* this account, not for whoever is signed in then.
|
|
22
|
+
*/
|
|
23
|
+
recordedFor?: string;
|
|
19
24
|
}
|
|
20
25
|
export type { ResultCallback, ResultCallbackData };
|
|
21
26
|
//# sourceMappingURL=result-callback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-callback.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/result-callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GAClD,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GACnB,KAAK,CAAC;AAEV,KAAK,kBAAkB,CAAC,CAAC,SAAS,SAAS,IAAI,YAAY,CACzD,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAC;AAEF,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAE1C,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"result-callback.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/result-callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GAClD,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GACnB,KAAK,CAAC;AAEV,KAAK,kBAAkB,CAAC,CAAC,SAAS,SAAS,IAAI,YAAY,CACzD,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAC;AAEF,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAE1C,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;
|
|
1
|
+
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;IA0H5B,OAAO,CAAC,yBAAyB;CAGlC"}
|
|
@@ -8,8 +8,8 @@ import { GetDataFromProviderProps } from "../../types/get-data-from-provider-pro
|
|
|
8
8
|
import { GetTotalCountProps } from "../../types/get-total-count-props";
|
|
9
9
|
import { HealthProvider } from "../../types/health-provider";
|
|
10
10
|
import { HealthSyncKey } from "../../types/health-sync-keys";
|
|
11
|
-
import { generateObservationEntry } from "../../utils/generate-observation-entry";
|
|
12
11
|
import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date";
|
|
12
|
+
import { identifyImportedObservations } from "../../utils/identify-imported-observations";
|
|
13
13
|
import { StorageManager } from "./storage-manager";
|
|
14
14
|
export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["dataToSync"] | AppleHealthSyncProps["dataToSync"], TTypeIdentifier extends string, TDataFromProvider> {
|
|
15
15
|
private client;
|
|
@@ -38,7 +38,7 @@ export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["d
|
|
|
38
38
|
anchor: string;
|
|
39
39
|
}>;
|
|
40
40
|
}>;
|
|
41
|
-
|
|
41
|
+
identifyObservations(observationBodies: Observation[][], observationSyncIds?: Array<string | undefined>, observationRecordIds?: Array<string | undefined>, mode?: Parameters<typeof identifyImportedObservations>[0]["mode"]): Observation[][];
|
|
42
42
|
getLatestValidStartDate(latestObservationDates: Array<{
|
|
43
43
|
code: string | undefined;
|
|
44
44
|
date: string | undefined;
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAGL,aAAa,EACd,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"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"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Bundle, Observation } from "@medplum/fhirtypes";
|
|
2
2
|
import { OvokClient } from "@ovok/core";
|
|
3
3
|
import { HealthProvider } from "../../types/health-provider";
|
|
4
|
-
import {
|
|
4
|
+
import { HealthDataMode } from "../../types/health-sync-keys";
|
|
5
5
|
export declare class StorageManager {
|
|
6
6
|
private client;
|
|
7
7
|
private provider;
|
|
@@ -24,7 +24,12 @@ export declare class StorageManager {
|
|
|
24
24
|
*/
|
|
25
25
|
private readonly inMemoryAnchors;
|
|
26
26
|
constructor(client: OvokClient, provider: HealthProvider);
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Saves a page of imported readings, each group one reading with its main observation first. An observation is
|
|
29
|
+
* created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
|
|
30
|
+
* out of that check: all of a reading's observations share it.
|
|
31
|
+
*/
|
|
32
|
+
saveObservations(groups: Observation[][], mode?: HealthDataMode): Promise<Bundle<Observation>>;
|
|
28
33
|
/** Deletes the observations imported from records the provider reports deleted. */
|
|
29
34
|
deleteObservations(recordIds: string[], patientId: string): Promise<void>;
|
|
30
35
|
saveAnchor(typeIdentifier: string, anchor: string): void;
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,qBAAa,cAAc;IAqBvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IArBlB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;gBAGnD,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,cAAc;IAGlC;;;;OAIG;IACG,gBAAgB,CACpB,MAAM,EAAE,WAAW,EAAE,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAO/B,mFAAmF;IAC7E,kBAAkB,CACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAsBhB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYxD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQrD,OAAO,CAAC,SAAS;IAIjB,WAAW,CACT,OAAO,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACzD,IAAI;CAKR"}
|
package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;
|
|
1
|
+
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;AAsBD,QAAA,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KA2B3C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
|