@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.
Files changed (111) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +14 -41
  4. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js +75 -0
  6. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/services/bt-manager.js +2 -1
  8. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/series-recorder.js +9 -5
  10. package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/services/series-slots.js +9 -2
  12. package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -1
  13. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +7 -5
  14. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  15. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +4 -5
  16. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
  17. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +12 -5
  18. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  19. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js +18 -0
  20. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  21. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +4 -1
  22. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -1
  23. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js +70 -0
  24. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  25. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
  26. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  27. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +15 -42
  28. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  29. package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js +70 -0
  30. package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
  31. package/lib/module/modules/bt-management/services/bt-manager.js +2 -1
  32. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  33. package/lib/module/modules/bt-management/services/series-recorder.js +10 -6
  34. package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -1
  35. package/lib/module/modules/bt-management/services/series-slots.js +8 -2
  36. package/lib/module/modules/bt-management/services/series-slots.js.map +1 -1
  37. package/lib/module/modules/data-sync/services/base-health-sync-service.js +7 -5
  38. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  39. package/lib/module/modules/data-sync/services/managers/data-processor.js +4 -5
  40. package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
  41. package/lib/module/modules/data-sync/services/managers/storage-manager.js +12 -5
  42. package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  43. package/lib/module/modules/data-sync/types/health-sync-batch-error.js +18 -0
  44. package/lib/module/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  45. package/lib/module/modules/data-sync/utils/healthkit-series.js +4 -1
  46. package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -1
  47. package/lib/module/modules/data-sync/utils/identify-imported-observations.js +65 -0
  48. package/lib/module/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  49. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
  52. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +2 -0
  54. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts +3 -1
  56. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +4 -1
  58. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +6 -0
  60. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +5 -0
  62. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  65. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  67. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  71. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  72. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  73. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  74. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
  75. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
  76. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +2 -0
  77. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  78. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts +3 -1
  79. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
  80. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +4 -1
  81. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
  82. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +6 -0
  83. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  84. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +5 -0
  85. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  86. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  87. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  88. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  89. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  90. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  91. package/lib/typescript/module/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  92. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  93. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  94. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  95. package/package.json +3 -3
  96. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +0 -108
  97. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  98. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +0 -100
  99. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  100. package/lib/module/modules/data-sync/utils/generate-observation-entry.js +0 -103
  101. package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  102. package/lib/module/modules/data-sync/utils/save-bundle-observations.js +0 -95
  103. package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  104. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  105. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  106. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  107. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
  108. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  109. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  110. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  111. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"healthkit-series.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/healthkit-series.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AAG9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GACtB,gBAAgB,wBAAwB,EACxC,WAAW,IAAI,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CA0BzD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"healthkit-series.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/healthkit-series.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AAG9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GACtB,gBAAgB,wBAAwB,EACxC,WAAW,IAAI,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CA6BzD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Observation } from "@medplum/fhirtypes";
