@ovok/native 0.4.2 → 0.4.4

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 (354) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  2. package/lib/commonjs/modules/bt-management/components/bt-provider.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js +12 -0
  4. package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js.map +1 -0
  5. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +111 -0
  6. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/index.js +209 -0
  8. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js +116 -0
  11. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
  12. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js +83 -0
  13. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
  14. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js +64 -0
  15. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
  16. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js +76 -0
  17. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
  18. package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js +13 -0
  19. package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
  20. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +120 -0
  21. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
  22. package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js +32 -0
  23. package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
  24. package/lib/commonjs/modules/bt-management/services/device-creator.js +52 -26
  25. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  26. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +22 -5
  27. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  28. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +103 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/types/accepted-device.js +6 -0
  32. package/lib/commonjs/modules/bt-management/types/accepted-device.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js +6 -0
  34. package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/types/custom-byte-order.js +2 -0
  36. package/lib/commonjs/modules/bt-management/types/custom-byte-order.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/types/custom-case-kind.js +2 -0
  38. package/lib/commonjs/modules/bt-management/types/custom-case-kind.js.map +1 -0
  39. package/lib/commonjs/modules/bt-management/types/custom-case-spec.js +6 -0
  40. package/lib/commonjs/modules/bt-management/types/custom-case-spec.js.map +1 -0
  41. package/lib/commonjs/modules/bt-management/types/custom-device-definition.js +4 -0
  42. package/lib/commonjs/modules/bt-management/types/custom-device-definition.js.map +1 -0
  43. package/lib/commonjs/modules/bt-management/types/custom-device-id.js +2 -0
  44. package/lib/commonjs/modules/bt-management/types/custom-device-id.js.map +1 -0
  45. package/lib/commonjs/modules/bt-management/types/custom-device-spec.js +6 -0
  46. package/lib/commonjs/modules/bt-management/types/custom-device-spec.js.map +1 -0
  47. package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js +2 -0
  48. package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js.map +1 -0
  49. package/lib/commonjs/modules/bt-management/types/custom-field-spec.js +6 -0
  50. package/lib/commonjs/modules/bt-management/types/custom-field-spec.js.map +1 -0
  51. package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js +6 -0
  52. package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js.map +1 -0
  53. package/lib/commonjs/modules/bt-management/types/custom-measurement.js +6 -0
  54. package/lib/commonjs/modules/bt-management/types/custom-measurement.js.map +1 -0
  55. package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js +6 -0
  56. package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
  57. package/lib/commonjs/modules/bt-management/types/custom-service-spec.js +6 -0
  58. package/lib/commonjs/modules/bt-management/types/custom-service-spec.js.map +1 -0
  59. package/lib/commonjs/modules/bt-management/types/device-key-of.js +6 -0
  60. package/lib/commonjs/modules/bt-management/types/device-key-of.js.map +1 -0
  61. package/lib/commonjs/modules/bt-management/types/device-key.js +6 -0
  62. package/lib/commonjs/modules/bt-management/types/device-key.js.map +1 -0
  63. package/lib/commonjs/modules/bt-management/types/device-measurement-map.js.map +1 -1
  64. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js +54 -0
  65. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
  66. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js +40 -0
  67. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js.map +1 -0
  68. package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js +38 -0
  69. package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js.map +1 -0
  70. package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js +15 -0
  71. package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
  72. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +11 -1
  73. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  74. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +33 -1
  75. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  76. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +4 -0
  77. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  78. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +30 -2
  79. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  80. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +19 -0
  81. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  82. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  83. package/lib/module/modules/bt-management/components/bt-provider.js.map +1 -1
  84. package/lib/module/modules/bt-management/constants/custom-device-brand.js +8 -0
  85. package/lib/module/modules/bt-management/constants/custom-device-brand.js.map +1 -0
  86. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +108 -0
  87. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
  88. package/lib/module/modules/bt-management/index.js +19 -0
  89. package/lib/module/modules/bt-management/index.js.map +1 -1
  90. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  91. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js +112 -0
  92. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
  93. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js +78 -0
  94. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
  95. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js +59 -0
  96. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
  97. package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js +71 -0
  98. package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
  99. package/lib/module/modules/bt-management/services/custom/custom-device-error.js +8 -0
  100. package/lib/module/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
  101. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +115 -0
  102. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
  103. package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js +27 -0
  104. package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
  105. package/lib/module/modules/bt-management/services/device-creator.js +52 -26
  106. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  107. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +22 -5
  108. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  109. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  110. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +98 -0
  111. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
  112. package/lib/module/modules/bt-management/types/accepted-device.js +4 -0
  113. package/lib/module/modules/bt-management/types/accepted-device.js.map +1 -0
  114. package/lib/module/modules/bt-management/types/compiled-custom-field.js +4 -0
  115. package/lib/module/modules/bt-management/types/compiled-custom-field.js.map +1 -0
  116. package/lib/module/modules/bt-management/types/custom-byte-order.js +2 -0
  117. package/lib/module/modules/bt-management/types/custom-byte-order.js.map +1 -0
  118. package/lib/module/modules/bt-management/types/custom-case-kind.js +2 -0
  119. package/lib/module/modules/bt-management/types/custom-case-kind.js.map +1 -0
  120. package/lib/module/modules/bt-management/types/custom-case-spec.js +4 -0
  121. package/lib/module/modules/bt-management/types/custom-case-spec.js.map +1 -0
  122. package/lib/module/modules/bt-management/types/custom-device-definition.js +8 -0
  123. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -0
  124. package/lib/module/modules/bt-management/types/custom-device-id.js +2 -0
  125. package/lib/module/modules/bt-management/types/custom-device-id.js.map +1 -0
  126. package/lib/module/modules/bt-management/types/custom-device-spec.js +4 -0
  127. package/lib/module/modules/bt-management/types/custom-device-spec.js.map +1 -0
  128. package/lib/module/modules/bt-management/types/custom-field-encoding.js +2 -0
  129. package/lib/module/modules/bt-management/types/custom-field-encoding.js.map +1 -0
  130. package/lib/module/modules/bt-management/types/custom-field-spec.js +4 -0
  131. package/lib/module/modules/bt-management/types/custom-field-spec.js.map +1 -0
  132. package/lib/module/modules/bt-management/types/custom-frame-spec.js +4 -0
  133. package/lib/module/modules/bt-management/types/custom-frame-spec.js.map +1 -0
  134. package/lib/module/modules/bt-management/types/custom-measurement.js +4 -0
  135. package/lib/module/modules/bt-management/types/custom-measurement.js.map +1 -0
  136. package/lib/module/modules/bt-management/types/custom-monitor-spec.js +4 -0
  137. package/lib/module/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
  138. package/lib/module/modules/bt-management/types/custom-service-spec.js +4 -0
  139. package/lib/module/modules/bt-management/types/custom-service-spec.js.map +1 -0
  140. package/lib/module/modules/bt-management/types/device-key-of.js +4 -0
  141. package/lib/module/modules/bt-management/types/device-key-of.js.map +1 -0
  142. package/lib/module/modules/bt-management/types/device-key.js +4 -0
  143. package/lib/module/modules/bt-management/types/device-key.js.map +1 -0
  144. package/lib/module/modules/bt-management/types/device-measurement-map.js +5 -0
  145. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  146. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js +49 -0
  147. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
  148. package/lib/module/modules/bt-management/utils/create-frame-validator.js +35 -0
  149. package/lib/module/modules/bt-management/utils/create-frame-validator.js.map +1 -0
  150. package/lib/module/modules/bt-management/utils/decode-medical-float.js +33 -0
  151. package/lib/module/modules/bt-management/utils/decode-medical-float.js.map +1 -0
  152. package/lib/module/modules/bt-management/utils/is-custom-device-definition.js +10 -0
  153. package/lib/module/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
  154. package/lib/module/modules/data-sync/components/android/android-health-sync.js +11 -1
  155. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  156. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +33 -1
  157. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  158. package/lib/module/modules/data-sync/services/base-health-sync-service.js +4 -0
  159. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  160. package/lib/module/modules/data-sync/services/managers/storage-manager.js +30 -2
  161. package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  162. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +19 -0
  163. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  164. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
  165. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  166. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts +2 -2
  167. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  168. package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
  169. package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
  171. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +19 -0
  173. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +5 -4
  175. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts +6 -0
  177. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
  179. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
  181. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
  183. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
  185. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
  187. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
  189. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts +12 -5
  191. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
  193. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -1
  195. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  196. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +43 -0
  197. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts +5 -0
  199. package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
  201. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  202. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts +2 -2
  203. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  204. package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
  205. package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +2 -2
  207. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-byte-order.d.ts +6 -0
  209. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
  211. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
  213. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
  215. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
  217. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  219. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
  220. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
  221. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
  223. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
  225. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
  227. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
  229. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
  231. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts +2 -2
  233. package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts +8 -0
  235. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts +5 -0
  237. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
  239. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -2
  241. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
  243. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
  245. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
  246. package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
  247. package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
  248. package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
  249. package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  252. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -0
  253. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +20 -0
  255. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  257. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts +13 -0
  258. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  259. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
  260. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  261. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts +2 -2
  262. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  263. package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
  264. package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
  265. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
  266. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
  267. package/lib/typescript/module/src/modules/bt-management/index.d.ts +19 -0
  268. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  269. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +5 -4
  270. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  271. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts +6 -0
  272. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
  273. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
  274. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
  275. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
  276. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
  277. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
  278. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
  279. package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
  280. package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
  281. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
  282. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
  283. package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
  284. package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
  285. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts +12 -5
  286. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  287. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
  288. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  289. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -1
  290. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  291. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +43 -0
  292. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
  293. package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts +5 -0
  294. package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
  295. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
  296. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  297. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts +2 -2
  298. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  299. package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
  300. package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
  301. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +2 -2
  302. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  303. package/lib/typescript/module/src/modules/bt-management/types/custom-byte-order.d.ts +6 -0
  304. package/lib/typescript/module/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
  305. package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
  306. package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
  307. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
  308. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
  309. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
  310. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
  311. package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
  312. package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
  313. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  314. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
  315. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
  316. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
  317. package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
  318. package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
  319. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
  320. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
  321. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
  322. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
  323. package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
  324. package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
  325. package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
  326. package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
  327. package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts +2 -2
  328. package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts.map +1 -1
  329. package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts +8 -0
  330. package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
  331. package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts +5 -0
  332. package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts.map +1 -0
  333. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
  334. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  335. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -2
  336. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  337. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
  338. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
  339. package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
  340. package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
  341. package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
  342. package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
  343. package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
  344. package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
  345. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  346. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  347. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -0
  348. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  349. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +20 -0
  350. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  351. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  352. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts +13 -0
  353. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  354. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_androidHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AndroidHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AndroidHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_androidHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AndroidHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AndroidHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,uBAAA,CAAAH,OAAA;AAEA,IAAAI,yBAAA,GAAAJ,OAAA;AAAsF,SAAAG,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAI/E,MAAMkB,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAAGtB,KAAK,CAACwB,IAAI,CACzC,CAAC;EAAEC,UAAU;EAAEC,SAAS;EAAEC,OAAO;EAAEC;AAAmC,CAAC,KAAK;EAC1E,MAAMC,MAAM,GAAG,IAAAC,eAAS,EAAC,CAAC;EAC1B,MAAMC,OAAO,GAAG,IAAAC,uBAAiB,EAAC,CAAC;EACnC,MAAMC,UAAU,GAAGjC,KAAK,CAACkC,MAAM,CAAkC,IAAI,CAAC;EACtE,MAAM;IAAEC,WAAW;IAAEC;EAAK,CAAC,GAAG,IAAAC,mBAAU,EAAC,CAAC;EAE1C,MAAMC,UAAU,GAAGtC,KAAK,CAACkC,MAAM,CAACP,OAAO,CAAC;EACxC,MAAMY,aAAa,GAAGvC,KAAK,CAACkC,MAAM,CAACN,UAAU,CAAC;EAE9C,MAAMY,WAAW,GAAGxC,KAAK,CAACkC,MAAM,CAE9B,CAAC,CAAC,CAAC;EAEL,MAAMO,cAAc,GAAGzC,KAAK,CAAC0C,WAAW,CAAEC,QAAsB,IAAK;IACnEH,WAAW,CAACI,OAAO,CAACD,QAAQ,CAACE,kBAAkB,CAAC,GAAGF,QAAQ;IAE3DJ,aAAa,CAACK,OAAO,GAAGJ,WAAW,CAACI,OAAO,CAAC;EAC9C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,QAAQ,GAAG9C,KAAK,CAAC0C,WAAW,CAAC,YAAY;IAC7C,IAAI;MACFT,UAAU,CAACW,OAAO,GAAGG,kDAAwB,CAACC,WAAW,CAAC;QACxDnB,MAAM;QACNoB,SAAS,EAAElB,OAAO,EAAEmB,EAAE,IAAI,EAAE;QAC5BzB,UAAU;QACVC,SAAS;QACTyB,WAAW,EAAGC,KAAY,IAAKd,UAAU,CAACM,OAAO,GAAGQ,KAAK,CAAC;QAC1DX;MACF,CAAC,CAAC;MAEF,MAAMR,UAAU,CAACW,OAAO,CAACS,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,OAAOD,KAAK,EAAE;MACdd,UAAU,CAACM,OAAO,GAAGQ,KAAc,CAAC;IACtC;EACF,CAAC,EAAE,CAACvB,MAAM,EAAEJ,UAAU,EAAEC,SAAS,EAAEK,OAAO,EAAEmB,EAAE,EAAET,cAAc,CAAC,CAAC;EAEhEzC,KAAK,CAACsD,SAAS,CAAC,MAAM;IACpBR,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd9C,KAAK,CAACsD,SAAS,CAAC,MAAM;IACpB,IAAI,CAACrB,UAAU,CAACW,OAAO,EAAE;MACvB;IACF;IAEA,IAAI,CAACT,WAAW,IAAIC,IAAI,KAAK,MAAM,EAAE;MACnCH,UAAU,CAACW,OAAO,CAACW,SAAS,CAAC,CAAC;MAE9B;IACF;IAEAtB,UAAU,CAACW,OAAO,CAACS,SAAS,CAAC,CAAC;EAChC,CAAC,EAAE,CAAClB,WAAW,EAAEC,IAAI,CAAC,CAAC;EAEvBpC,KAAK,CAACsD,SAAS,CAAC,MAAM;IACpBhB,UAAU,CAACM,OAAO,GAAGjB,OAAO;IAC5BY,aAAa,CAACK,OAAO,GAAGhB,UAAU;EACpC,CAAC,EAAE,CAACD,OAAO,EAAEC,UAAU,CAAC,CAAC;EAEzB5B,KAAK,CAACsD,SAAS,CAAC,MAAM;IACpB,OAAO,MAAM;MACX;AACR;AACA;AACA;AACA;AACA;MACQ,IAAI;QACFrB,UAAU,CAACW,OAAO,EAAEY,QAAQ,CAAC,CAAC;MAChC,CAAC,CAAC,OAAOJ,KAAK,EAAE;QACdd,UAAU,CAACM,OAAO,GAAGQ,KAAc,CAAC;MACtC;MAEAnB,UAAU,CAACW,OAAO,GAAG,IAAI;IAC3B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,IAAI;AACb,CACF,CAAC","ignoreList":[]}
