@ovok/native 1.6.8 → 1.6.9
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/data-sync/constants.js +13 -0
- package/lib/commonjs/modules/data-sync/constants.js.map +1 -0
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +6 -3
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js +10 -3
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +2 -1
- 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 +2 -1
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/retry-save.js +68 -24
- package/lib/commonjs/modules/data-sync/utils/retry-save.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +88 -16
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +1 -1
- package/lib/module/modules/data-sync/constants.js +9 -0
- package/lib/module/modules/data-sync/constants.js.map +1 -0
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +6 -3
- package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js +10 -3
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +1 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +2 -1
- 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 +2 -1
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/module/modules/data-sync/utils/retry-save.js +68 -24
- package/lib/module/modules/data-sync/utils/retry-save.js.map +1 -1
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js +88 -16
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -0
- 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/sync-progress-manager.d.ts +2 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- 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.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/retry-save.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +5 -3
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts +7 -0
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -0
- 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/sync-progress-manager.d.ts +2 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +2 -0
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- 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.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/retry-save.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +5 -3
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/* eslint-disable max-lines */
|
|
4
4
|
|
|
5
5
|
import { recordOvokDuration, recordOvokMetric, withOvokSpan } from "../../helpers/utils/telemetry.js";
|
|
6
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
6
7
|
import { getHealthDataMode } from "../types/health-sync-keys.js";
|
|
7
8
|
import { isSyncRetryCancelled, withSyncRetries } from "../utils/retry-save.js";
|
|
8
9
|
import { DataProcessor } from "./managers/data-processor.js";
|
|
@@ -18,7 +19,7 @@ export class BaseHealthSyncService {
|
|
|
18
19
|
this.progressManager = new SyncProgressManager(props.updateProgress, props.dataToSync);
|
|
19
20
|
this.stateManager = new SyncStateManager();
|
|
20
21
|
this.storageManager = new StorageManager(props.client, this.getProviderName());
|
|
21
|
-
this.dataProcessor = new DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ??
|
|
22
|
+
this.dataProcessor = new DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ?? DEFAULT_HEALTH_SYNC_CHUNK_SIZE, this.storageManager, this.getTotalCountsFunction(), this.getDataFromProviderFunction(), this.getConverterFunction());
|
|
22
23
|
}
|
|
23
24
|
/** One run at a time; see `SyncStateManager.once` for why that matters. */
|
|
24
25
|
async startSync() {
|
|
@@ -111,7 +112,9 @@ export class BaseHealthSyncService {
|
|
|
111
112
|
if (this.stateManager.shouldStopSync) {
|
|
112
113
|
return;
|
|
113
114
|
}
|
|
114
|
-
const
|
|
115
|
+
const responseEntries = result.entry ?? [];
|
|
116
|
+
const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : entries.length;
|
|
117
|
+
const createdCount = responseEntries.filter(entry => entry.response?.status.startsWith("201")).length;
|
|
115
118
|
recordOvokMetric("ovok.health.samples.imported", createdCount, {
|
|
116
119
|
provider: this.getProviderName(),
|
|
117
120
|
measurementTypeKey
|
|
@@ -120,7 +123,7 @@ export class BaseHealthSyncService {
|
|
|
120
123
|
provider: this.getProviderName()
|
|
121
124
|
});
|
|
122
125
|
this.stateManager.addResult(result);
|
|
123
|
-
this.progressManager.incrementSyncedObservations(measurementTypeKey, createdCount);
|
|
126
|
+
this.progressManager.incrementSyncedObservations(measurementTypeKey, savedCount, createdCount);
|
|
124
127
|
this.storageManager.saveAnchors(anchors);
|
|
125
128
|
} catch (error) {
|
|
126
129
|
if (isSyncRetryCancelled(error) || this.stateManager.shouldStopSync) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","getProviderName","dataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","provider","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","hasAnchor","observationBodies","observationSyncIds","currentHasAnchor","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","saveObservations","
|
|
1
|
+
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","getProviderName","dataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","provider","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","hasAnchor","observationBodies","observationSyncIds","currentHasAnchor","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","addResult","incrementSyncedObservations","saveAnchors"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const defaultSyncData = {
|
|
4
4
|
syncedObservations: null,
|
|
5
|
+
createdObservations: null,
|
|
5
6
|
totalObservations: null,
|
|
6
7
|
status: "idle"
|
|
7
8
|
};
|
|
@@ -35,18 +36,24 @@ export class SyncProgressManager {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
getProgress(measurementTypeKey) {
|
|
39
|
+
const data = this.syncData[measurementTypeKey];
|
|
38
40
|
return {
|
|
39
|
-
done:
|
|
40
|
-
total:
|
|
41
|
+
done: data?.syncedObservations ?? 0,
|
|
42
|
+
total: data?.totalObservations ?? 0,
|
|
43
|
+
...(data?.createdObservations === null || data?.createdObservations === undefined ? {} : {
|
|
44
|
+
created: data.createdObservations
|
|
45
|
+
})
|
|
41
46
|
};
|
|
42
47
|
}
|
|
43
48
|
setTotalObservations(measurementTypeKey, total) {
|
|
44
49
|
this.syncData[measurementTypeKey].totalObservations = total;
|
|
45
50
|
this.notifyProgress(measurementTypeKey, "idle");
|
|
46
51
|
}
|
|
47
|
-
incrementSyncedObservations(measurementTypeKey, count) {
|
|
52
|
+
incrementSyncedObservations(measurementTypeKey, count, createdCount = 0) {
|
|
48
53
|
this.syncData[measurementTypeKey].syncedObservations ??= 0;
|
|
49
54
|
this.syncData[measurementTypeKey].syncedObservations += count;
|
|
55
|
+
this.syncData[measurementTypeKey].createdObservations ??= 0;
|
|
56
|
+
this.syncData[measurementTypeKey].createdObservations += createdCount;
|
|
50
57
|
this.notifyProgress(measurementTypeKey, "syncing");
|
|
51
58
|
}
|
|
52
59
|
setStatus(measurementTypeKey, status, reason) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defaultSyncData","syncedObservations","totalObservations","status","SyncProgressManager","syncData","constructor","updateProgress","dataToSync","key","Object","keys","measurementTypeKey","setPauseStatuses","reason","currentStatus","getStatus","setStatus","setNotStartedStatuses","getProgress","done","total","setTotalObservations","notifyProgress","incrementSyncedObservations","count","
|
|
1
|
+
{"version":3,"names":["defaultSyncData","syncedObservations","createdObservations","totalObservations","status","SyncProgressManager","syncData","constructor","updateProgress","dataToSync","key","Object","keys","measurementTypeKey","setPauseStatuses","reason","currentStatus","getStatus","setStatus","setNotStartedStatuses","getProgress","data","done","total","undefined","created","setTotalObservations","notifyProgress","incrementSyncedObservations","count","createdCount","resetAll","forEach","progress"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-progress-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("
|
|
3
|
+
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
4
4
|
const getObservationTime = observation => {
|
|
5
5
|
if (observation.effectivePeriod) {
|
|
6
6
|
return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { addSeconds, startOfDay, subDays } from "date-fns";
|
|
4
4
|
import { aggregateGroupByPeriod, readRecords } from "react-native-health-connect";
|
|
5
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
5
6
|
export const getRecordsFromHealthConnect = async ({
|
|
6
7
|
typeIdentifier,
|
|
7
8
|
startDate: _startDate,
|
|
8
|
-
chunkSize =
|
|
9
|
+
chunkSize = DEFAULT_HEALTH_SYNC_CHUNK_SIZE,
|
|
9
10
|
anchor,
|
|
10
11
|
mode = "point"
|
|
11
12
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["addSeconds","startOfDay","subDays","aggregateGroupByPeriod","readRecords","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","Date","toISOString","endDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","pageToken","data","records","undefined","aggregateType","today","groups","recordType","timeRangeSlicer","period","length","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":";;AAAA,SAASA,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,UAAU;AAC1D,SACEC,sBAAsB,EAEtBC,WAAW,QAGN,6BAA6B;
|
|
1
|
+
{"version":3,"names":["addSeconds","startOfDay","subDays","aggregateGroupByPeriod","readRecords","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","Date","toISOString","endDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","pageToken","data","records","undefined","aggregateType","today","groups","recordType","timeRangeSlicer","period","length","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":"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","ignoreList":[]}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import Healthkit, { HKStatisticsOptions, HKWorkoutTypeIdentifier, UnitOfEnergy } from "@kingstinct/react-native-healthkit";
|
|
4
4
|
import { addDays, addSeconds, startOfDay, subDays } from "date-fns";
|
|
5
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
5
6
|
import { healthUnitFor } from "./health-units.js";
|
|
6
7
|
export const getSamplesFromHealth = async ({
|
|
7
8
|
startDate: _startDate,
|
|
8
9
|
typeIdentifier,
|
|
9
10
|
anchor,
|
|
10
|
-
chunkSize =
|
|
11
|
+
chunkSize = DEFAULT_HEALTH_SYNC_CHUNK_SIZE,
|
|
11
12
|
mode = "point"
|
|
12
13
|
}) => {
|
|
13
14
|
const startDate = _startDate ? addSeconds(new Date(_startDate), 1) : subDays(new Date(), 30);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","addSeconds","startOfDay","subDays","healthUnitFor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","Date","endDate","isQuantityIdentifier","data","undefined","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","samples","newAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","unit","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value","startsWith"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAIdC,mBAAmB,EACnBC,uBAAuB,EACvBC,YAAY,QACP,oCAAoC;AAC3C,SAASC,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","addSeconds","startOfDay","subDays","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","healthUnitFor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","Date","endDate","isQuantityIdentifier","data","undefined","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","samples","newAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","unit","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value","startsWith"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,18 +8,28 @@ const statusNumber = value => {
|
|
|
8
8
|
const parsed = typeof value === "string" ? Number.parseInt(value, 10) : Number(value);
|
|
9
9
|
return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
18
|
-
|
|
11
|
+
const getNestedRecords = error => {
|
|
12
|
+
const records = [];
|
|
13
|
+
const pending = [asRecord(error)];
|
|
14
|
+
const seen = new Set();
|
|
15
|
+
while (pending.length > 0) {
|
|
16
|
+
const record = pending.shift();
|
|
17
|
+
if (!record || seen.has(record)) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
seen.add(record);
|
|
21
|
+
records.push(record);
|
|
22
|
+
for (const key of ["response", "bundle", "cause"]) {
|
|
23
|
+
const nested = asRecord(record[key]);
|
|
24
|
+
if (nested) {
|
|
25
|
+
pending.push(nested);
|
|
26
|
+
}
|
|
19
27
|
}
|
|
20
28
|
}
|
|
21
|
-
return
|
|
22
|
-
}
|
|
29
|
+
return records;
|
|
30
|
+
};
|
|
31
|
+
const getResponseStatuses = record => [record.status, record.statusCode, asRecord(record.response)?.status, ...(Array.isArray(record.entry) ? record.entry.map(entry => asRecord(asRecord(entry)?.response)?.status) : [])];
|
|
32
|
+
const getStatuses = error => getNestedRecords(error).flatMap(getResponseStatuses).map(statusNumber).filter(status => status !== undefined);
|
|
23
33
|
class SyncRetryCancelledError extends Error {
|
|
24
34
|
constructor() {
|
|
25
35
|
super("Health sync retry cancelled");
|
|
@@ -27,25 +37,59 @@ class SyncRetryCancelledError extends Error {
|
|
|
27
37
|
}
|
|
28
38
|
}
|
|
29
39
|
const isSyncRetryCancelled = error => error instanceof SyncRetryCancelledError;
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
const getHeader = (headers, name) => {
|
|
41
|
+
const lowerName = name.toLowerCase();
|
|
42
|
+
const entry = Object.entries(headers ?? {}).find(([key]) => key.toLowerCase() === lowerName)?.[1];
|
|
43
|
+
return typeof entry === "string" || typeof entry === "number" ? String(entry) : undefined;
|
|
44
|
+
};
|
|
45
|
+
const parseRetryAfter = value => {
|
|
46
|
+
const seconds = Number(value);
|
|
47
|
+
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
48
|
+
return seconds * 1000;
|
|
36
49
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
const date = Date.parse(value);
|
|
51
|
+
return Number.isFinite(date) ? Math.max(0, date - Date.now()) : undefined;
|
|
52
|
+
};
|
|
53
|
+
const parseRateLimitReset = value => {
|
|
54
|
+
const reset = Number(value);
|
|
55
|
+
if (!Number.isFinite(reset) || reset < 0) {
|
|
40
56
|
return undefined;
|
|
41
57
|
}
|
|
42
|
-
const
|
|
43
|
-
return
|
|
58
|
+
const nowInSeconds = Date.now() / 1000;
|
|
59
|
+
return reset > nowInSeconds - 60 ? Math.max(0, reset * 1000 - Date.now()) : reset * 1000;
|
|
60
|
+
};
|
|
61
|
+
function getRetryAfterMs(error) {
|
|
62
|
+
const values = [];
|
|
63
|
+
for (const record of getNestedRecords(error)) {
|
|
64
|
+
const retryAfter = record.retryAfterMs;
|
|
65
|
+
if (typeof retryAfter === "number" && retryAfter >= 0) {
|
|
66
|
+
values.push(retryAfter);
|
|
67
|
+
}
|
|
68
|
+
const response = asRecord(record.response);
|
|
69
|
+
const responseRetryAfter = response?.retryAfterMs;
|
|
70
|
+
if (typeof responseRetryAfter === "number" && responseRetryAfter >= 0) {
|
|
71
|
+
values.push(responseRetryAfter);
|
|
72
|
+
}
|
|
73
|
+
const headers = asRecord(response?.headers) ?? asRecord(record.headers);
|
|
74
|
+
const retryAfterHeader = getHeader(headers, "retry-after");
|
|
75
|
+
const retryAfterMs = retryAfterHeader ? parseRetryAfter(retryAfterHeader) : undefined;
|
|
76
|
+
const rateLimitReset = getHeader(headers, "ratelimit-reset");
|
|
77
|
+
const rateLimitResetMs = rateLimitReset ? parseRateLimitReset(rateLimitReset) : undefined;
|
|
78
|
+
const rateLimit = getHeader(headers, "ratelimit");
|
|
79
|
+
const embeddedReset = rateLimit?.match(/(?:^|[,;\s])reset\s*=\s*([0-9]+)/i)?.[1];
|
|
80
|
+
const embeddedResetMs = embeddedReset ? parseRateLimitReset(embeddedReset) : undefined;
|
|
81
|
+
for (const value of [retryAfterMs, rateLimitResetMs, embeddedResetMs]) {
|
|
82
|
+
if (value !== undefined) {
|
|
83
|
+
values.push(value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return values.length > 0 ? Math.max(...values) : undefined;
|
|
44
88
|
}
|
|
45
89
|
function isRetryableSyncError(error) {
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
return status === 429 || status >= 500;
|
|
90
|
+
const statuses = getStatuses(error);
|
|
91
|
+
if (statuses.length > 0) {
|
|
92
|
+
return statuses.some(status => status === 429 || status >= 500);
|
|
49
93
|
}
|
|
50
94
|
const message = error instanceof Error ? error.message : String(error);
|
|
51
95
|
return error instanceof TypeError || /network|fetch|timeout|connection|offline|unreachable/i.test(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RETRY_DELAYS_MS","asRecord","value","undefined","statusNumber","parsed","Number","parseInt","isInteger","
|
|
1
|
+
{"version":3,"names":["RETRY_DELAYS_MS","asRecord","value","undefined","statusNumber","parsed","Number","parseInt","isInteger","getNestedRecords","error","records","pending","seen","Set","length","record","shift","has","add","push","key","nested","getResponseStatuses","status","statusCode","response","Array","isArray","entry","map","getStatuses","flatMap","filter","SyncRetryCancelledError","Error","constructor","name","isSyncRetryCancelled","getHeader","headers","lowerName","toLowerCase","Object","entries","find","String","parseRetryAfter","seconds","isFinite","date","Date","parse","Math","max","now","parseRateLimitReset","reset","nowInSeconds","getRetryAfterMs","values","retryAfter","retryAfterMs","responseRetryAfter","retryAfterHeader","rateLimitReset","rateLimitResetMs","rateLimit","embeddedReset","match","embeddedResetMs","isRetryableSyncError","statuses","some","message","TypeError","test","getSyncRetryDelayMs","retryIndex","at","withSyncRetries","operation","shouldCancel","Promise","resolve","reject","timers","poll","setInterval","timer","clearTimeout","clearInterval","setTimeout"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/retry-save.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,25 +1,97 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const MAX_HEALTH_IMPORT_BUNDLE_BYTES = 900_000;
|
|
4
|
+
const getByteLength = value => {
|
|
5
|
+
const TextEncoderConstructor = globalThis.TextEncoder;
|
|
6
|
+
if (TextEncoderConstructor) {
|
|
7
|
+
return new TextEncoderConstructor().encode(value).byteLength;
|
|
8
|
+
}
|
|
9
|
+
return encodeURIComponent(value).replace(/%[0-9A-F]{2}|./g, "_").length;
|
|
10
|
+
};
|
|
11
|
+
const getBundleByteLength = entries => getByteLength(JSON.stringify({
|
|
12
|
+
resourceType: "Bundle",
|
|
13
|
+
type: "batch",
|
|
14
|
+
entry: entries
|
|
15
|
+
}));
|
|
16
|
+
const getMemberReference = entry => {
|
|
17
|
+
const observation = entry.resource;
|
|
18
|
+
return observation?.hasMember?.[0]?.reference;
|
|
19
|
+
};
|
|
20
|
+
const groupMeasurementEntries = entries => {
|
|
21
|
+
const rootUrls = new Set(entries.map(entry => entry.fullUrl).filter(Boolean));
|
|
22
|
+
const groups = new Map();
|
|
23
|
+
entries.forEach((entry, index) => {
|
|
24
|
+
const key = getMemberReference(entry) && rootUrls.has(getMemberReference(entry)) ? getMemberReference(entry) : entry.fullUrl ?? `entry-${index}`;
|
|
25
|
+
const group = groups.get(key) ?? [];
|
|
26
|
+
group.push(entry);
|
|
27
|
+
groups.set(key, group);
|
|
28
|
+
});
|
|
29
|
+
return [...groups.values()];
|
|
30
|
+
};
|
|
31
|
+
const serializeBatch = entries => getBundleByteLength(entries);
|
|
32
|
+
const splitHealthImportEntries = (entries, maxBytes = MAX_HEALTH_IMPORT_BUNDLE_BYTES) => {
|
|
33
|
+
const batches = [];
|
|
34
|
+
let current = [];
|
|
35
|
+
for (const group of groupMeasurementEntries(entries)) {
|
|
36
|
+
const candidate = [...current, ...group];
|
|
37
|
+
if (current.length > 0 && serializeBatch(candidate) > maxBytes) {
|
|
38
|
+
batches.push(current);
|
|
39
|
+
current = [];
|
|
40
|
+
}
|
|
41
|
+
current.push(...group);
|
|
42
|
+
}
|
|
43
|
+
if (current.length > 0) {
|
|
44
|
+
batches.push(current);
|
|
45
|
+
}
|
|
46
|
+
return batches;
|
|
47
|
+
};
|
|
48
|
+
const createBatchError = (bundle, expectedEntries) => {
|
|
49
|
+
const responseEntries = bundle.entry ?? [];
|
|
50
|
+
const statusCounts = new Map();
|
|
51
|
+
responseEntries.forEach(entry => {
|
|
52
|
+
const status = entry.response?.status ?? "missing status";
|
|
53
|
+
if (status.startsWith("2")) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
|
|
57
|
+
});
|
|
58
|
+
const missingCount = Math.max(expectedEntries - responseEntries.length, 0);
|
|
59
|
+
if (missingCount > 0) {
|
|
60
|
+
statusCounts.set("missing status", (statusCounts.get("missing status") ?? 0) + missingCount);
|
|
61
|
+
}
|
|
62
|
+
const summary = [...statusCounts.entries()].map(([status, count]) => `${status} × ${count}`).join(", ");
|
|
63
|
+
const error = new Error(`Health import batch did not save every entry (${summary || "unknown status"})`);
|
|
64
|
+
Object.assign(error, {
|
|
65
|
+
bundle
|
|
66
|
+
});
|
|
67
|
+
return error;
|
|
68
|
+
};
|
|
69
|
+
const saveBundleObservations = async ({
|
|
4
70
|
entries,
|
|
5
71
|
client
|
|
6
72
|
}) => {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const hasMissingResponse = responseEntries.length !== entries.length;
|
|
14
|
-
const rejectedEntries = responseEntries.filter(entry => !entry.response?.status.startsWith("2"));
|
|
15
|
-
if (hasMissingResponse || rejectedEntries.length > 0) {
|
|
16
|
-
const statuses = responseEntries.map(entry => entry.response?.status ?? "missing status");
|
|
17
|
-
const error = new Error(`Health import batch did not save every entry (${statuses.join(", ")})`);
|
|
18
|
-
Object.assign(error, {
|
|
19
|
-
bundle
|
|
73
|
+
const responseBundles = [];
|
|
74
|
+
for (const batchEntries of splitHealthImportEntries(entries)) {
|
|
75
|
+
const bundle = await client.executeBatch({
|
|
76
|
+
resourceType: "Bundle",
|
|
77
|
+
type: "batch",
|
|
78
|
+
entry: batchEntries
|
|
20
79
|
});
|
|
21
|
-
|
|
80
|
+
const responseEntries = bundle.entry ?? [];
|
|
81
|
+
const hasMissingResponse = responseEntries.length !== batchEntries.length;
|
|
82
|
+
const hasRejectedEntry = responseEntries.some(entry => !entry.response?.status.startsWith("2"));
|
|
83
|
+
if (hasMissingResponse || hasRejectedEntry) {
|
|
84
|
+
throw createBatchError(bundle, batchEntries.length);
|
|
85
|
+
}
|
|
86
|
+
responseBundles.push(bundle);
|
|
22
87
|
}
|
|
23
|
-
return
|
|
88
|
+
return {
|
|
89
|
+
...(responseBundles[0] ?? {
|
|
90
|
+
resourceType: "Bundle",
|
|
91
|
+
type: "batch-response"
|
|
92
|
+
}),
|
|
93
|
+
entry: responseBundles.flatMap(bundle => bundle.entry ?? [])
|
|
94
|
+
};
|
|
24
95
|
};
|
|
96
|
+
export { MAX_HEALTH_IMPORT_BUNDLE_BYTES, saveBundleObservations, splitHealthImportEntries };
|
|
25
97
|
//# sourceMappingURL=save-bundle-observations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["MAX_HEALTH_IMPORT_BUNDLE_BYTES","getByteLength","value","TextEncoderConstructor","globalThis","TextEncoder","encode","byteLength","encodeURIComponent","replace","length","getBundleByteLength","entries","JSON","stringify","resourceType","type","entry","getMemberReference","observation","resource","hasMember","reference","groupMeasurementEntries","rootUrls","Set","map","fullUrl","filter","Boolean","groups","Map","forEach","index","key","has","group","get","push","set","values","serializeBatch","splitHealthImportEntries","maxBytes","batches","current","candidate","createBatchError","bundle","expectedEntries","responseEntries","statusCounts","status","response","startsWith","missingCount","Math","max","summary","count","join","error","Error","Object","assign","saveBundleObservations","client","responseBundles","batchEntries","executeBatch","hasMissingResponse","hasRejectedEntry","some","flatMap"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/save-bundle-observations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keeps provider pages comfortably below Medplum's synchronous request limit.
|
|
3
|
+
* The save helper also enforces the byte limit because an observation's size
|
|
4
|
+
* is not constant.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_HEALTH_SYNC_CHUNK_SIZE = 250;
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/data-sync/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,MAAM,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;
|
|
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;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAE3B,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;gBAEU,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC;IA2BhD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,cAAc;IAEpD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAC3C,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC;IAEpB,SAAS,CAAC,QAAQ,CAAC,2BAA2B,IAAI,CAChD,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAExE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CACzC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3B,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;YAyBpB,mBAAmB;YAqBnB,cAAc;IAsG5B,OAAO,CAAC,yBAAyB;CAGlC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts
CHANGED
|
@@ -9,11 +9,12 @@ export declare class SyncProgressManager<TDataToSync extends AndroidHealthSyncPr
|
|
|
9
9
|
setPauseStatuses(reason?: SyncPauseReason): void;
|
|
10
10
|
setNotStartedStatuses(): void;
|
|
11
11
|
getProgress(measurementTypeKey: HealthSyncKey): {
|
|
12
|
+
created?: number | undefined;
|
|
12
13
|
done: number;
|
|
13
14
|
total: number;
|
|
14
15
|
};
|
|
15
16
|
setTotalObservations(measurementTypeKey: HealthSyncKey, total: number): void;
|
|
16
|
-
incrementSyncedObservations(measurementTypeKey: HealthSyncKey, count: number): void;
|
|
17
|
+
incrementSyncedObservations(measurementTypeKey: HealthSyncKey, count: number, createdCount?: number): void;
|
|
17
18
|
setStatus(measurementTypeKey: HealthSyncKey, status: SyncProgress["status"], reason?: SyncPauseReason): void;
|
|
18
19
|
getStatus(measurementTypeKey: HealthSyncKey): "idle" | "paused" | "started" | "completed" | "failed" | "syncing";
|
|
19
20
|
resetAll(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-progress-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/sync-progress-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,YAAY,EACb,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-progress-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/sync-progress-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,YAAY,EACb,MAAM,2BAA2B,CAAC;AAiBnC,qBAAa,mBAAmB,CAC9B,WAAW,SACP,sBAAsB,CAAC,YAAY,CAAC,GACpC,oBAAoB,CAAC,YAAY,CAAC;IAKpC,OAAO,CAAC,cAAc;IAHxB,OAAO,CAAC,QAAQ,CAAgD;gBAGtD,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,EACxD,UAAU,EAAE,WAAW;IASzB,gBAAgB,CAAC,MAAM,CAAC,EAAE,eAAe;IAWzC,qBAAqB;IAWrB,WAAW,CAAC,kBAAkB,EAAE,aAAa;;;;;IAa7C,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM;IAKrE,2BAA2B,CACzB,kBAAkB,EAAE,aAAa,EACjC,KAAK,EAAE,MAAM,EACb,YAAY,SAAI;IASlB,SAAS,CACP,kBAAkB,EAAE,aAAa,EACjC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,MAAM,CAAC,EAAE,eAAe;IAQ1B,SAAS,CAAC,kBAAkB,EAAE,aAAa;IAI3C,QAAQ;IASR,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-progress.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/sync-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,KAAK,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/C,KAAK,YAAY,GAAG;IAClB,kBAAkB,EAAE,aAAa,CAAC;IAClC,MAAM,EACF,SAAS,GACT,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;IACb,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-progress.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/sync-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,KAAK,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/C,KAAK,YAAY,GAAG;IAClB,kBAAkB,EAAE,aAAa,CAAC;IAClC,MAAM,EACF,SAAS,GACT,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;IACb,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QAEd,oEAAoE;QACpE,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-records-from-health-connect.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/get-records-from-health-connect.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACZ,UAAU,EACX,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"get-records-from-health-connect.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/get-records-from-health-connect.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACZ,UAAU,EACX,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,KAAK,iBAAiB,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC;AAEzE,eAAO,MAAM,2BAA2B,GAAU,qEAM/C,wBAAwB,CAAC,UAAU,CAAC,KAAG,OAAO,CAC/C,sBAAsB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CA4BtD,CAAC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-samples-from-health.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/get-samples-from-health.ts"],"names":[],"mappings":"AAAA,OAAkB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EAGtB,YAAY,EACb,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-samples-from-health.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/get-samples-from-health.ts"],"names":[],"mappings":"AAAA,OAAkB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EAGtB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAK5D,eAAO,MAAM,oBAAoB,GAAU,qEAMxC,wBAAwB,CAAC,sBAAsB,CAAC;UA0FhC,oBAAoB,EAAE;YAAU,SAAS;;;;;;;;;;;;;;;;;;;EAP3D,CAAC"}
|