2
+ import { HealthProvider } from "../types/health-provider";
3
+ import { HealthDataMode } from "../types/health-sync-keys";
4
+ type IdentifyImportedObservationsProps = {
5
+ groupedObservationBodies: Observation[][];
6
+ provider: HealthProvider;
7
+ groupedObservationSyncIds?: Array<string | undefined>;
8
+ /** Each group's source record, which a deletion of that record finds it by. */
9
+ groupedRecordIds?: Array<string | undefined>;
10
+ mode?: HealthDataMode;
11
+ };
12
+ declare const getStableObservationId: ({ observation, provider, sourceId, bodyIndex, }: {
13
+ observation: Observation;
14
+ provider: HealthProvider;
15
+ sourceId?: string;
16
+ bodyIndex: number;
17
+ }) => string;
18
+ /**
19
+ * Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
20
+ * changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
21
+ * read of the same source again saves nothing new, or writes over a total that grew.
22
+ */
23
+ declare const identifyImportedObservations: ({ groupedObservationBodies, provider, groupedObservationSyncIds, groupedRecordIds, mode, }: IdentifyImportedObservationsProps) => Observation[][];
24
+ export { getStableObservationId, identifyImportedObservations };
25
+ //# sourceMappingURL=identify-imported-observations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identify-imported-observations.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/identify-imported-observations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,KAAK,iCAAiC,GAAG;IACvC,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAiBF,QAAA,MAAM,sBAAsB,GAAI,iDAK7B;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,MAQa,CAAC;AAOlB;;;;GAIG;AACH,QAAA,MAAM,4BAA4B,GAAI,4FAMnC,iCAAiC,KAAG,WAAW,EAAE,EAqChD,CAAC;AAEL,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,CAAC"}
@@ -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,sBAqgBF,CAAC"}
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;AAE7D,OAAO,EAIL,iBAAiB,EAIlB,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,CA+GhB;CACH;AAED,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,CAAC;AACxD,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,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":"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"}
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 has gone quiet. `add` does it for its own; call this now and then for the rest. */
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;CACpB;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,CAmD9D;IAEF,+GAA+G;IACxG,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"}
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,CAcnE,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,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"}
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;CAC5B;AAED,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,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"}
@@ -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;IAsH5B,OAAO,CAAC,yBAAyB;CAGlC"}
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
- generateObservationEntries(observationBodies: Observation[][], observationSyncIds?: Array<string | undefined>, observationRecordIds?: Array<string | undefined>, mode?: Parameters<typeof generateObservationEntry>[0]["mode"]): import("@medplum/fhirtypes").BundleEntry<Observation>[];
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;
@@ -1 +1 @@
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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"}
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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"}
@@ -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 { saveBundleObservations } from "../../utils/save-bundle-observations";
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
- saveObservations(entries: Parameters<typeof saveBundleObservations>[0]["entries"]): Promise<Bundle<Observation>>;
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;
@@ -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;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,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;IAG5B,gBAAgB,CACpB,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAC/D,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"}
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"}
@@ -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;AAED,QAAA,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAmB3C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"healthkit-series.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/healthkit-series.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AAG9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GACtB,gBAAgB,wBAAwB,EACxC,WAAW,IAAI,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CA0BzD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"healthkit-series.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/healthkit-series.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AAG9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GACtB,gBAAgB,wBAAwB,EACxC,WAAW,IAAI,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CA6BzD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Observation } from "@medplum/fhirtypes";
2
+ import { HealthProvider } from "../types/health-provider";
3
+ import { HealthDataMode } from "../types/health-sync-keys";
4
+ type IdentifyImportedObservationsProps = {
5
+ groupedObservationBodies: Observation[][];
6
+ provider: HealthProvider;
7
+ groupedObservationSyncIds?: Array<string | undefined>;
8
+ /** Each group's source record, which a deletion of that record finds it by. */
9
+ groupedRecordIds?: Array<string | undefined>;
10
+ mode?: HealthDataMode;
11
+ };
12
+ declare const getStableObservationId: ({ observation, provider, sourceId, bodyIndex, }: {
13
+ observation: Observation;
14
+ provider: HealthProvider;
15
+ sourceId?: string;
16
+ bodyIndex: number;
17
+ }) => string;
18
+ /**
19
+ * Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
20
+ * changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
21
+ * read of the same source again saves nothing new, or writes over a total that grew.
22
+ */
23
+ declare const identifyImportedObservations: ({ groupedObservationBodies, provider, groupedObservationSyncIds, groupedRecordIds, mode, }: IdentifyImportedObservationsProps) => Observation[][];
24
+ export { getStableObservationId, identifyImportedObservations };
25
+ //# sourceMappingURL=identify-imported-observations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identify-imported-observations.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/identify-imported-observations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,KAAK,iCAAiC,GAAG;IACvC,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAiBF,QAAA,MAAM,sBAAsB,GAAI,iDAK7B;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,MAQa,CAAC;AAOlB;;;;GAIG;AACH,QAAA,MAAM,4BAA4B,GAAI,4FAMnC,iCAAiC,KAAG,WAAW,EAAE,EAqChD,CAAC;AAEL,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ovok/native",
3
- "version": "1.12.1",
3
+ "version": "1.14.0",
4
4
  "description": "React native component sdk for OVOK",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -107,7 +107,7 @@