@@ -45,6 +45,28 @@ const AppleHealthSync = exports.AppleHealthSync = /*#__PURE__*/React.memo(({
45
45
  onErrorRef.current?.(error);
46
46
  }
47
47
  }, [client, dataToSync, chunkSize, patient?.id, updateProgress]);
48
+
49
+ /**
50
+ * The first sync, which nothing used to start.
51
+ *
52
+ * `useListenChanges` subscribes to HealthKit observer queries, and the
53
+ * native side scopes those to samples that start from NOW —
54
+ * `HKQuery.predicateForSamples(withStart: Date.init(), …)` in
55
+ * `@kingstinct/react-native-healthkit`. So the subscription can never fire
56
+ * for data that already exists, and the only other caller, the network
57
+ * effect below, returns early while `serviceRef.current` is null — which
58
+ * only this path assigns. A patient installed the app, granted HealthKit
59
+ * and saw nothing: their existing history was never read, and nothing new
60
+ * arrived unless they moved with the app open.
61
+ *
62
+ * `startSync` reads the per-code watermark off the server and pages
63
+ * forward from it, so it IS the initial sync; it just had no caller here.
64
+ * `AndroidHealthSync` has had this effect all along — this is the platform
65
+ * catching up with its sibling, not a new mechanism.
66
+ */
67
+ React.useEffect(() => {
68
+ syncData();
69
+ }, [syncData]);
48
70
  (0, _useListenChanges.useListenChanges)(dataToSync, () => {
49
71
  syncData();
50
72
  });
@@ -64,7 +86,17 @@ const AppleHealthSync = exports.AppleHealthSync = /*#__PURE__*/React.memo(({
64
86
  }, [onError, onProgress]);
65
87
  React.useEffect(() => {
66
88
  return () => {
67
- serviceRef.current?.stopSync();
89
+ /*
90
+ * A teardown that throws takes the unmount with it, and React has no
91
+ * boundary for a cleanup function — so a sync that fails to stop
92
+ * became a crash on the way out of a screen. The error goes to the
93
+ * app's own handler, which is what `onError` is for.
94
+ */
95
+ try {
96
+ serviceRef.current?.stopSync();
97
+ } catch (error) {
98
+ onErrorRef.current?.(error);
99
+ }
68
100
  serviceRef.current = null;
69
101
  };
70
102
  }, []);
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_useListenChanges","_appleHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AppleHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useListenChanges","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-sync.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_netinfo","React","_interopRequireWildcard","_useListenChanges","_appleHealthSyncService","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppleHealthSync","exports","memo","dataToSync","chunkSize","onError","onProgress","client","useClient","patient","useMedplumProfile","serviceRef","useRef","isConnected","type","useNetInfo","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","AppleHealthSyncService","getInstance","patientId","id","onSyncError","error","startSync","useEffect","useListenChanges","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-sync.tsx"],"mappings":"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","ignoreList":[]}
@@ -19,7 +19,11 @@ class BaseHealthSyncService {
19
19
  this.storageManager = new _storageManager.StorageManager(props.client, this.getProviderName());
20
20
  this.dataProcessor = new _dataProcessor.DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ?? 5000, this.storageManager, this.getTotalCountsFunction(), this.getDataFromProviderFunction(), this.getConverterFunction());
21
21
  }