107
107
  "@medplum/react-hooks": "3.2.23",
108
108
  "@opentelemetry/api": "^1.9.1",
109
109
  "@opentelemetry/api-logs": "^0.222.0",
110
- "@ovok/core": "^0.4.35",
110
+ "@ovok/core": "^0.4.42",
111
111
  "@react-native-community/datetimepicker": "^9.1.0",
112
112
  "@react-native-community/netinfo": "^12.0.1",
113
113
  "@react-native-google-signin/google-signin": "^16.1.2",
@@ -189,7 +189,7 @@
189
189
  "@kingstinct/react-native-healthkit": "*",
190
190
  "@opentelemetry/api": "^1.9.1",
191
191
  "@opentelemetry/api-logs": "^0.222.0",
192
- "@ovok/core": ">=0.4.27",
192
+ "@ovok/core": ">=0.4.42",
193
193
  "@react-native-community/datetimepicker": "*",
194
194
  "@react-native-community/netinfo": "*",
195
195
  "@react-native-google-signin/google-signin": "*",
@@ -1,108 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getStableObservationId = exports.generateObservationEntry = void 0;
7
- var _fhirSystems = require("./fhir-systems.js");
8
- var _getHealthRecordSyncId = require("./get-health-record-sync-id.js");
9
- var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
10
- var _replacesSavedObservation = require("./replaces-saved-observation.js");
11
- const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
12
- const getObservationTime = observation => {
13
- if (observation.effectivePeriod) {
14
- return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
15
- }
16
- return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
17
- };
18
- const getStableObservationId = ({
19
- observation,
20
- provider,
21
- sourceId,
22
- bodyIndex
23
- }) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
24
- exports.getStableObservationId = getStableObservationId;
25
- const createBundleUuid = () => {
26
- const cryptoApi = globalThis.crypto;
27
- const randomUuid = typeof cryptoApi === "object" && cryptoApi !== null && "randomUUID" in cryptoApi && typeof cryptoApi.randomUUID === "function" ? cryptoApi.randomUUID : undefined;
28
- if (randomUuid) {
29
- return randomUuid.call(cryptoApi);
30
- }
31
- const bytes = Array.from({
32
- length: 16
33
- }, () => Math.floor(Math.random() * 256));
34
- bytes[6] = bytes[6] & 0x0f | 0x40;
35
- bytes[8] = bytes[8] & 0x3f | 0x80;
36
- const hex = bytes.map(byte => byte.toString(16).padStart(2, "0")).join("");
37
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
38
- };
39
- const generateObservationEntry = ({
40
- groupedObservationBodies,
41
- provider,
42
- groupedObservationSyncIds,
43
- groupedRecordIds,
44
- patientId,
45
- mode
46
- }) => {
47
- return groupedObservationBodies.map((observationBodies, groupIndex) => {
48
- const fullUrls = observationBodies.map(() => `urn:uuid:${createBundleUuid()}`);
49
- const recordId = groupedRecordIds?.[groupIndex];
50
- return observationBodies.map((observationBody, bodyIndex) => {
51
- const syncIdentifier = getStableObservationId({
52
- observation: observationBody,
53
- provider,
54
- sourceId: groupedObservationSyncIds?.[groupIndex],
55
- bodyIndex
56
- });
57
- const fullUrl = fullUrls[bodyIndex];
58
- const searchParams = new URLSearchParams();
59
- const isDailyAggregate = (0, _isDailyAggregateMode.isDailyAggregateMode)(mode);
60
- const replaces = (0, _replacesSavedObservation.replacesSavedObservation)(mode);
61
- const legacySyncIdentifier = isDailyAggregate && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
62
- const syncIdentifiers = Array.from(new Set([syncIdentifier, legacySyncIdentifier].filter(Boolean)));
63
- searchParams.set("identifier", syncIdentifiers.map(identifier => `${_fhirSystems.OBSERVATION_SYNC_ID_SYSTEM}|${identifier}`).join(","));
64
- if (patientId) {
65
- searchParams.set("subject", `Patient/${patientId}`);
66
- }
67
- const search = searchParams.toString();
68
- const observationResource = {
69
- ...observationBody
70
- };
71
- if (replaces) {
72
- delete observationResource.id;
73
- }
74
- return {
75
- fullUrl,
76
- request: {
77
- method: replaces ? "PUT" : "POST",
78
- url: replaces ? `Observation?${search}` : "Observation",
79
- ...(replaces ? {} : {
80
- ifNoneExist: search
81
- })
82
- },
83
- resource: {
84
- ...observationResource,
85
- identifier: [...(observationBody.identifier || []), {
86
- system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
87
- value: provider
88
- }, {
89
- system: _fhirSystems.OBSERVATION_SYNC_ID_SYSTEM,
90
- value: syncIdentifier
91
- }, ...(recordId ? [(0, _getHealthRecordSyncId.getHealthRecordIdentifier)(provider, recordId)] : [])],
92
- device: {
93
- ...(observationBody.device ?? {}),
94
- identifier: {
95
- system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
96
- value: provider
97
- }
98
- },
99
- hasMember: bodyIndex === 0 ? [] : [{
100
- reference: fullUrls[0]
101
- }]
102
- }
103
- };
104
- });
105
- }).flat();
106
- };
107
- exports.generateObservationEntry = generateObservationEntry;
108
- //# sourceMappingURL=generate-observation-entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_isDailyAggregateMode","_replacesSavedObservation","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","patientId","mode","observationBodies","groupIndex","fullUrls","recordId","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","isDailyAggregateMode","replaces","replacesSavedObservation","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","OBSERVATION_SYNC_ID_SYSTEM","search","observationResource","request","method","url","ifNoneExist","resource","OBSERVATION_SYNC_PROVIDER_SYSTEM","value","getHealthRecordIdentifier","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,yBAAA,GAAAH,OAAA;AAaA,MAAMI,kBAAkB,GAAIC,WAAwB,IAClDA,WAAW,CAACC,IAAI,EAAEC,MAAM,EACpBC,GAAG,CAAED,MAAM,IAAK,GAAGA,MAAM,CAACE,MAAM,IAAI,EAAE,IAAIF,MAAM,CAACD,IAAI,IAAI,EAAE,EAAE,CAAC,CAC/DI,IAAI,CAAC,GAAG,CAAC,IACZL,WAAW,CAACC,IAAI,EAAEK,IAAI,IACtB,SAAS;AAEX,MAAMC,kBAAkB,GAAIP,WAAwB,IAAa;EAC/D,IAAIA,WAAW,CAACQ,eAAe,EAAE;IAC/B,OAAO,GAAGR,WAAW,CAACQ,eAAe,CAACC,KAAK,IAAI,EAAE,IAAIT,WAAW,CAACQ,eAAe,CAACE,GAAG,IAAI,EAAE,EAAE;EAC9F;EAEA,OAAOV,WAAW,CAACW,iBAAiB,EAAEC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS;AACjE,CAAC;AAED,MAAMC,sBAAsB,GAAGA,CAAC;EAC9Bb,WAAW;EACXc,QAAQ;EACRC,QAAQ;EACRC;AAMF,CAAC,KACChB,WAAW,CAACiB,EAAE,IAAI,CAACF,QAAQ,GACvB,GAAGD,QAAQ,IAAId,WAAW,CAACiB,EAAE,EAAE,GAC/B,CACEH,QAAQ,EACRC,QAAQ,IAAIR,kBAAkB,CAACP,WAAW,CAAC,EAC3CD,kBAAkB,CAACC,WAAW,CAAC,EAC/BgB,SAAS,CACV,CAACX,IAAI,CAAC,GAAG,CAAC;AAACa,OAAA,CAAAL,sBAAA,GAAAA,sBAAA;AAElB,MAAMM,gBAAgB,GAAGA,CAAA,KAAc;EACrC,MAAMC,SAAS,GAAIC,UAAU,CAA0BC,MAAM;EAE7D,MAAMC,UAAU,GACd,OAAOH,SAAS,KAAK,QAAQ,IAC7BA,SAAS,KAAK,IAAI,IAClB,YAAY,IAAIA,SAAS,IACzB,OAAQA,SAAS,CAA8BI,UAAU,KAAK,UAAU,GACnEJ,SAAS,CAAkCI,UAAU,GACtDC,SAAS;EAEf,IAAIF,UAAU,EAAE;IACd,OAAOA,UAAU,CAACG,IAAI,CAACN,SAAS,CAAC;EACnC;EAEA,MAAMO,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,EAAE,MACvCC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAChC,CAAC;EAEDN,KAAK,CAAC,CAAC,CAAC,GAAIA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAI,GAAI,IAAI;EACpCA,KAAK,CAAC,CAAC,CAAC,GAAIA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAI,GAAI,IAAI;EAEpC,MAAMO,GAAG,GAAGP,KAAK,CAACxB,GAAG,CAAEgC,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAChC,IAAI,CAAC,EAAE,CAAC;EAE5E,OAAO,GAAG6B,GAAG,CAACtB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIsB,GAAG,CAACtB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAIsB,GAAG,CAACtB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIsB,GAAG,CAACtB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIsB,GAAG,CAACtB,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5G,CAAC;AAED,MAAM0B,wBAAwB,GAAGA,CAAC;EAChCC,wBAAwB;EACxBzB,QAAQ;EACR0B,yBAAyB;EACzBC,gBAAgB;EAChBC,SAAS;EACTC;AAC6B,CAAC,KAAiC;EAC/D,OAAOJ,wBAAwB,CAC5BpC,GAAG,CAAC,CAACyC,iBAAiB,EAAEC,UAAU,KAAK;IACtC,MAAMC,QAAQ,GAAGF,iBAAiB,CAACzC,GAAG,CACpC,MAAM,YAAYgB,gBAAgB,CAAC,CAAC,EACtC,CAAC;IAED,MAAM4B,QAAQ,GAAGN,gBAAgB,GAAGI,UAAU,CAAC;IAE/C,OAAOD,iBAAiB,CAACzC,GAAG,CAAC,CAAC6C,eAAe,EAAEhC,SAAS,KAAK;MAC3D,MAAMiC,cAAc,GAAGpC,sBAAsB,CAAC;QAC5Cb,WAAW,EAAEgD,eAAe;QAC5BlC,QAAQ;QACRC,QAAQ,EAAEyB,yBAAyB,GAAGK,UAAU,CAAC;QACjD7B;MACF,CAAC,CAAC;MAEF,MAAMkC,OAAO,GAAGJ,QAAQ,CAAC9B,SAAS,CAAE;MAEpC,MAAMmC,YAAY,GAAG,IAAIC,eAAe,CAAC,CAAC;MAE1C,MAAMC,gBAAgB,GAAG,IAAAC,0CAAoB,EAACX,IAAI,CAAC;MACnD,MAAMY,QAAQ,GAAG,IAAAC,kDAAwB,EAACb,IAAI,CAAC;MAE/C,MAAMc,oBAAoB,GACxBJ,gBAAgB,IAAIL,eAAe,CAAC/B,EAAE,GAClC,GAAGH,QAAQ,IAAIkC,eAAe,CAAC/B,EAAE,EAAE,GACnCQ,SAAS;MAEf,MAAMiC,eAAe,GAAG9B,KAAK,CAACC,IAAI,CAChC,IAAI8B,GAAG,CAAC,CAACV,cAAc,EAAEQ,oBAAoB,CAAC,CAACG,MAAM,CAACC,OAAO,CAAC,CAChE,CAAC;MAEDV,YAAY,CAACW,GAAG,CACd,YAAY,EACZJ,eAAe,CACZvD,GAAG,CAAE4D,UAAU,IAAK,GAAGC,uCAA0B,IAAID,UAAU,EAAE,CAAC,CAClE1D,IAAI,CAAC,GAAG,CACb,CAAC;MAED,IAAIqC,SAAS,EAAE;QACbS,YAAY,CAACW,GAAG,CAAC,SAAS,EAAE,WAAWpB,SAAS,EAAE,CAAC;MACrD;MAEA,MAAMuB,MAAM,GAAGd,YAAY,CAACf,QAAQ,CAAC,CAAC;MAEtC,MAAM8B,mBAAmB,GAAG;QAAE,GAAGlB;MAAgB,CAAC;MAElD,IAAIO,QAAQ,EAAE;QACZ,OAAOW,mBAAmB,CAACjD,EAAE;MAC/B;MAEA,OAAO;QACLiC,OAAO;QACPiB,OAAO,EAAE;UACPC,MAAM,EAAEb,QAAQ,GAAI,KAAK,GAAc,MAAgB;UACvDc,GAAG,EAAEd,QAAQ,GAAG,eAAeU,MAAM,EAAE,GAAG,aAAa;UACvD,IAAIV,QAAQ,GAAG,CAAC,CAAC,GAAG;YAAEe,WAAW,EAAEL;UAAO,CAAC;QAC7C,CAAC;QACDM,QAAQ,EAAE;UACR,GAAGL,mBAAmB;UACtBH,UAAU,EAAE,CACV,IAAIf,eAAe,CAACe,UAAU,IAAI,EAAE,CAAC,EACrC;YACE3D,MAAM,EAAEoE,6CAAgC;YACxCC,KAAK,EAAE3D;UACT,CAAC,EACD;YACEV,MAAM,EAAE4D,uCAA0B;YAClCS,KAAK,EAAExB;UACT,CAAC,EACD,IAAIF,QAAQ,GAAG,CAAC,IAAA2B,gDAAyB,EAAC5D,QAAQ,EAAEiC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CACrE;UACD4B,MAAM,EAAE;YACN,IAAI3B,eAAe,CAAC2B,MAAM,IAAI,CAAC,CAAC,CAAC;YACjCZ,UAAU,EAAE;cACV3D,MAAM,EAAEoE,6CAAgC;cACxCC,KAAK,EAAE3D;YACT;UACF,CAAC;UACD8D,SAAS,EACP5D,SAAS,KAAK,CAAC,GACX,EAAE,GACF,CACE;YACE6D,SAAS,EAAE/B,QAAQ,CAAC,CAAC;UACvB,CAAC;QAEX;MACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC,CACDgC,IAAI,CAAC,CAAC;AACX,CAAC;AAAC5D,OAAA,CAAAoB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -1,100 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.splitHealthImportEntries = exports.saveBundleObservations = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = void 0;
7
- var _healthSyncBatchError = require("../types/health-sync-batch-error.js");
8
- const MAX_HEALTH_IMPORT_BUNDLE_BYTES = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = 900_000;
9
- const getByteLength = value => {
10
- const TextEncoderConstructor = globalThis.TextEncoder;
11
- if (TextEncoderConstructor) {
12
- return new TextEncoderConstructor().encode(value).byteLength;
13
- }
14
- return encodeURIComponent(value).replace(/%[0-9A-F]{2}|./g, "_").length;
15
- };
16
- const getBundleByteLength = entries => getByteLength(JSON.stringify({
17
- resourceType: "Bundle",
18
- type: "batch",
19
- entry: entries
20
- }));
21
- const getMemberReference = entry => {
22
- const observation = entry.resource;
23
- return observation?.hasMember?.[0]?.reference;
24
- };
25
- const groupMeasurementEntries = entries => {
26
- const rootUrls = new Set(entries.map(entry => entry.fullUrl).filter(Boolean));
27
- const groups = new Map();
28
- entries.forEach((entry, index) => {
29
- const key = getMemberReference(entry) && rootUrls.has(getMemberReference(entry)) ? getMemberReference(entry) : entry.fullUrl ?? `entry-${index}`;
30
- const group = groups.get(key) ?? [];
31
- group.push(entry);
32
- groups.set(key, group);
33
- });
34
- return [...groups.values()];
35
- };
36
- const serializeBatch = entries => getBundleByteLength(entries);
37
- const splitHealthImportEntries = (entries, maxBytes = MAX_HEALTH_IMPORT_BUNDLE_BYTES) => {
38
- const batches = [];
39
- let current = [];
40
- for (const group of groupMeasurementEntries(entries)) {
41
- const candidate = [...current, ...group];
42
- if (current.length > 0 && serializeBatch(candidate) > maxBytes) {
43
- batches.push(current);
44
- current = [];
45
- }
46
- current.push(...group);
47
- }
48
- if (current.length > 0) {
49
- batches.push(current);
50
- }
51
- return batches;
52
- };
53
- exports.splitHealthImportEntries = splitHealthImportEntries;
54
- const createBatchError = (bundle, expectedEntries) => {
55
- const responseEntries = bundle.entry ?? [];
56
- const statusCounts = new Map();
57
- responseEntries.forEach(entry => {
58
- const status = entry.response?.status ?? "missing status";
59
- if (status.startsWith("2")) {
60
- return;
61
- }
62
- statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
63
- });
64
- const missingCount = Math.max(expectedEntries - responseEntries.length, 0);
65
- if (missingCount > 0) {
66
- statusCounts.set("missing status", (statusCounts.get("missing status") ?? 0) + missingCount);
67
- }
68
- const summary = [...statusCounts.entries()].map(([status, count]) => `${status} × ${count}`).join(", ");
69
- const error = new _healthSyncBatchError.HealthSyncBatchError(`Health import batch did not save every entry (${summary || "unknown status"})`, bundle);
70
- return error;
71
- };
72
- const saveBundleObservations = async ({
73
- entries,
74
- client
75
- }) => {
76
- const responseBundles = [];
77
- for (const batchEntries of splitHealthImportEntries(entries)) {
78
- const bundle = await client.executeBatch({
79
- resourceType: "Bundle",
80
- type: "batch",
81
- entry: batchEntries
82
- });
83
- const responseEntries = bundle.entry ?? [];
84
- const hasMissingResponse = responseEntries.length !== batchEntries.length;
85
- const hasRejectedEntry = responseEntries.some(entry => !entry.response?.status.startsWith("2"));
86
- if (hasMissingResponse || hasRejectedEntry) {
87
- throw createBatchError(bundle, batchEntries.length);
88
- }
89
- responseBundles.push(bundle);
90
- }
91
- return {
92
- ...(responseBundles[0] ?? {
93
- resourceType: "Bundle",
94
- type: "batch-response"
95
- }),
96
- entry: responseBundles.flatMap(bundle => bundle.entry ?? [])
97
- };
98
- };
99
- exports.saveBundleObservations = saveBundleObservations;
100
- //# sourceMappingURL=save-bundle-observations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_healthSyncBatchError","require","MAX_HEALTH_IMPORT_BUNDLE_BYTES","exports","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","HealthSyncBatchError","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":[]}