22
+ /** One run at a time; see `SyncStateManager.once` for why that matters. */
22
23
  async startSync() {
24
+ return this.stateManager.once(() => this.runSync());
25
+ }
26
+ async runSync() {
23
27
  try {
24
28
  if (!this.client.isInitialized) {
25
29
  this.onSyncError(new Error("Client not initialized"));
@@ -1 +1 @@
1
- {"version":3,"names":["_dataProcessor","require","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","getProviderName","dataProcessor","DataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasAnchor","observationBodies","currentHasAnchor","getObservationBodiesForType","entries","generateObservationEntries","incrementSyncedObservations","length","result","saveObservations","addResult","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_dataProcessor","require","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","getProviderName","dataProcessor","DataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasAnchor","observationBodies","currentHasAnchor","getObservationBodiesForType","entries","generateObservationEntries","incrementSyncedObservations","length","result","saveObservations","addResult","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,25 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.StorageManager = void 0;
7
7
  var _saveBundleObservations = require("../../utils/save-bundle-observations.js");
8
8
  class StorageManager {
9
+ /**
10
+ * Where an anchor goes when the host client has no storage.
11
+ *
12
+ * `clientStorage` is assigned from `OvokClient`'s `storage` option and from
13
+ * nowhere else, so a host that constructs its client without one leaves it
14
+ * `undefined` — and the `?.` below then swallowed every write while
15
+ * `getAnchor` answered `undefined` for ever. That is not a lost
16
+ * optimisation: `getObservationBodiesForType` reports `hasAnchor` from the
17
+ * anchor the provider just returned, and `syncDataByType` loops while it is
18
+ * true. An anchor that never advances means the next read starts from the
19
+ * beginning again, returns the same first chunk and the same anchor, and
20
+ * uploads it — for ever.
21
+ *
22
+ * The sync must not depend on what the host passed. This map keeps the
23
+ * anchor for the life of the service instance, which is what lets the loop
24
+ * end; when the host DOES provide storage the anchor also survives a
25
+ * restart, which is what keeps the next cold start short.
26
+ */
27
+ inMemoryAnchors = new Map();
9
28
  constructor(client, provider) {
10
29
  this.client = client;
11
30
  this.provider = provider;
@@ -17,10 +36,19 @@ class StorageManager {
17
36
  });
18
37
  }
19
38
  saveAnchor(typeIdentifier, anchor) {
20
- this.client.clientStorage?.setString(`${this.provider}-sync-${typeIdentifier}-anchor`, anchor);
39
+ const key = this.anchorKey(typeIdentifier);
40
+ if (this.client.clientStorage) {
41
+ this.client.clientStorage.setString(key, anchor);
42
+ return;
43
+ }
44
+ this.inMemoryAnchors.set(key, anchor);
21
45
  }
22
46
  getAnchor(typeIdentifier) {
23
- return this.client.clientStorage?.getString(`${this.provider}-sync-${typeIdentifier}-anchor`);
47
+ const key = this.anchorKey(typeIdentifier);
48
+ return this.client.clientStorage ? this.client.clientStorage.getString(key) : this.inMemoryAnchors.get(key);
49
+ }
50
+ anchorKey(typeIdentifier) {
51
+ return `${this.provider}-sync-${typeIdentifier}-anchor`;
24
52
  }
25
53
  saveAnchors(anchors) {
26
54
  anchors.forEach(({
@@ -1 +1 @@
1
- {"version":3,"names":["_saveBundleObservations","require","StorageManager","constructor","client","provider","saveObservations","entries","saveBundleObservations","saveAnchor","typeIdentifier","anchor","clientStorage","setString","getAnchor","getString","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,uBAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,CAAC;EAC1BC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAO,IAAAC,8CAAsB,EAAC;MAC5BD,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;EAEAK,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,IAAI,CAACP,MAAM,CAACQ,aAAa,EAAEC,SAAS,CAClC,GAAG,IAAI,CAACR,QAAQ,SAASK,cAAc,SAAS,EAChDC,MACF,CAAC;EACH;EAEAG,SAASA,CAACJ,cAAsB,EAAsB;IACpD,OAAO,IAAI,CAACN,MAAM,CAACQ,aAAa,EAAEG,SAAS,CACzC,GAAG,IAAI,CAACV,QAAQ,SAASK,cAAc,SACzC,CAAC;EACH;EAEAM,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAER,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACQ,OAAA,CAAAjB,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_saveBundleObservations","require","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","entries","saveBundleObservations","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,uBAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAO,IAAAC,8CAAsB,EAAC;MAC5BD,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;EAEAK,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAACN,MAAM,CAACU,aAAa,EAAE;MAC7B,IAAI,CAACV,MAAM,CAACU,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAACV,eAAe,CAACe,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAACN,MAAM,CAACU,aAAa,GAC5B,IAAI,CAACV,MAAM,CAACU,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAACX,eAAe,CAACkB,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAACL,QAAQ,SAASK,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAAvB,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -5,6 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SyncStateManager = void 0;
7
7
  class SyncStateManager {
8
+ /**
9
+ * A sync in flight, so a second caller joins it rather than starting another.
10
+ *
11
+ * There are three callers and they overlap by construction:
12
+ * `InstanceManager.getInstanceInternal` starts one as a side effect of
13
+ * handing back the instance, the component starts one on mount, and the
14
+ * change subscription starts one whenever the provider reports new samples.
15
+ * Two runs over one data type read the same chunk and upload it twice,
16
+ * because the read cursor only advances once a read has returned.
17
+ */
18
+
8
19
  shouldStopSync = false;
9
20
  initialDataFetched = false;
10
21
  latestObservationDates = [];
@@ -12,6 +23,14 @@ class SyncStateManager {
12
23
  addResult(result) {
13
24
  this.results.push(result);
14
25
  }
26
+
27
+ /** Runs `sync`, or joins the run already under way. */
28
+ async once(sync) {
29
+ this.inFlight ??= sync().finally(() => {
30
+ this.inFlight = undefined;
31
+ });
32
+ return this.inFlight;
33
+ }
15
34
  reset() {
16
35
  this.shouldStopSync = false;
17
36
  this.initialDataFetched = false;
@@ -1 +1 @@
1
- {"version":3,"names":["SyncStateManager","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","reset","pause","resume","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,CAAC;EACrBC,cAAc,GAAG,KAAK;EACtBC,kBAAkB,GAAG,KAAK;EAC1BC,sBAAsB,GAGxB,EAAE;EACAC,OAAO,GAA0B,EAAE;EAE1CC,SAASA,CAACC,MAA2B,EAAQ;IAC3C,IAAI,CAACF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;EAEAE,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACP,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,sBAAsB,GAAG,EAAE;IAChC,IAAI,CAACC,OAAO,GAAG,EAAE;EACnB;EAEAK,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACR,cAAc,GAAG,IAAI;EAC5B;EAEAS,MAAMA,CAAA,EAAS;IACb,IAAI,CAACT,cAAc,GAAG,KAAK;EAC7B;AACF;AAACU,OAAA,CAAAX,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["SyncStateManager","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","once","sync","inFlight","finally","undefined","reset","pause","resume","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,CAAC;EAC5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGSC,cAAc,GAAG,KAAK;EACtBC,kBAAkB,GAAG,KAAK;EAC1BC,sBAAsB,GAGxB,EAAE;EACAC,OAAO,GAA0B,EAAE;EAE1CC,SAASA,CAACC,MAA2B,EAAQ;IAC3C,IAAI,CAACF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;;EAEA;EACA,MAAME,IAAIA,CAACC,IAAyB,EAAiB;IACnD,IAAI,CAACC,QAAQ,KAAKD,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,MAAM;MACrC,IAAI,CAACD,QAAQ,GAAGE,SAAS;IAC3B,CAAC,CAAC;IAEF,OAAO,IAAI,CAACF,QAAQ;EACtB;EAEAG,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACZ,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,sBAAsB,GAAG,EAAE;IAChC,IAAI,CAACC,OAAO,GAAG,EAAE;EACnB;EAEAU,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACb,cAAc,GAAG,IAAI;EAC5B;EAEAc,MAAMA,CAAA,EAAS;IACb,IAAI,CAACd,cAAc,GAAG,KAAK;EAC7B;AACF;AAACe,OAAA,CAAAhB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","ActivityIndicator","useRequestPermissions","BTProviderChildWrapper","DefaultPermissionFallback","jsx","_jsx","BTProvider","permissionFallback","onAccessPermissionChanged","props","accessPermission","openBleSetting","undefined","testID","retry"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,oBAAoB;AAEtD,SAASC,qBAAqB,QAAQ,qCAAkC;AAIxE,SAASC,sBAAsB,QAAQ,gCAA6B;AACpE,SAASC,yBAAyB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1E,OAAO,MAAMC,UAAU,GAAGA,CAAyC;EACjEC,kBAAkB;EAClBC,yBAAyB;EACzB,GAAGC;AACwC,CAAC,KAAK;EACjD,MAAM;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAGV,qBAAqB,CAAC;IACjEO;EACF,CAAC,CAAC;EAEF,IAAIE,gBAAgB,KAAKE,SAAS,EAAE;IAClC,oBAAOP,IAAA,CAACL,iBAAiB;MAACa,MAAM,EAAC;IAAoB,CAAE,CAAC;EAC1D;EAEA,IAAI,CAACH,gBAAgB,EAAE;IACrB,OAAOH,kBAAkB,GACvBA,kBAAkB,CAAC,CAAC,gBAEpBF,IAAA,CAACF,yBAAyB;MAACW,KAAK,EAAEH;IAAe,CAAE,CACpD;EACH;EAEA,oBAAON,IAAA,CAACH,sBAAsB;IAAA,GAAKO;EAAK,CAAG,CAAC;AAC9C,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","ActivityIndicator","useRequestPermissions","BTProviderChildWrapper","DefaultPermissionFallback","jsx","_jsx","BTProvider","permissionFallback","onAccessPermissionChanged","props","accessPermission","openBleSetting","undefined","testID","retry"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,oBAAoB;AAEtD,SAASC,qBAAqB,QAAQ,qCAAkC;AAIxE,SAASC,sBAAsB,QAAQ,gCAA6B;AACpE,SAASC,yBAAyB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1E,OAAO,MAAMC,UAAU,GAAGA,CAAsC;EAC9DC,kBAAkB;EAClBC,yBAAyB;EACzB,GAAGC;AACwC,CAAC,KAAK;EACjD,MAAM;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAGV,qBAAqB,CAAC;IACjEO;EACF,CAAC,CAAC;EAEF,IAAIE,gBAAgB,KAAKE,SAAS,EAAE;IAClC,oBAAOP,IAAA,CAACL,iBAAiB;MAACa,MAAM,EAAC;IAAoB,CAAE,CAAC;EAC1D;EAEA,IAAI,CAACH,gBAAgB,EAAE;IACrB,OAAOH,kBAAkB,GACvBA,kBAAkB,CAAC,CAAC,gBAEpBF,IAAA,CAACF,yBAAyB;MAACW,KAAK,EAAEH;IAAe,CAAE,CACpD;EACH;EAEA,oBAAON,IAAA,CAACH,sBAAsB;IAAA,GAAKO;EAAK,CAAG,CAAC;AAC9C,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Marks an object as the output of defineCustomDevice. A hand-rolled definition that
5
+ * skipped registration validation therefore cannot be passed to acceptedDevices.
6
+ */
7
+ export const CUSTOM_DEVICE_BRAND = Symbol.for("ovok.customDevice");
8
+ //# sourceMappingURL=custom-device-brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CUSTOM_DEVICE_BRAND","Symbol","for"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/custom-device-brand.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAO,MAAMA,mBAAkC,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ import { MeasurementTypeKey } from "@ovok/core";
4
+
5
+ /**
6
+ * The measurement types a declaration may produce, the properties each one accepts, the
7
+ * canonical unit of every property, and the physiological envelope outside which a decoded
8
+ * value is treated as a decoding fault rather than a reading.
9
+ *
10
+ * A measurement type absent from this catalog cannot be declared. ECG, urine analysis and
11
+ * the cosinuss multi-parameter stream are absent on purpose: they are assembled across
12
+ * several notifications and need a device class, not a declaration.
13
+ *
14
+ * The property names mirror the measurement types in @ovok/core. A typo would otherwise
15
+ * produce an object the backend silently drops, so it is rejected at registration instead.
16
+ *
17
+ * `required` marks the properties without which the reading is not that measurement. Every
18
+ * property in @ovok/core is optional, so a declaration that named only `systolic` would
19
+ * otherwise compile and then post a blood pressure with no diastolic - a plausible clinical
20
+ * record of something that was never measured. A "result" case must declare all of them.
21
+ */
22
+
23
+ export const measurementFieldCatalog = {
24
+ [MeasurementTypeKey.bloodPressure]: {
25
+ systolic: {
26
+ unit: "mmHg",
27
+ min: 30,
28
+ max: 300,
29
+ required: true
30
+ },
31
+ diastolic: {
32
+ unit: "mmHg",
33
+ min: 10,
34
+ max: 220,
35
+ required: true
36
+ },
37
+ heartRate: {
38
+ unit: "bpm",
39
+ min: 20,
40
+ max: 300
41
+ }
42
+ },
43
+ [MeasurementTypeKey.bodyWeight]: {
44
+ bodyWeight: {
45
+ unit: "kg",
46
+ min: 1,
47
+ max: 500,
48
+ required: true
49
+ }
50
+ },
51
+ [MeasurementTypeKey.temperature]: {
52
+ bodyTemp: {
53
+ unit: "Cel",
54
+ min: 25,
55
+ max: 45,
56
+ required: true
57
+ }
58
+ },
59
+ [MeasurementTypeKey.bloodGlucose]: {
60
+ bloodGlucose: {
61
+ unit: "mg/dL",
62
+ min: 10,
63
+ max: 1000,
64
+ required: true
65
+ }
66
+ },
67
+ [MeasurementTypeKey.bloodOxygenPulseRate]: {
68
+ bloodOxygen: {
69
+ unit: "%",
70
+ min: 50,
71
+ max: 100,
72
+ required: true
73
+ },
74
+ pulseRate: {
75
+ unit: "bpm",
76
+ min: 20,
77
+ max: 300,
78
+ required: true
79
+ },
80
+ perfusionIndex: {
81
+ unit: "%",
82
+ min: 0,
83
+ max: 25
84
+ },
85
+ rrInterval: {
86
+ unit: "ms",
87
+ min: 200,
88
+ max: 3000
89
+ }
90
+ },
91
+ [MeasurementTypeKey.heartRate]: {
92
+ heartRate: {
93
+ unit: "bpm",
94
+ min: 20,
95
+ max: 300,
96
+ required: true
97
+ }
98
+ },
99
+ [MeasurementTypeKey.respiratoryRate]: {
100
+ respiratoryRate: {
101
+ unit: "/min",
102
+ min: 2,
103
+ max: 90,
104
+ required: true
105
+ }
106
+ }
107
+ };
108
+ //# sourceMappingURL=measurement-field-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MeasurementTypeKey","measurementFieldCatalog","bloodPressure","systolic","unit","min","max","required","diastolic","heartRate","bodyWeight","temperature","bodyTemp","bloodGlucose","bloodOxygenPulseRate","bloodOxygen","pulseRate","perfusionIndex","rrInterval","respiratoryRate"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/measurement-field-catalog.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAO,MAAMC,uBAEZ,GAAG;EACF,CAACD,kBAAkB,CAACE,aAAa,GAAG;IAClCC,QAAQ,EAAE;MAAEC,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DC,SAAS,EAAE;MAAEJ,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC9DE,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE;IAAI;EAC9C,CAAC;EACD,CAACN,kBAAkB,CAACU,UAAU,GAAG;IAC/BA,UAAU,EAAE;MAAEN,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC7D,CAAC;EACD,CAACP,kBAAkB,CAACW,WAAW,GAAG;IAChCC,QAAQ,EAAE;MAAER,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EAC5D,CAAC;EACD,CAACP,kBAAkB,CAACa,YAAY,GAAG;IACjCA,YAAY,EAAE;MAAET,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,IAAI;MAAEC,QAAQ,EAAE;IAAK;EACpE,CAAC;EACD,CAACP,kBAAkB,CAACc,oBAAoB,GAAG;IACzCC,WAAW,EAAE;MAAEX,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DS,SAAS,EAAE;MAAEZ,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DU,cAAc,EAAE;MAAEb,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAG,CAAC;IAC9CY,UAAU,EAAE;MAAEd,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,GAAG;MAAEC,GAAG,EAAE;IAAK;EAChD,CAAC;EACD,CAACN,kBAAkB,CAACS,SAAS,GAAG;IAC9BA,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC9D,CAAC;EACD,CAACP,kBAAkB,CAACmB,eAAe,GAAG;IACpCA,eAAe,EAAE;MAAEf,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EACnE;AACF,CAAC","ignoreList":[]}
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  export * from "./types/i-bt-managed-device.js";
4
+ export * from "./types/accepted-device.js";
5
+ export * from "./types/compiled-custom-field.js";
6
+ export * from "./types/custom-byte-order.js";
7
+ export * from "./types/custom-case-kind.js";
8
+ export * from "./types/custom-case-spec.js";
9
+ export * from "./types/custom-device-definition.js";
10
+ export * from "./types/custom-device-id.js";
11
+ export * from "./types/custom-device-spec.js";
12
+ export * from "./types/custom-field-encoding.js";
13
+ export * from "./types/custom-field-spec.js";
14
+ export * from "./types/custom-frame-spec.js";
15
+ export * from "./types/custom-measurement.js";
16
+ export * from "./types/custom-monitor-spec.js";
17
+ export * from "./types/custom-service-spec.js";
18
+ export * from "./types/device-key.js";
19
+ export * from "./types/device-key-of.js";
4
20
  export * from "./types/device-data.js";
5
21
  export * from "./types/device-status.js";
6
22
  export * from "./types/integrated-devices.js";
@@ -13,7 +29,10 @@ export * from "./types/result-callback.js";
13
29
  export * from "./types/error-callback.js";
14
30
  export * from "./types/device-status-change-callback.js";
15
31
  export * from "./services/devices/bt-managed-device.js";
32
+ export * from "./services/devices/custom/custom.device.js";
16
33
  export * from "./services/bt-manager.js";
34
+ export * from "./services/custom/define-custom-device.js";
35
+ export * from "./constants/measurement-field-catalog.js";
17
36
  export * from "./components/bt-provider.js";
18
37
  export * from "./components/default-permission-fallback.js";
19
38
  export * from "./hooks/use-request-permissions.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,0BAAuB;AAErC,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AAEtD,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ import { measurementFieldCatalog } from "../../constants/measurement-field-catalog.js";
4
+ import { CaseType } from "../../types/case-type.js";
5
+ import { createCustomFieldParser } from "../../utils/create-custom-field-parser.js";
6
+ import { compileCustomField } from "./compile-custom-field.js";
7
+ import { customDeviceError } from "./custom-device-error.js";
8
+
9
+ /**
10
+ * A "result" frame compiles to CaseType.DEPENDENT, not CaseType.RESULT.
11
+ *
12
+ * BTDataProcessor only forwards a RESULT case while the device is already streaming, so a
13
+ * device that sends one self-contained notification - the common shape for a standard GATT
14
+ * sensor - would be silently dropped. A DEPENDENT case is always handed to the device, which
15
+ * reports the reading and then rewrites the frame to OTHER so the status returns to
16
+ * CONNECTED. Devices that do stream first behave identically.
17
+ */
18
+ const CASE_TYPES = {
19
+ result: CaseType.DEPENDENT,
20
+ stream: CaseType.STREAM,
21
+ idle: CaseType.OTHER
22
+ };
23
+ const assertMeasurementTypeKey = (id, path, caseSpec) => {
24
+ const key = caseSpec.measurementTypeKey;
25
+ if (key === undefined) {
26
+ if (caseSpec.kind === "result") {
27
+ throw customDeviceError(id, `${path}.measurementTypeKey`, 'is required on a "result" case');
28
+ }
29
+ return undefined;
30
+ }
31
+ if (!measurementFieldCatalog[key]) {
32
+ throw customDeviceError(id, `${path}.measurementTypeKey`, `"${key}" cannot be declared; it is assembled across several notifications and needs a device class in the SDK. Declarable types: ${Object.keys(measurementFieldCatalog).join(", ")}`);
33
+ }
34
+ return key;
35
+ };
36
+ const registerField = (id, path, compiled, measurementTypeKey, fields) => {
37
+ const key = `${measurementTypeKey}:${compiled.name}`;
38
+ const existing = fields.get(key);
39
+ if (existing && (existing.min !== compiled.min || existing.max !== compiled.max)) {
40
+ throw customDeviceError(id, path, `declares ${compiled.name} with different bounds (${compiled.min}-${compiled.max}) than an earlier case (${existing.min}-${existing.max}); a property must mean the same thing in every frame`);
41
+ }
42
+ fields.set(key, compiled);
43
+ };
44
+
45
+ /**
46
+ * A reading must carry every property that makes it that measurement. A blood pressure
47
+ * without a diastolic is not a partial blood pressure, it is a clinical record of something
48
+ * the device never reported, so the declaration is refused rather than the reading dropped.
49
+ */
50
+ const assertRequiredFields = (id, path, declared, measurementTypeKey) => {
51
+ const catalog = measurementFieldCatalog[measurementTypeKey] ?? {};
52
+ const declaredNames = new Set(declared.map(field => field?.name));
53
+ const missing = Object.entries(catalog).filter(([name, field]) => field.required && !declaredNames.has(name)).map(([name]) => name);
54
+ if (missing.length > 0) {
55
+ throw customDeviceError(id, `${path}.fields`, `does not declare ${missing.join(", ")}, which ${measurementTypeKey} needs to be a complete reading`);
56
+ }
57
+ };
58
+ const compileFields = (id, path, declared, measurementTypeKey, minLengthBytes, fields) => {
59
+ const names = new Set();
60
+ return declared.map((field, index) => {
61
+ if (names.has(field.name)) {
62
+ throw customDeviceError(id, `${path}.fields[${index}].name`, `"${field.name}" is declared twice in this case`);
63
+ }
64
+ names.add(field.name);
65
+ const compiled = compileCustomField(id, `${path}.fields[${index}]`, field, measurementTypeKey, minLengthBytes);
66
+ registerField(id, path, compiled, measurementTypeKey, fields);
67
+ return {
68
+ name: compiled.name,
69
+ parseType: "custom",
70
+ byteIndexes: compiled.byteIndexes,
71
+ customParserDefinition: createCustomFieldParser(compiled)
72
+ };
73
+ });
74
+ };
75
+
76
+ /** Validates one declared frame shape and turns it into a parsing case. */
77
+ export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) => {
78
+ const caseType = CASE_TYPES[caseSpec.kind];
79
+ if (!caseType) {
80
+ throw customDeviceError(id, `${path}.kind`, `is "${String(caseSpec.kind)}"; expected ${Object.keys(CASE_TYPES).join(", ")}`);
81
+ }
82
+ const measurementTypeKey = assertMeasurementTypeKey(id, path, caseSpec);
83
+ const declared = caseSpec.fields ?? [];
84
+ if (caseSpec.kind !== "result") {
85
+ if (declared.length > 0) {
86
+ throw customDeviceError(id, path, 'declares fields, but fields may be declared on only a "result" case');
87
+ }
88
+ return {
89
+ measurementTypeKey,
90
+ caseType,
91
+ caseValue: String(caseSpec.selector ?? "").toLowerCase(),
92
+ parseDefinitions: [],
93
+ description: caseSpec.description
94
+ };
95
+ }
96
+ if (declared.length === 0 || !measurementTypeKey) {
97
+ throw customDeviceError(id, path, 'is a "result" case and must declare at least one field');
98
+ }
99
+
100
+ // Every field is checked first, so a misspelt property is reported as the typo it is
101
+ // rather than as the required property it failed to satisfy.
102
+ const parseDefinitions = compileFields(id, path, declared, measurementTypeKey, minLengthBytes, fields);
103
+ assertRequiredFields(id, path, declared, measurementTypeKey);
104
+ return {
105
+ measurementTypeKey,
106
+ caseType,
107
+ caseValue: String(caseSpec.selector ?? "").toLowerCase(),
108
+ parseDefinitions,
109
+ description: caseSpec.description
110
+ };
111
+ };
112
+ //# sourceMappingURL=compile-custom-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["measurementFieldCatalog","CaseType","createCustomFieldParser","compileCustomField","customDeviceError","CASE_TYPES","result","DEPENDENT","stream","STREAM","idle","OTHER","assertMeasurementTypeKey","id","path","caseSpec","key","measurementTypeKey","undefined","kind","Object","keys","join","registerField","compiled","fields","name","existing","get","min","max","set","assertRequiredFields","declared","catalog","declaredNames","Set","map","field","missing","entries","filter","required","has","length","compileFields","minLengthBytes","names","index","add","parseType","byteIndexes","customParserDefinition","compileCustomCase","caseType","String","caseValue","selector","toLowerCase","parseDefinitions","description"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-case.ts"],"mappings":"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","ignoreList":[]}