@ovok/native 1.16.1-dev.2133 → 1.16.1-dev.2139

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 (243) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  4. package/lib/commonjs/modules/bt-management/index.js +12 -0
  5. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/services/bt-manager.js +50 -0
  7. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +3 -0
  9. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  11. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  13. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  14. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js +59 -0
  15. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  16. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js +18 -37
  17. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +17 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  20. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js +68 -0
  21. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js +70 -0
  23. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  26. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +77 -0
  27. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +49 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +89 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +35 -42
  33. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  34. package/lib/commonjs/modules/bt-management/services/record-cursor.js +70 -0
  35. package/lib/commonjs/modules/bt-management/services/record-cursor.js.map +1 -0
  36. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js +8 -0
  37. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  38. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js +2 -0
  39. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js.map +1 -0
  40. package/lib/commonjs/modules/bt-management/utils/result-identity.js +26 -13
  41. package/lib/commonjs/modules/bt-management/utils/result-identity.js.map +1 -1
  42. package/lib/commonjs/modules/bt-management/utils/wait.js +10 -0
  43. package/lib/commonjs/modules/bt-management/utils/wait.js.map +1 -0
  44. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js +41 -4
  45. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -1
  46. package/lib/commonjs/modules/next/bluetooth/connections.js +4 -0
  47. package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
  48. package/lib/commonjs/modules/next/bluetooth/driver.js +6 -0
  49. package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
  50. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js +12 -1
  51. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -1
  52. package/lib/commonjs/modules/next/bluetooth/readings.js +2 -1
  53. package/lib/commonjs/modules/next/bluetooth/readings.js.map +1 -1
  54. package/lib/commonjs/modules/next/bluetooth/stable-hash.js +16 -7
  55. package/lib/commonjs/modules/next/bluetooth/stable-hash.js.map +1 -1
  56. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  57. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  58. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  59. package/lib/module/modules/bt-management/index.js +1 -0
  60. package/lib/module/modules/bt-management/index.js.map +1 -1
  61. package/lib/module/modules/bt-management/services/bt-manager.js +50 -0
  62. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  63. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +3 -0
  64. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  65. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  66. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  67. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  68. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  69. package/lib/module/modules/bt-management/services/devices/bt-current-time.js +55 -0
  70. package/lib/module/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  71. package/lib/module/modules/bt-management/services/devices/bt-device-information.js +18 -37
  72. package/lib/module/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  73. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +19 -3
  74. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  75. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js +65 -0
  76. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  77. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js +65 -0
  78. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  79. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  80. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  81. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +72 -0
  82. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  83. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +40 -0
  84. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  85. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +85 -0
  86. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  87. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +25 -32
  88. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  89. package/lib/module/modules/bt-management/services/record-cursor.js +66 -0
  90. package/lib/module/modules/bt-management/services/record-cursor.js.map +1 -0
  91. package/lib/module/modules/bt-management/testing/fake-ble-manager.js +8 -0
  92. package/lib/module/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  93. package/lib/module/modules/bt-management/types/custom-device-definition.js +4 -0
  94. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -1
  95. package/lib/module/modules/bt-management/types/glucose-record-details.js +2 -0
  96. package/lib/module/modules/bt-management/types/glucose-record-details.js.map +1 -0
  97. package/lib/module/modules/bt-management/utils/result-identity.js +24 -12
  98. package/lib/module/modules/bt-management/utils/result-identity.js.map +1 -1
  99. package/lib/module/modules/bt-management/utils/wait.js +5 -0
  100. package/lib/module/modules/bt-management/utils/wait.js.map +1 -0
  101. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js +41 -4
  102. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -1
  103. package/lib/module/modules/next/bluetooth/connections.js +4 -0
  104. package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
  105. package/lib/module/modules/next/bluetooth/driver.js +6 -0
  106. package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
  107. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js +12 -1
  108. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -1
  109. package/lib/module/modules/next/bluetooth/readings.js +2 -1
  110. package/lib/module/modules/next/bluetooth/readings.js.map +1 -1
  111. package/lib/module/modules/next/bluetooth/stable-hash.js +15 -6
  112. package/lib/module/modules/next/bluetooth/stable-hash.js.map +1 -1
  113. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  114. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  116. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
  118. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  120. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  122. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  124. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  126. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  128. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  130. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
  132. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  134. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  136. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  138. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  140. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  142. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  144. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  147. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  150. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  152. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  154. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  156. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -0
  158. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  160. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts +3 -0
  162. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  164. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +1 -1
  165. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -1
  166. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  167. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +6 -1
  168. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
  170. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  171. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts +12 -1
  172. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +4 -1
  175. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts +5 -2
  177. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -1
  178. package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  179. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  180. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  181. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  182. package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
  183. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  184. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  185. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  186. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  187. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  188. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  189. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  190. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  191. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  192. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  193. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  194. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  195. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  196. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
  197. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  198. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  199. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  200. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  201. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  202. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  203. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  204. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  205. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  206. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  207. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  208. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  209. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  210. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  211. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  212. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  213. package/lib/typescript/module/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  214. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  215. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  216. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  217. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  218. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  219. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  220. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  221. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  222. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -0
  223. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  224. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  225. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  226. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts +3 -0
  227. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  228. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  229. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +1 -1
  230. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -1
  231. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  232. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +6 -1
  233. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  234. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
  235. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  236. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts +12 -1
  237. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts.map +1 -1
  238. package/lib/typescript/module/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -1
  239. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +4 -1
  240. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  241. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts +5 -2
  242. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -1
  243. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","byteToHex","sigUuid","defineCustomDevice","littleEndian","MG_PER_DL_PER_KG_PER_L","MG_PER_DL_PER_MOL_PER_L","FLAG_TIME_OFFSET","FLAG_CONCENTRATION","FLAG_MOL_PER_L","BASE_TIME_INDEX","TIME_OFFSET_INDEX","CONTROL_SOLUTION_TYPE","CONTROL_SOLUTION_LOCATION","REPORT_ALL_STORED_RECORDS","concentrationIndex","flags","ALL_FLAGS","Array","from","length","_","glucoseField","index","scale","decimals","byte","frame","value","Number","parseInt","isInteger","undefined","recordedAtFromGlucoseFrame","parts","i","some","part","yearLow","yearHigh","month","day","hour","minute","second","year","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","low","high","offsetMinutes","setMinutes","isControlSolution","typeAndLocation","standardGlucoseDevice","params","id","bloodGlucose","nameMatch","matchByService","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","monitor","minLengthBytes","caseSelectorBytes","cases","map","selector","kind","measurementTypeKey","fields","description","write","commandHex","when","decorateReading","reading","recordOffset","decorated"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","byteToHex","defineCustomDevice","glucoseRecordDetails","hasUnusableSensorStatus","BASE_TIME_INDEX","byte","concentrationIndex","FLAG_CONCENTRATION","FLAG_MOL_PER_L","FLAG_TIME_OFFSET","TIME_OFFSET_INDEX","typeAndLocationFromGlucoseFrame","createGlucoseSequencer","GLUCOSE_MEASUREMENT_UUID","GLUCOSE_SERVICE_UUID","RECORD_ACCESS_CONTROL_POINT_UUID","littleEndian","MG_PER_DL_PER_KG_PER_L","MG_PER_DL_PER_MOL_PER_L","MG_PER_DL_DECIMALS","CONTROL_SOLUTION_TYPE","CONTROL_SOLUTION_LOCATION","ALL_FLAGS","Array","from","length","_","flags","glucoseField","index","scale","decimals","recordedAtFromGlucoseFrame","frame","parts","i","undefined","some","part","yearLow","yearHigh","month","day","hour","minute","second","year","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","low","high","offsetMinutes","setMinutes","isControlSolution","typeAndLocation","standardGlucoseDevice","params","id","bloodGlucose","nameMatch","matchByService","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","monitor","minLengthBytes","caseSelectorBytes","cases","map","selector","kind","measurementTypeKey","fields","description","createCommandSequencer","decorateReading","reading","recordOffset","decorated"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,iBAAiB;AAIpD,SAASC,SAAS,QAAQ,gCAA6B;AACvD,SAASC,kBAAkB,QAAQ,sCAAmC;AAEtE,SACEC,oBAAoB,EACpBC,uBAAuB,QAClB,oCAAiC;AACxC,SACEC,eAAe,EACfC,IAAI,EACJC,kBAAkB,EAClBC,kBAAkB,EAClBC,cAAc,EACdC,gBAAgB,EAChBC,iBAAiB,EACjBC,+BAA+B,QAC1B,kCAA+B;AACtC,SACEC,sBAAsB,EACtBC,wBAAwB,EACxBC,oBAAoB,EACpBC,gCAAgC,QAC3B,iCAA8B;AACrC,SAASC,YAAY,QAA8B,4BAAyB;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,OAAO;;AAEtC;AACA,MAAMC,uBAAuB,GAAG,MAAM;;AAEtC;AACA,MAAMC,kBAAkB,GAAG,CAAC;;AAE5B;AACA,MAAMC,qBAAqB,GAAG,IAAI;AAClC,MAAMC,yBAAyB,GAAG,IAAI;;AAEtC;AACA,MAAMC,SAAS,GAAGC,KAAK,CAACC,IAAI,CAAC;EAAEC,MAAM,EAAE;AAAI,CAAC,EAAE,CAACC,CAAC,EAAEC,KAAK,KAAKA,KAAK,CAAC;AAElE,MAAMC,YAAY,GAAID,KAAa,IAAsB;EACvD,MAAME,KAAK,GAAGvB,kBAAkB,CAACqB,KAAK,CAAC;EAEvC,OAAO;IACL,GAAGX,YAAY,CAAC,cAAc,EAAE,CAACa,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC;IACtEC,KAAK,EACHH,KAAK,GAAGnB,cAAc,GAAGU,uBAAuB,GAAGD,sBAAsB;IAC3Ec,QAAQ,EAAEZ;EACZ,CAAC;AACH,CAAC;;AAED;AACA,MAAMa,0BAA0B,GAAIC,KAAwB,IAAuB;EACjF,MAAMC,KAAK,GAAGX,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,EAAE,CAACC,CAAC,EAAES,CAAC,KAAK9B,IAAI,CAAC4B,KAAK,EAAE7B,eAAe,GAAG+B,CAAC,CAAC,CAAC;EACnF,MAAMR,KAAK,GAAGtB,IAAI,CAAC4B,KAAK,EAAE,CAAC,CAAC;EAE5B,IAAIN,KAAK,KAAKS,SAAS,IAAIF,KAAK,CAACG,IAAI,CAAEC,IAAI,IAAKA,IAAI,KAAKF,SAAS,CAAC,EAAE;IACnE,OAAOA,SAAS;EAClB;EAEA,MAAM,CAACG,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC,GAAGX,KAQ7D;EAED,MAAMY,IAAI,GAAGP,OAAO,GAAIC,QAAQ,IAAI,CAAE;EACtC,MAAMO,UAAU,GAAG,IAAIC,IAAI,CAACF,IAAI,EAAEL,KAAK,GAAG,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC;;EAEvE;EACA,IACEE,UAAU,CAACE,WAAW,CAAC,CAAC,KAAKH,IAAI,IACjCC,UAAU,CAACG,QAAQ,CAAC,CAAC,KAAKT,KAAK,GAAG,CAAC,IACnCM,UAAU,CAACI,OAAO,CAAC,CAAC,KAAKT,GAAG,IAC5BK,UAAU,CAACK,QAAQ,CAAC,CAAC,KAAKT,IAAI,IAC9BI,UAAU,CAACM,UAAU,CAAC,CAAC,KAAKT,MAAM,IAClCG,UAAU,CAACO,UAAU,CAAC,CAAC,KAAKT,MAAM,EAClC;IACA,OAAOT,SAAS;EAClB;EAEA,IAAIT,KAAK,GAAGlB,gBAAgB,EAAE;IAC5B,MAAM8C,GAAG,GAAGlD,IAAI,CAAC4B,KAAK,EAAEvB,iBAAiB,CAAC;IAC1C,MAAM8C,IAAI,GAAGnD,IAAI,CAAC4B,KAAK,EAAEvB,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAI6C,GAAG,KAAKnB,SAAS,IAAIoB,IAAI,KAAKpB,SAAS,EAAE;MAC3C,OAAOA,SAAS;IAClB;IAEA,MAAMqB,aAAa,GAAG,CAAED,IAAI,IAAI,CAAC,GAAID,GAAG,KAAK,EAAE,IAAI,EAAE;IAErDR,UAAU,CAACW,UAAU,CAACX,UAAU,CAACM,UAAU,CAAC,CAAC,GAAGI,aAAa,CAAC;EAChE;EAEA,OAAOV,UAAU;AACnB,CAAC;AAED,MAAMY,iBAAiB,GAAI1B,KAAwB,IAAc;EAC/D,MAAM2B,eAAe,GAAGjD,+BAA+B,CAACsB,KAAK,CAAC;EAE9D,OACE2B,eAAe,KAAKxB,SAAS,KAC5B,CAACwB,eAAe,GAAG,IAAI,MAAMxC,qBAAqB,IACjDwC,eAAe,IAAI,CAAC,KAAKvC,yBAAyB,CAAC;AAEzD,CAAC;;AAED;AACA,MAAMwC,qBAAqB,GACzBC,MAA4B,IAE5B7D,kBAAkB,CAChB;EACE8D,EAAE,EAAED,MAAM,CAACC,EAAE,IAAI,YAAYhE,kBAAkB,CAACiE,YAAY,EAAE;EAC9DC,SAAS,EAAEH,MAAM,CAACG,SAAS;EAC3BC,cAAc,EAAEJ,MAAM,CAACG,SAAS,KAAK7B,SAAS;EAC9C+B,uBAAuB,EAAEL,MAAM,CAACK,uBAAuB;EACvDC,kBAAkB,EAAEN,MAAM,CAACM,kBAAkB,IAAI,MAAM;EACvDC,QAAQ,EAAE,CACR;IACEC,IAAI,EAAExD,oBAAoB;IAC1ByD,OAAO,EAAE,CACP;MACED,IAAI,EAAEzD,wBAAwB;MAC9BoB,KAAK,EAAE;QAAEuC,cAAc,EAAE9D;MAAkB,CAAC;MAC5C+D,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAEpD,SAAS,CAACqD,GAAG,CAAEhD,KAAK,IACzBA,KAAK,GAAGpB,kBAAkB,GACtB;QACEqE,QAAQ,EAAE5E,SAAS,CAAC2B,KAAK,CAAC;QAC1BkD,IAAI,EAAE,QAAiB;QACvBC,kBAAkB,EAAE/E,kBAAkB,CAACiE,YAAY;QACnDe,MAAM,EAAE,CAACnD,YAAY,CAACD,KAAK,CAAC,CAAC;QAC7B6C,cAAc,EAAElE,kBAAkB,CAACqB,KAAK,CAAC,GAAG;MAC9C,CAAC,GACD;QACEiD,QAAQ,EAAE5E,SAAS,CAAC2B,KAAK,CAAC;QAC1BkD,IAAI,EAAE,MAAe;QACrBG,WAAW,EAAE;MACf,CACN;IACF,CAAC,EACD;MACEV,IAAI,EAAEvD,gCAAgC;MACtCkB,KAAK,EAAE;QAAEuC,cAAc,EAAE;MAAE,CAAC;MAC5BC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QAAEE,QAAQ,EAAE,IAAI;QAAEC,IAAI,EAAE,MAAe;QAAEG,WAAW,EAAE;MAA2B,CAAC,EAClF;QAAEJ,QAAQ,EAAE,IAAI;QAAEC,IAAI,EAAE,MAAe;QAAEG,WAAW,EAAE;MAAyB,CAAC;IAEpF,CAAC;EAEL,CAAC;AAEL,CAAC,EACD;EACEC,sBAAsB,EAAErE,sBAAsB;EAC9CsE,eAAe,EAAEA,CAACC,OAAO,EAAElD,KAAK,EAAEmD,YAAY,KAAK;IACjD,IAAInD,KAAK,KAAK0B,iBAAiB,CAAC1B,KAAK,CAAC,IAAI9B,uBAAuB,CAAC8B,KAAK,CAAC,CAAC,EAAE;MACzE,OAAO,IAAI;IACb;IAEA,MAAMc,UAAU,GAAGd,KAAK,GAAGD,0BAA0B,CAACC,KAAK,CAAC,GAAGG,SAAS;IAExE,MAAMiD,SAAS,GAAG;MAChB,GAAGF,OAAO;MACV,IAAIlD,KAAK,IAAI/B,oBAAoB,CAAC+B,KAAK,CAAC,CAAC;MACzC,IAAIc,UAAU,IAAI;QAAEA;MAAW,CAAC;IAClC,CAAC;IAED,OAAOe,MAAM,CAACoB,eAAe,GACzBpB,MAAM,CAACoB,eAAe,CAACG,SAAS,EAAEpD,KAAK,EAAEmD,YAAY,CAAC,GACtDC,SAAS;EACf;AACF,CACF,CAAC;AAEH,SAASrD,0BAA0B,EAAE6B,qBAAqB","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import { sentryLogger } from "../../helpers/utils/sentry-logger.js";
4
+ import { toBluetoothError } from "../types/bluetooth-error.js";
5
+ const parseCursor = stored => {
6
+ const parsed = Number.parseInt(stored ?? "", 10);
7
+ return Number.isSafeInteger(parsed) && parsed >= 0 ? parsed : undefined;
8
+ };
9
+
10
+ /**
11
+ * The number of the newest stored record read from one device, kept in `storage` so the next
12
+ * connection asks the device for newer records only. Without storage it forgets on disconnect.
13
+ */
14
+ class RecordCursor {
15
+ writing = false;
16
+ changedWhileWriting = false;
17
+ constructor(storage, key) {
18
+ this.storage = storage;
19
+ this.key = key;
20
+ }
21
+
22
+ /** What an earlier connection stored; nothing, an unreadable value or a failing store gives `undefined`. */
23
+ load = async () => {
24
+ try {
25
+ this.newest = parseCursor(await this.storage?.getItem(this.key));
26
+ } catch (error) {
27
+ sentryLogger("error", "RECORD_CURSOR: Could not read the stored cursor", {
28
+ errorCode: toBluetoothError(error).code
29
+ });
30
+ this.newest = undefined;
31
+ }
32
+ return this.newest;
33
+ };
34
+
35
+ /** Remembers a record number that is newer than any seen; writes to the store are coalesced. */
36
+ advance = recordNumber => {
37
+ if (this.newest !== undefined && recordNumber <= this.newest) {
38
+ return;
39
+ }
40
+ this.newest = recordNumber;
41
+ void this.persist();
42
+ };
43
+ persist = async () => {
44
+ if (this.writing) {
45
+ this.changedWhileWriting = true;
46
+ return;
47
+ }
48
+ this.writing = true;
49
+ do {
50
+ this.changedWhileWriting = false;
51
+ await this.store();
52
+ } while (this.changedWhileWriting);
53
+ this.writing = false;
54
+ };
55
+ store = async () => {
56
+ try {
57
+ await this.storage?.setItem(this.key, String(this.newest));
58
+ } catch (error) {
59
+ sentryLogger("error", "RECORD_CURSOR: Could not store the cursor", {
60
+ errorCode: toBluetoothError(error).code
61
+ });
62
+ }
63
+ };
64
+ }
65
+ export { RecordCursor };
66
+ //# sourceMappingURL=record-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sentryLogger","toBluetoothError","parseCursor","stored","parsed","Number","parseInt","isSafeInteger","undefined","RecordCursor","writing","changedWhileWriting","constructor","storage","key","load","newest","getItem","error","errorCode","code","advance","recordNumber","persist","store","setItem","String"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/record-cursor.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,sCAAmC;AAEhE,SAASC,gBAAgB,QAAQ,6BAA0B;AAE3D,MAAMC,WAAW,GAAIC,MAAiC,IAAyB;EAC7E,MAAMC,MAAM,GAAGC,MAAM,CAACC,QAAQ,CAACH,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;EAEhD,OAAOE,MAAM,CAACE,aAAa,CAACH,MAAM,CAAC,IAAIA,MAAM,IAAI,CAAC,GAAGA,MAAM,GAAGI,SAAS;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,YAAY,CAAC;EAETC,OAAO,GAAG,KAAK;EACfC,mBAAmB,GAAG,KAAK;EAE5BC,WAAWA,CACCC,OAA0C,EAC1CC,GAAW,EAC5B;IAAA,KAFiBD,OAA0C,GAA1CA,OAA0C;IAAA,KAC1CC,GAAW,GAAXA,GAAW;EAC3B;;EAEH;EACOC,IAAI,GAAG,MAAAA,CAAA,KAAyC;IACrD,IAAI;MACF,IAAI,CAACC,MAAM,GAAGd,WAAW,CAAC,MAAM,IAAI,CAACW,OAAO,EAAEI,OAAO,CAAC,IAAI,CAACH,GAAG,CAAC,CAAC;IAClE,CAAC,CAAC,OAAOI,KAAK,EAAE;MACdlB,YAAY,CAAC,OAAO,EAAE,iDAAiD,EAAE;QACvEmB,SAAS,EAAElB,gBAAgB,CAACiB,KAAK,CAAC,CAACE;MACrC,CAAC,CAAC;MACF,IAAI,CAACJ,MAAM,GAAGR,SAAS;IACzB;IAEA,OAAO,IAAI,CAACQ,MAAM;EACpB,CAAC;;EAED;EACOK,OAAO,GAAIC,YAAoB,IAAW;IAC/C,IAAI,IAAI,CAACN,MAAM,KAAKR,SAAS,IAAIc,YAAY,IAAI,IAAI,CAACN,MAAM,EAAE;MAC5D;IACF;IAEA,IAAI,CAACA,MAAM,GAAGM,YAAY;IAC1B,KAAK,IAAI,CAACC,OAAO,CAAC,CAAC;EACrB,CAAC;EAEOA,OAAO,GAAG,MAAAA,CAAA,KAA2B;IAC3C,IAAI,IAAI,CAACb,OAAO,EAAE;MAChB,IAAI,CAACC,mBAAmB,GAAG,IAAI;MAE/B;IACF;IAEA,IAAI,CAACD,OAAO,GAAG,IAAI;IAEnB,GAAG;MACD,IAAI,CAACC,mBAAmB,GAAG,KAAK;MAChC,MAAM,IAAI,CAACa,KAAK,CAAC,CAAC;IACpB,CAAC,QAAQ,IAAI,CAACb,mBAAmB;IAEjC,IAAI,CAACD,OAAO,GAAG,KAAK;EACtB,CAAC;EAEOc,KAAK,GAAG,MAAAA,CAAA,KAA2B;IACzC,IAAI;MACF,MAAM,IAAI,CAACX,OAAO,EAAEY,OAAO,CAAC,IAAI,CAACX,GAAG,EAAEY,MAAM,CAAC,IAAI,CAACV,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdlB,YAAY,CAAC,OAAO,EAAE,2CAA2C,EAAE;QACjEmB,SAAS,EAAElB,gBAAgB,CAACiB,KAAK,CAAC,CAACE;MACrC,CAAC,CAAC;IACJ;EACF,CAAC;AACH;AAEA,SAASX,YAAY","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  /* eslint-disable import/group-exports */
4
4
 
5
+ import { Buffer } from "buffer";
5
6
  import { State } from "react-native-ble-plx";
6
7
 
7
8
  /** Options for `createFakeBleDevice`. */
@@ -13,6 +14,8 @@ import { State } from "react-native-ble-plx";
13
14
  /** A deterministic BLE manager for hook and scan integration tests. No hardware is used. */
14
15
 
15
16
  const characteristicKey = (serviceUuid, characteristicUuid) => `${serviceUuid}/${characteristicUuid}`;
17
+ const NOTIFICATIONS_ENABLED = Buffer.from([0x01, 0x00]).toString("base64");
18
+ const NOTIFICATIONS_DISABLED = Buffer.from([0x00, 0x00]).toString("base64");
16
19
 
17
20
  /** Creates a GATT-capable fake device for connection and notification tests. */
18
21
  export const createFakeBleDevice = ({
@@ -27,6 +30,7 @@ export const createFakeBleDevice = ({
27
30
  let connected = false;
28
31
  let currentMtu = mtu;
29
32
  const values = new Map(Object.entries(characteristics));
33
+ const monitoredKeys = new Set();
30
34
  const disconnectedCallbacks = new Set();
31
35
  const notificationCallbacks = new Map();
32
36
  const fake = {
@@ -62,8 +66,12 @@ export const createFakeBleDevice = ({
62
66
  readCharacteristicForService: async (serviceUuid, characteristicUuid) => ({
63
67
  value: values.get(characteristicKey(serviceUuid, characteristicUuid)) ?? null
64
68
  }),
69
+ readDescriptorForService: async (serviceUuid, characteristicUuid) => ({
70
+ value: monitoredKeys.has(characteristicKey(serviceUuid, characteristicUuid)) ? NOTIFICATIONS_ENABLED : NOTIFICATIONS_DISABLED
71
+ }),
65
72
  monitorCharacteristicForService: (serviceUuid, characteristicUuid, callback) => {
66
73
  const key = characteristicKey(serviceUuid, characteristicUuid);
74
+ monitoredKeys.add(key);
67
75
  const callbacks = notificationCallbacks.get(key) ?? new Set();
68
76
  callbacks.add(callback);
69
77
  notificationCallbacks.set(key, callbacks);
@@ -1 +1 @@
1
- {"version":3,"names":["State","characteristicKey","serviceUuid","characteristicUuid","createFakeBleDevice","id","name","localName","manufacturerData","serviceUUIDs","mtu","characteristics","connected","currentMtu","values","Map","Object","entries","disconnectedCallbacks","Set","notificationCallbacks","fake","isConnected","connect","cancelConnection","forEach","callback","discoverAllServicesAndCharacteristics","onDisconnected","add","remove","delete","requestMTU","requestedMtu","readCharacteristicForService","value","get","monitorCharacteristicForService","key","callbacks","set","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","device","emitCharacteristic","characteristic","uuid","disconnect","createFakeBleManager","state","PoweredOn","devices","currentState","scanCallback","stateCallbacks","scannedServiceUUIDs","manager","onStateChange","emitCurrentState","startDeviceScan","_options","stopDeviceScan","undefined","createDevice","emitDevice","emitError","error","setState","nextState","getScannedServiceUUIDs"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/testing/fake-ble-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Buffer","State","characteristicKey","serviceUuid","characteristicUuid","NOTIFICATIONS_ENABLED","from","toString","NOTIFICATIONS_DISABLED","createFakeBleDevice","id","name","localName","manufacturerData","serviceUUIDs","mtu","characteristics","connected","currentMtu","values","Map","Object","entries","monitoredKeys","Set","disconnectedCallbacks","notificationCallbacks","fake","isConnected","connect","cancelConnection","forEach","callback","discoverAllServicesAndCharacteristics","onDisconnected","add","remove","delete","requestMTU","requestedMtu","readCharacteristicForService","value","get","readDescriptorForService","has","monitorCharacteristicForService","key","callbacks","set","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","device","emitCharacteristic","characteristic","uuid","disconnect","createFakeBleManager","state","PoweredOn","devices","currentState","scanCallback","stateCallbacks","scannedServiceUUIDs","manager","onStateChange","emitCurrentState","startDeviceScan","_options","stopDeviceScan","undefined","createDevice","emitDevice","emitError","error","setState","nextState","getScannedServiceUUIDs"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/testing/fake-ble-manager.ts"],"mappings":";;AAAA;;AAEA,SAASA,MAAM,QAAQ,QAAQ;AAE/B,SAA6BC,KAAK,QAAsB,sBAAsB;;AAE9E;;AAyBA;;AAiBA;;AAUA;;AAyBA,MAAMC,iBAAiB,GAAGA,CAACC,WAAmB,EAAEC,kBAA0B,KACxE,GAAGD,WAAW,IAAIC,kBAAkB,EAAE;AAExC,MAAMC,qBAAqB,GAAGL,MAAM,CAACM,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACC,QAAQ,CAAC,QAAQ,CAAC;AAC1E,MAAMC,sBAAsB,GAAGR,MAAM,CAACM,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACC,QAAQ,CAAC,QAAQ,CAAC;;AAE3E;AACA,OAAO,MAAME,mBAAmB,GAAGA,CAAC;EAClCC,EAAE;EACFC,IAAI,GAAGD,EAAE;EACTE,SAAS,GAAGD,IAAI;EAChBE,gBAAgB,GAAG,EAAE;EACrBC,YAAY,GAAG,EAAE;EACjBC,GAAG,GAAG,EAAE;EACRC,eAAe,GAAG,CAAC;AACC,CAAC,KAAoB;EACzC,IAAIC,SAAS,GAAG,KAAK;EACrB,IAAIC,UAAU,GAAGH,GAAG;EACpB,MAAMI,MAAM,GAAG,IAAIC,GAAG,CAACC,MAAM,CAACC,OAAO,CAACN,eAAe,CAAC,CAAC;EACvD,MAAMO,aAAa,GAAG,IAAIC,GAAG,CAAS,CAAC;EACvC,MAAMC,qBAAqB,GAAG,IAAID,GAAG,CAAwC,CAAC;EAE9E,MAAME,qBAAqB,GAAG,IAAIN,GAAG,CAGnC,CAAC;EAEH,MAAMO,IAAI,GAAG;IACXjB,EAAE;IACFC,IAAI;IACJC,SAAS;IACTC,gBAAgB;IAChBC,YAAY,EAAE,CAAC,GAAGA,YAAY,CAAC;IAC/BC,GAAG,EAAEG,UAAU;IACfU,WAAW,EAAE,MAAAA,CAAA,KAAYX,SAAS;IAClCY,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnBZ,SAAS,GAAG,IAAI;MAEhB,OAAOU,IAAI;IACb,CAAC;IACDG,gBAAgB,EAAE,MAAAA,CAAA,KAAY;MAC5Bb,SAAS,GAAG,KAAK;MACjBQ,qBAAqB,CAACM,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,IAAI,EAAEL,IAAc,CAAC,CAAC;MAE3E,OAAOA,IAAI;IACb,CAAC;IACDM,qCAAqC,EAAE,MAAAA,CAAA,KAAYN,IAAI;IACvDO,cAAc,EAAGF,QAA+C,IAAK;MACnEP,qBAAqB,CAACU,GAAG,CAACH,QAAQ,CAAC;MAEnC,OAAO;QAAEI,MAAM,EAAEA,CAAA,KAAMX,qBAAqB,CAACY,MAAM,CAACL,QAAQ;MAAE,CAAC;IACjE,CAAC;IACDM,UAAU,EAAE,MAAOC,YAAoB,IAAK;MAC1CrB,UAAU,GAAGqB,YAAY;MAEzB,OAAO;QAAExB,GAAG,EAAEG;MAAW,CAAC;IAC5B,CAAC;IACDsB,4BAA4B,EAAE,MAAAA,CAC5BrC,WAAmB,EACnBC,kBAA0B,MACtB;MACJqC,KAAK,EAAEtB,MAAM,CAACuB,GAAG,CAACxC,iBAAiB,CAACC,WAAW,EAAEC,kBAAkB,CAAC,CAAC,IAAI;IAC3E,CAAC,CAAC;IACFuC,wBAAwB,EAAE,MAAAA,CACxBxC,WAAmB,EACnBC,kBAA0B,MACtB;MACJqC,KAAK,EAAElB,aAAa,CAACqB,GAAG,CAAC1C,iBAAiB,CAACC,WAAW,EAAEC,kBAAkB,CAAC,CAAC,GACxEC,qBAAqB,GACrBG;IACN,CAAC,CAAC;IACFqC,+BAA+B,EAAEA,CAC/B1C,WAAmB,EACnBC,kBAA0B,EAC1B4B,QAAgF,KAC7E;MACH,MAAMc,GAAG,GAAG5C,iBAAiB,CAACC,WAAW,EAAEC,kBAAkB,CAAC;MAE9DmB,aAAa,CAACY,GAAG,CAACW,GAAG,CAAC;MACtB,MAAMC,SAAS,GAAGrB,qBAAqB,CAACgB,GAAG,CAACI,GAAG,CAAC,IAAI,IAAItB,GAAG,CAAC,CAAC;MAE7DuB,SAAS,CAACZ,GAAG,CAACH,QAAQ,CAAC;MACvBN,qBAAqB,CAACsB,GAAG,CAACF,GAAG,EAAEC,SAAS,CAAC;MAEzC,OAAO;QAAEX,MAAM,EAAEA,CAAA,KAAMW,SAAS,CAACV,MAAM,CAACL,QAAQ;MAAE,CAAC;IACrD,CAAC;IACDiB,yCAAyC,EAAE,MAAAA,CAAA,KAAYtB,IAAI;IAC3DuB,4CAA4C,EAAE,MAAAA,CAAA,KAAYvB;EAC5D,CAAsB;EAEtB,OAAO;IACLwB,MAAM,EAAExB,IAAI;IACZyB,kBAAkB,EAAEA,CAACjD,WAAW,EAAEC,kBAAkB,EAAEqC,KAAK,KAAK;MAC9D,MAAMK,GAAG,GAAG5C,iBAAiB,CAACC,WAAW,EAAEC,kBAAkB,CAAC;MAC9D,MAAMiD,cAAc,GAAG;QAAEC,IAAI,EAAElD,kBAAkB;QAAEqC;MAAM,CAAC;MAE1DtB,MAAM,CAAC6B,GAAG,CAACF,GAAG,EAAEL,KAAK,CAAC;MACtBf,qBAAqB,CAACgB,GAAG,CAACI,GAAG,CAAC,EAAEf,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,IAAI,EAAEqB,cAAc,CAAC,CAAC;IACvF,CAAC;IACDE,UAAU,EAAE,MAAAA,CAAA,KAAY;MACtB,MAAM5B,IAAI,CAACG,gBAAgB,CAAC,CAAC;IAC/B;EACF,CAAC;AACH,CAAC;;AAED;AACA,OAAO,MAAM0B,oBAAoB,GAAGA,CAAC;EACnCC,KAAK,GAAGxD,KAAK,CAACyD,SAAS;EACvBC,OAAO,GAAG;AACW,CAAC,GAAG,CAAC,CAAC,KAAqB;EAChD,IAAIC,YAAY,GAAGH,KAAK;EACxB,IAAII,YAES;EACb,MAAMC,cAAc,GAAG,IAAItC,GAAG,CAA6B,CAAC;EAC5D,IAAIuC,mBAA6C,GAAG,IAAI;EAExD,MAAMC,OAAO,GAAG;IACdC,aAAa,EAAEA,CAACjC,QAAoC,EAAEkC,gBAA0B,KAAK;MACnFJ,cAAc,CAAC3B,GAAG,CAACH,QAAQ,CAAC;MAC5B,IAAIkC,gBAAgB,EAAE;QACpBlC,QAAQ,CAAC4B,YAAY,CAAC;MACxB;MAEA,OAAO;QACLxB,MAAM,EAAEA,CAAA,KAAM0B,cAAc,CAACzB,MAAM,CAACL,QAAQ;MAC9C,CAAC;IACH,CAAC;IACDmC,eAAe,EAAEA,CACfrD,YAAsC,EACtCsD,QAAiB,EACjBpC,QAAsD,KACnD;MACH+B,mBAAmB,GAAGjD,YAAY;MAClC+C,YAAY,GAAG7B,QAAQ;MACvB2B,OAAO,CAAC5B,OAAO,CAAEoB,MAAM,IAAKnB,QAAQ,CAAC,IAAI,EAAEmB,MAAM,CAAC,CAAC;IACrD,CAAC;IACDkB,cAAc,EAAEA,CAAA,KAAM;MACpBR,YAAY,GAAGS,SAAS;IAC1B;EACF,CAA0B;EAE1B,OAAO;IACLN,OAAO;IACPO,YAAY,EAAE9D,mBAAmB;IACjC+D,UAAU,EAAGrB,MAAM,IAAKU,YAAY,GAAG,IAAI,EAAEV,MAAM,CAAC;IACpDsB,SAAS,EAAGC,KAAK,IACfb,YAAY,GAAGa,KAAK,EAAW,IAAI,CAAC;IACtCC,QAAQ,EAAGC,SAAS,IAAK;MACvBhB,YAAY,GAAGgB,SAAS;MACxBd,cAAc,CAAC/B,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC4C,SAAS,CAAC,CAAC;IAC3D,CAAC;IACDC,sBAAsB,EAAEA,CAAA,KAAMd,mBAAmB;IACjDM,cAAc,EAAEA,CAAA,KAAML,OAAO,CAACK,cAAc,CAAC;EAC/C,CAAC;AACH,CAAC","ignoreList":[]}
@@ -8,6 +8,10 @@ import { CUSTOM_DEVICE_BRAND } from "../constants/custom-device-brand.js";
8
8
 
9
9
  /** Creates the per-device `CustomFrameHandler`. */
10
10
 
11
+ /** What a declaration's command sequencer is told about the device it is about to drive. */
12
+
13
+ /** Creates the command sequencer of one connection, for a declaration whose commands depend on the device or on stored state. */
14
+
11
15
  /**
12
16
  * A validated, ready-to-run custom device. Only defineCustomDevice produces one.
13
17
  */
@@ -1 +1 @@
1
- {"version":3,"names":["CUSTOM_DEVICE_BRAND"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/custom-device-definition.ts"],"mappings":";;AAEA,SAASA,mBAAmB,QAAQ,qCAAkC;;AAetE;;AAeA;;AAGA;;AAGA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["CUSTOM_DEVICE_BRAND"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/custom-device-definition.ts"],"mappings":";;AAEA,SAASA,mBAAmB,QAAQ,qCAAkC;;AAiBtE;;AAeA;;AAGA;;AAGA;;AAUA;;AAGA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=glucose-record-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/glucose-record-details.ts"],"mappings":"","ignoreList":[]}
@@ -2,20 +2,32 @@
2
2
 
3
3
  /* eslint-disable import/group-exports */
4
4
 
5
- import { stableHash } from "../../next/bluetooth/stable-hash.js";
5
+ import { isTimestamped } from "../../next/bluetooth/driver.js";
6
+ import { instantStableHash, stableHash } from "../../next/bluetooth/stable-hash.js";
7
+ /** Reading properties added after result ids were first issued; leaving them out keeps every earlier id. */
8
+ const ADDED_READING_PROPERTIES = new Set(["sequenceNumber", "specimen", "sampleLocation", "sensorStatus", "outOfRange", "meal", "reportedUnit", "temperatureType", "rrIntervals"]);
9
+ const identifyingData = data => Object.fromEntries(Object.entries(data).filter(([key]) => !ADDED_READING_PROPERTIES.has(key)));
10
+ const deviceIdentityOf = deviceData => deviceData.sn || deviceData.manufacturerData || deviceData.model || deviceData.name || deviceData.id;
11
+
6
12
  /**
7
- * Creates an identity that is stable when a device sends its stored history again.
8
- * Recording IDs, timestamps and indexes are retained in the canonical payload; transient
9
- * delivery metadata is deliberately not part of the key.
13
+ * Creates an identity that is stable when a device sends its stored history again, in any time zone. A reading
14
+ * without a time of its own is a new measurement each time, so it is told apart by when it arrived.
10
15
  */
11
- export const createStableResultId = (deviceData, data) => {
12
- const deviceIdentity = deviceData.sn || deviceData.manufacturerData || deviceData.model || deviceData.name || deviceData.id;
13
- return `ovok:${stableHash({
14
- device: deviceIdentity,
15
- name: deviceData.name,
16
- data
17
- })}`;
18
- };
16
+ export const createStableResultId = (deviceData, data, receivedAt = new Date()) => `ovok:${stableHash({
17
+ device: deviceIdentityOf(deviceData),
18
+ name: deviceData.name,
19
+ data: identifyingData(data),
20
+ ...(isTimestamped(data) ? {} : {
21
+ receivedAt: receivedAt.toISOString()
22
+ })
23
+ })}`;
24
+
25
+ /** The id SDKs before 1.16.1 gave the same reading, to find what they saved. */
26
+ export const createLegacyResultId = (deviceData, data) => `ovok:${instantStableHash({
27
+ device: deviceIdentityOf(deviceData),
28
+ name: deviceData.name,
29
+ data: identifyingData(data)
30
+ })}`;
19
31
 
20
32
  /** Converts the ISO date strings of `recordedAt`, `start` and `end` fields back to `Date`s, recursively. */
21
33
  export const reviveResultDates = value => {
@@ -1 +1 @@
1
- {"version":3,"names":["stableHash","createStableResultId","deviceData","data","deviceIdentity","sn","manufacturerData","model","name","id","device","reviveResultDates","value","revive","current","key","includes","date","Date","Number","isNaN","getTime","Array","isArray","map","item","Object","fromEntries","entries","childKey","childValue"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/result-identity.ts"],"mappings":";;AAAA;;AAIA,SAASA,UAAU,QAAQ,qCAAkC;AAG7D;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAClCC,UAAsB,EACtBC,IAAiB,KACN;EACX,MAAMC,cAAc,GAClBF,UAAU,CAACG,EAAE,IACbH,UAAU,CAACI,gBAAgB,IAC3BJ,UAAU,CAACK,KAAK,IAChBL,UAAU,CAACM,IAAI,IACfN,UAAU,CAACO,EAAE;EAEf,OAAO,QAAQT,UAAU,CAAC;IACxBU,MAAM,EAAEN,cAAc;IACtBI,IAAI,EAAEN,UAAU,CAACM,IAAI;IACrBL;EACF,CAAC,CAAC,EAAE;AACN,CAAC;;AAED;AACA,OAAO,MAAMQ,iBAAiB,GAAOC,KAAQ,IAAQ;EACnD,MAAMC,MAAM,GAAGA,CAACC,OAAgB,EAAEC,GAAY,KAAc;IAC1D,IACE,OAAOD,OAAO,KAAK,QAAQ,IAC3B,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAACE,QAAQ,CAACD,GAAG,IAAI,EAAE,CAAC,EAClD;MACA,MAAME,IAAI,GAAG,IAAIC,IAAI,CAACJ,OAAO,CAAC;MAE9B,OAAOK,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,GAAGP,OAAO,GAAGG,IAAI;IACtD;IAEA,IAAIK,KAAK,CAACC,OAAO,CAACT,OAAO,CAAC,EAAE;MAC1B,OAAOA,OAAO,CAACU,GAAG,CAAEC,IAAI,IAAKZ,MAAM,CAACY,IAAI,CAAC,CAAC;IAC5C;IAEA,IAAIX,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;MAC1C,OAAOY,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACd,OAAO,CAAC,CAACU,GAAG,CAAC,CAAC,CAACK,QAAQ,EAAEC,UAAU,CAAC,KAAK,CACtDD,QAAQ,EACRhB,MAAM,CAACiB,UAAU,EAAED,QAAQ,CAAC,CAC7B,CACH,CAAC;IACH;IAEA,OAAOf,OAAO;EAChB,CAAC;EAED,OAAOD,MAAM,CAACD,KAAK,CAAC;AACtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["isTimestamped","instantStableHash","stableHash","ADDED_READING_PROPERTIES","Set","identifyingData","data","Object","fromEntries","entries","filter","key","has","deviceIdentityOf","deviceData","sn","manufacturerData","model","name","id","createStableResultId","receivedAt","Date","device","toISOString","createLegacyResultId","reviveResultDates","value","revive","current","includes","date","Number","isNaN","getTime","Array","isArray","map","item","childKey","childValue"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/result-identity.ts"],"mappings":";;AAAA;;AAIA,SAASA,aAAa,QAAQ,gCAA6B;AAC3D,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,qCAAkC;AAGhF;AACA,MAAMC,wBAAwB,GAAG,IAAIC,GAAG,CAAC,CACvC,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,CACd,CAAC;AAEF,MAAMC,eAAe,GAAIC,IAAiB,IACxCC,MAAM,CAACC,WAAW,CAACD,MAAM,CAACE,OAAO,CAACH,IAAI,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACR,wBAAwB,CAACS,GAAG,CAACD,GAAG,CAAC,CAAC,CAAC;AAEhG,MAAME,gBAAgB,GAAIC,UAAsB,IAC9CA,UAAU,CAACC,EAAE,IACbD,UAAU,CAACE,gBAAgB,IAC3BF,UAAU,CAACG,KAAK,IAChBH,UAAU,CAACI,IAAI,IACfJ,UAAU,CAACK,EAAE;;AAEf;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAClCN,UAAsB,EACtBR,IAAiB,EACjBe,UAAgB,GAAG,IAAIC,IAAI,CAAC,CAAC,KAE7B,QAAQpB,UAAU,CAAC;EACjBqB,MAAM,EAAEV,gBAAgB,CAACC,UAAU,CAAC;EACpCI,IAAI,EAAEJ,UAAU,CAACI,IAAI;EACrBZ,IAAI,EAAED,eAAe,CAACC,IAAI,CAAC;EAC3B,IAAIN,aAAa,CAACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;IAAEe,UAAU,EAAEA,UAAU,CAACG,WAAW,CAAC;EAAE,CAAC;AACzE,CAAC,CAAC,EAAE;;AAEN;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAACX,UAAsB,EAAER,IAAiB,KAC5E,QAAQL,iBAAiB,CAAC;EACxBsB,MAAM,EAAEV,gBAAgB,CAACC,UAAU,CAAC;EACpCI,IAAI,EAAEJ,UAAU,CAACI,IAAI;EACrBZ,IAAI,EAAED,eAAe,CAACC,IAAI;AAC5B,CAAC,CAAC,EAAE;;AAEN;AACA,OAAO,MAAMoB,iBAAiB,GAAOC,KAAQ,IAAQ;EACnD,MAAMC,MAAM,GAAGA,CAACC,OAAgB,EAAElB,GAAY,KAAc;IAC1D,IACE,OAAOkB,OAAO,KAAK,QAAQ,IAC3B,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACnB,GAAG,IAAI,EAAE,CAAC,EAClD;MACA,MAAMoB,IAAI,GAAG,IAAIT,IAAI,CAACO,OAAO,CAAC;MAE9B,OAAOG,MAAM,CAACC,KAAK,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,CAAC,GAAGL,OAAO,GAAGE,IAAI;IACtD;IAEA,IAAII,KAAK,CAACC,OAAO,CAACP,OAAO,CAAC,EAAE;MAC1B,OAAOA,OAAO,CAACQ,GAAG,CAAEC,IAAI,IAAKV,MAAM,CAACU,IAAI,CAAC,CAAC;IAC5C;IAEA,IAAIT,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;MAC1C,OAAOtB,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACoB,OAAO,CAAC,CAACQ,GAAG,CAAC,CAAC,CAACE,QAAQ,EAAEC,UAAU,CAAC,KAAK,CACtDD,QAAQ,EACRX,MAAM,CAACY,UAAU,EAAED,QAAQ,CAAC,CAC7B,CACH,CAAC;IACH;IAEA,OAAOV,OAAO;EAChB,CAAC;EAED,OAAOD,MAAM,CAACD,KAAK,CAAC;AACtB,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ /** Resolves after `milliseconds`. */
4
+ export const wait = milliseconds => new Promise(resolve => setTimeout(resolve, milliseconds));
5
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["wait","milliseconds","Promise","resolve","setTimeout"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/wait.ts"],"mappings":";;AAAA;AACA,OAAO,MAAMA,IAAI,GAAIC,YAAoB,IACvC,IAAIC,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,YAAY,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import { readDeviceInformation } from "../../../bt-management/services/devices/bt-device-information.js";
4
+ import { awaitNotificationsEnabled } from "../../../bt-management/services/devices/bt-notification-readiness.js";
5
+ import { BTPairingRetry } from "../../../bt-management/services/devices/bt-pairing-retry.js";
3
6
  import { sentryLogger } from "../../../helpers/utils/sentry-logger.js";
4
7
  import { Channel } from "../channel.js";
5
8
  import { fromBleError } from "./ble-errors.js";
@@ -50,13 +53,33 @@ async function connectWithRetries(device, signal) {
50
53
  }
51
54
  }
52
55
  }
56
+
57
+ /** Reads the standard Device Information strings; `undefined` when the device has none. */
58
+ async function readInformation(device, pairing) {
59
+ let information;
60
+ await readDeviceInformation(device, ({
61
+ manufacturerName,
62
+ model,
63
+ serialNumber
64
+ }) => {
65
+ information = {
66
+ manufacturerName,
67
+ model,
68
+ serialNumber
69
+ };
70
+ }, pairing.run);
71
+ return information;
72
+ }
53
73
  class BleLink {
54
74
  channels = new Set();
75
+ notificationsPending = new Set();
55
76
  ended = false;
56
77
  closeOnAbort = () => void this.close();
57
- constructor(device, signal) {
78
+ constructor(device, signal, pairing, deviceInformation) {
58
79
  this.device = device;
59
80
  this.signal = signal;
81
+ this.pairing = pairing;
82
+ this.deviceInformation = deviceInformation;
60
83
  this.disconnected = device.onDisconnected(() => this.endAll());
61
84
  signal.addEventListener("abort", this.closeOnAbort, {
62
85
  once: true
@@ -75,13 +98,15 @@ class BleLink {
75
98
  }
76
99
  });
77
100
  this.channels.add(channel);
101
+ this.awaitNotifications(service, characteristic);
78
102
  if (this.ended) {
79
103
  channel.end();
80
104
  }
81
105
  return channel;
82
106
  }
83
107
  async write(service, characteristic, bytes) {
84
- await this.device.writeCharacteristicWithResponseForService(service, characteristic, toBase64(bytes));
108
+ await Promise.all(this.notificationsPending);
109
+ await this.pairing.run(() => this.device.writeCharacteristicWithResponseForService(service, characteristic, toBase64(bytes)));
85
110
  }
86
111
  async close() {
87
112
  this.signal.removeEventListener("abort", this.closeOnAbort);
@@ -89,6 +114,15 @@ class BleLink {
89
114
  this.disconnected.remove();
90
115
  await this.device.cancelConnection().catch(() => undefined);
91
116
  }
117
+
118
+ /** A write waits for these, because a device may refuse a command until its notifications are on. */
119
+ awaitNotifications(serviceUuid, characteristicUuid) {
120
+ const enabled = awaitNotificationsEnabled(this.device, [{
121
+ serviceUuid,
122
+ characteristicUuid
123
+ }]).finally(() => this.notificationsPending.delete(enabled));
124
+ this.notificationsPending.add(enabled);
125
+ }
92
126
  endOrFail(channel, error) {
93
127
  if (ENDS_THE_LINK.has(error.errorCode)) {
94
128
  channel.end();
@@ -102,13 +136,16 @@ class BleLink {
102
136
  }
103
137
  }
104
138
 
105
- /** Connects (retrying with backoff) and discovers services; aborting `signal` closes the link. */
139
+ /** Connects (retrying with backoff), discovers services and reads Device Information; aborting `signal` closes the link. */
106
140
  async function openBleLink(device, signal) {
107
141
  await connectWithRetries(device, signal).catch(error => {
108
142
  throw fromBleError(error);
109
143
  });
144
+ const pairing = new BTPairingRetry(device, () => sentryLogger("info", "BLUETOOTH: Waiting for the user to pair the device"));
145
+ let information;
110
146
  try {
111
147
  await device.discoverAllServicesAndCharacteristics();
148
+ information = await readInformation(device, pairing);
112
149
  if (signal.aborted) {
113
150
  throw abortReason(signal);
114
151
  }
@@ -116,7 +153,7 @@ async function openBleLink(device, signal) {
116
153
  await device.cancelConnection().catch(() => undefined);
117
154
  throw fromBleError(error);
118
155
  }
119
- return new BleLink(device, signal);
156
+ return new BleLink(device, signal, pairing, information);
120
157
  }
121
158
  export { openBleLink };
122
159
  //# sourceMappingURL=ble-link.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sentryLogger","Channel","fromBleError","CONNECT_ATTEMPTS","FIRST_RETRY_DELAY_MS","MAX_RETRY_DELAY_MS","ENDS_THE_LINK","Set","toBytes","base64","Uint8Array","from","atob","char","charCodeAt","toBase64","bytes","btoa","String","fromCharCode","retryDelay","attempt","Math","min","abortReason","signal","reason","Error","wait","ms","Promise","resolve","reject","aborted","clearTimeout","timer","setTimeout","removeEventListener","addEventListener","once","connectWithRetries","device","isConnected","connect","error","errorCode","code","attempts","BleLink","channels","ended","closeOnAbort","close","constructor","disconnected","onDisconnected","endAll","subscribe","service","characteristic","channel","subscription","remove","delete","monitorCharacteristicForService","value","endOrFail","push","add","end","write","writeCharacteristicWithResponseForService","cancelConnection","catch","undefined","has","fail","forEach","openBleLink","discoverAllServicesAndCharacteristics"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/ble-link.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["readDeviceInformation","awaitNotificationsEnabled","BTPairingRetry","sentryLogger","Channel","fromBleError","CONNECT_ATTEMPTS","FIRST_RETRY_DELAY_MS","MAX_RETRY_DELAY_MS","ENDS_THE_LINK","Set","toBytes","base64","Uint8Array","from","atob","char","charCodeAt","toBase64","bytes","btoa","String","fromCharCode","retryDelay","attempt","Math","min","abortReason","signal","reason","Error","wait","ms","Promise","resolve","reject","aborted","clearTimeout","timer","setTimeout","removeEventListener","addEventListener","once","connectWithRetries","device","isConnected","connect","error","errorCode","code","attempts","readInformation","pairing","information","manufacturerName","model","serialNumber","run","BleLink","channels","notificationsPending","ended","closeOnAbort","close","constructor","deviceInformation","disconnected","onDisconnected","endAll","subscribe","service","characteristic","channel","subscription","remove","delete","monitorCharacteristicForService","value","endOrFail","push","add","awaitNotifications","end","write","all","writeCharacteristicWithResponseForService","cancelConnection","catch","undefined","serviceUuid","characteristicUuid","enabled","finally","has","fail","forEach","openBleLink","discoverAllServicesAndCharacteristics"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/ble-link.ts"],"mappings":"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","ignoreList":[]}
@@ -90,6 +90,10 @@ class Connections {
90
90
  this.store.updateDevice(id, {
91
91
  connection: event.status
92
92
  });
93
+ } else if (event.kind === "information") {
94
+ this.store.updateDevice(id, {
95
+ information: event.information
96
+ });
93
97
  } else if (event.kind === "reading") {
94
98
  const device = this.store.device(id);
95
99
  if (device) {
@@ -1 +1 @@
1
- {"version":3,"names":["asBluetoothError","BluetoothError","keepReadings","endedBeforeConnecting","Connections","sessions","Map","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","error","run","then","catch","failure","finally","delete","set","event","apply","kind","status","device","receive","reading"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["asBluetoothError","BluetoothError","keepReadings","endedBeforeConnecting","Connections","sessions","Map","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","error","run","then","catch","failure","finally","delete","set","event","apply","kind","status","information","device","receive","reading"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":";;AACA,SAASA,gBAAgB,EAAEC,cAAc,QAAQ,aAAU;AAE3D,SAASC,YAAY,QAAsB,oBAAiB;AAM5D,MAAMC,qBAAqB,GAAGA,CAAA,KAC5B,IAAIF,cAAc,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;;AAExF;AACA,MAAMG,WAAW,CAAC;EACCC,QAAQ,GAAG,IAAIC,GAAG,CAAkB,CAAC;EAE/CC,WAAWA,CACCC,KAAoB,EACpBC,QAAoB,EACpBC,MAAoB,EACpBC,OAA6B,EAC9C;IAAA,KAJiBH,KAAoB,GAApBA,KAAoB;IAAA,KACpBC,QAAoB,GAApBA,QAAoB;IAAA,KACpBC,MAAoB,GAApBA,MAAoB;IAAA,KACpBC,OAA6B,GAA7BA,OAA6B;EAC7C;EAEIC,QAAQA,CAACC,EAAU,EAAW;IACnC,OAAO,IAAI,CAACR,QAAQ,CAACS,GAAG,CAACD,EAAE,CAAC;EAC9B;;EAEA;EACA,MAAaE,OAAOA,CAACC,UAAsB,EAAEC,MAAc,EAAiB;IAC1E,MAAMC,OAAO,GAAG,IAAI,CAACb,QAAQ,CAACc,GAAG,CAACH,UAAU,CAACH,EAAE,CAAC;IAEhD,IAAIK,OAAO,EAAEE,UAAU,CAACC,MAAM,CAACC,OAAO,EAAE;MACtC,MAAMJ,OAAO,CAACK,KAAK;MAEnB,OAAO,IAAI,CAACR,OAAO,CAACC,UAAU,EAAEC,MAAM,CAAC;IACzC;IAEA,OAAO,CAACC,OAAO,IAAI,IAAI,CAACM,KAAK,CAACR,UAAU,EAAEC,MAAM,CAAC,EAAEQ,SAAS;EAC9D;EAEA,MAAaC,UAAUA,CAACb,EAAU,EAAiB;IACjD,MAAMc,OAAO,GAAG,IAAI,CAACtB,QAAQ,CAACc,GAAG,CAACN,EAAE,CAAC;IAErCc,OAAO,EAAEP,UAAU,CAACQ,KAAK,CAAC,CAAC;IAC3B,MAAMD,OAAO,EAAEJ,KAAK;EACtB;;EAEA;EACA,MAAaM,aAAaA,CAAA,EAAkB;IAC1C,MAAMC,OAAO,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC1B,QAAQ,CAAC2B,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEpB,EAAE,IAAK,IAAI,CAACa,UAAU,CAACb,EAAE,CAAC,CAAC,CAAC;EAC/E;EAEQW,KAAKA,CAACR,UAAsB,EAAEC,MAAc,EAAW;IAC7D,MAAM;MAAEJ;IAAG,CAAC,GAAGG,UAAU;IACzB,MAAMI,UAAU,GAAG,IAAIc,eAAe,CAAC,CAAC;IACxC,IAAIC,aAAa,GAAGA,CAAA,KAAMC,SAAiB;IAC3C,IAAIC,cAA+C,GAAGA,CAAA,KAAMD,SAAS;IAErE,MAAMX,SAAS,GAAG,IAAIK,OAAO,CAAO,CAACQ,OAAO,EAAEC,MAAM,KAAK;MACvDJ,aAAa,GAAGG,OAAO;MACvBD,cAAc,GAAGE,MAAM;IACzB,CAAC,CAAC;IAEF,IAAI,CAAC/B,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAE;MAAE4B,UAAU,EAAE,YAAY;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAEtE,MAAMnB,KAAK,GAAG,IAAI,CAACoB,GAAG,CAAC3B,UAAU,EAAEC,MAAM,EAAEG,UAAU,CAACC,MAAM,EAAE,MAAMc,aAAa,CAAC,CAAC,CAAC,CACjFS,IAAI,CAAC,MAAM;MACV,IAAI,CAACpC,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAE;QAAE4B,UAAU,EAAE;MAAe,CAAC,CAAC;MAC3DJ,cAAc,CAAClC,qBAAqB,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CACD0C,KAAK,CAAEH,KAAc,IAAK;MACzB,MAAMI,OAAO,GAAG9C,gBAAgB,CAAC0C,KAAK,EAAE,mBAAmB,CAAC;MAE5D,IAAI,CAAClC,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAEO,UAAU,CAACC,MAAM,CAACC,OAAO,GACjD;QAAEmB,UAAU,EAAE;MAAe,CAAC,GAC9B;QAAEA,UAAU,EAAE,QAAQ;QAAEC,KAAK,EAAEI;MAAQ,CAAC,CAAC;MAC7CT,cAAc,CAACS,OAAO,CAAC;IACzB,CAAC,CAAC,CACDC,OAAO,CAAC,MAAM;MACb,IAAI,CAAC1C,QAAQ,CAAC2C,MAAM,CAACnC,EAAE,CAAC;MACxB,IAAI,CAACF,OAAO,CAACE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEJ,MAAMc,OAAO,GAAG;MAAEP,UAAU;MAAEK,SAAS;MAAEF;IAAM,CAAC;IAEhD,IAAI,CAAClB,QAAQ,CAAC4C,GAAG,CAACpC,EAAE,EAAEc,OAAO,CAAC;IAE9B,OAAOA,OAAO;EAChB;EAEA,MAAcgB,GAAGA,CAAC3B,UAAsB,EAAEC,MAAc,EAAEI,MAAmB,EAAEI,SAAqB,EAAiB;IACnH,WAAW,MAAMyB,KAAK,IAAIhD,YAAY,CAACe,MAAM,CAACD,UAAU,EAAEK,MAAM,CAAC,EAAE,IAAI,CAACX,MAAM,CAAC,EAAE;MAC/E,IAAI,CAACyC,KAAK,CAACnC,UAAU,CAACH,EAAE,EAAEqC,KAAK,EAAEzB,SAAS,CAAC;IAC7C;EACF;EAEQ0B,KAAKA,CAACtC,EAAU,EAAEqC,KAAkB,EAAEzB,SAAqB,EAAQ;IACzE,IAAIyB,KAAK,CAACE,IAAI,KAAK,QAAQ,EAAE;MAC3B,IAAIF,KAAK,CAACG,MAAM,KAAK,cAAc,EAAE;QACnC5B,SAAS,CAAC,CAAC;MACb;MACA,IAAI,CAACjB,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAE;QAAE4B,UAAU,EAAES,KAAK,CAACG;MAAO,CAAC,CAAC;IAC3D,CAAC,MAAM,IAAIH,KAAK,CAACE,IAAI,KAAK,aAAa,EAAE;MACvC,IAAI,CAAC5C,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAE;QAAEyC,WAAW,EAAEJ,KAAK,CAACI;MAAY,CAAC,CAAC;IACjE,CAAC,MAAM,IAAIJ,KAAK,CAACE,IAAI,KAAK,SAAS,EAAE;MACnC,MAAMG,MAAM,GAAG,IAAI,CAAC/C,KAAK,CAAC+C,MAAM,CAAC1C,EAAE,CAAC;MAEpC,IAAI0C,MAAM,EAAE;QACV,IAAI,CAAC9C,QAAQ,CAAC+C,OAAO,CAACD,MAAM,EAAEL,KAAK,CAACrC,EAAE,EAAEqC,KAAK,CAACO,OAAO,CAAC;MACxD;IACF,CAAC,MAAM;MACL,IAAI,CAACjD,KAAK,CAACgC,YAAY,CAAC3B,EAAE,EAAE;QAAE6B,KAAK,EAAEQ,KAAK,CAACR;MAAM,CAAC,CAAC;IACrD;EACF;AACF;AAEA,SAAStC,WAAW","ignoreList":[]}
@@ -29,6 +29,12 @@ const gattDriver = (key, protocol) => async function* (peripheral, signal) {
29
29
  kind: "status",
30
30
  status: "connected"
31
31
  };
32
+ if (link.deviceInformation) {
33
+ yield {
34
+ kind: "information",
35
+ information: link.deviceInformation
36
+ };
37
+ }
32
38
  for await (const reading of protocol(link)) {
33
39
  yield {
34
40
  kind: "reading",
@@ -1 +1 @@
1
- {"version":3,"names":["stableHash","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","readingId","key","peripheral","id","gattDriver","protocol","signal","link","openLink","kind","status","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;AAIA,SAASA,UAAU,QAAQ,kBAAe;;AAG1C;;AA8BA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AACA,MAAMC,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEV,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQF,UAAU,CAAC;EAAEW,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACC,EAAE;EAAEX;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMY,UAAU,GAAGA,CAACH,GAAW,EAAEI,QAAwB,KACvD,iBAAiBH,UAAU,EAAEI,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAML,UAAU,CAACM,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,WAAW,MAAMlB,OAAO,IAAIa,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEH,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEV,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEiB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACI,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAEH,SAASP,UAAU,EAAEb,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["stableHash","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","readingId","key","peripheral","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;AAIA,SAASA,UAAU,QAAQ,kBAAe;;AAG1C;;AAsCA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AACA,MAAMC,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEV,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQF,UAAU,CAAC;EAAEW,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACC,EAAE;EAAEX;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMY,UAAU,GAAGA,CAACH,GAAW,EAAEI,QAAwB,KACvD,iBAAiBH,UAAU,EAAEI,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAML,UAAU,CAACM,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,IAAIH,IAAI,CAACI,iBAAiB,EAAE;MAC1B,MAAM;QAAEF,IAAI,EAAE,aAAa;QAAEG,WAAW,EAAEL,IAAI,CAACI;MAAkB,CAAC;IACpE;IACA,WAAW,MAAMnB,OAAO,IAAIa,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEH,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEV,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEiB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACM,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAEH,SAAST,UAAU,EAAEb,aAAa","ignoreList":[]}
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ /** The time the device took the reading, when it reported one. */
4
+ const recordedAtOf = measurement => {
5
+ const {
6
+ recordedAt
7
+ } = measurement;
8
+ return recordedAt instanceof Date && !Number.isNaN(recordedAt.getTime()) ? recordedAt : undefined;
9
+ };
10
+
3
11
  /** Saves readings for the signed-in account through the `Ovok` measurements API. */
4
12
  const ovokReadingSink = client => ({
5
13
  save: async ({
@@ -10,12 +18,15 @@ const ovokReadingSink = client => ({
10
18
  const result = await client.measurements.save({
11
19
  measurement,
12
20
  sourceId: id,
21
+ effectiveDateTime: recordedAtOf(measurement),
13
22
  device: {
14
23
  id: device.id,
15
24
  name: device.key,
16
25
  localName: device.name,
17
26
  manufacturerData: "",
18
- sn: ""
27
+ manufacturerName: device.information?.manufacturerName,
28
+ model: device.information?.model,
29
+ sn: device.information?.serialNumber ?? ""
19
30
  }
20
31
  });
21
32
  return result.status === "saved" ? {
@@ -1 +1 @@
1
- {"version":3,"names":["ovokReadingSink","client","save","id","device","measurement","result","measurements","sourceId","name","key","localName","manufacturerData","sn","status","flushQueued","Object","keys","offlineQueue","flush","responses"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/react-native/ovok-sink.ts"],"mappings":";;AAIA;AACA,MAAMA,eAAe,GAAIC,MAAY,KAAmB;EACtDC,IAAI,EAAE,MAAAA,CAAO;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAY,CAAC,KAAK;IAC3C,MAAMC,MAAM,GAAG,MAAML,MAAM,CAACM,YAAY,CAACL,IAAI,CAAC;MAC5CG,WAAW;MACXG,QAAQ,EAAEL,EAAE;MACZC,MAAM,EAAE;QAAED,EAAE,EAAEC,MAAM,CAACD,EAAE;QAAEM,IAAI,EAAEL,MAAM,CAACM,GAAG;QAAEC,SAAS,EAAEP,MAAM,CAACK,IAAI;QAAEG,gBAAgB,EAAE,EAAE;QAAEC,EAAE,EAAE;MAAG;IAClG,CAAC,CAAC;IAEF,OAAOP,MAAM,CAACQ,MAAM,KAAK,OAAO,GAAG;MAAEA,MAAM,EAAE;IAAQ,CAAC,GAAGR,MAAM;EACjE,CAAC;EACDS,WAAW,EAAE,MAAAA,CAAA,KAAYC,MAAM,CAACC,IAAI,CAAC,CAAC,MAAMhB,MAAM,CAACM,YAAY,CAACW,YAAY,CAACC,KAAK,CAAC,CAAC,EAAEC,SAAS;AACjG,CAAC,CAAC;AAEF,SAASpB,eAAe","ignoreList":[]}
1
+ {"version":3,"names":["recordedAtOf","measurement","recordedAt","Date","Number","isNaN","getTime","undefined","ovokReadingSink","client","save","id","device","result","measurements","sourceId","effectiveDateTime","name","key","localName","manufacturerData","manufacturerName","information","model","sn","serialNumber","status","flushQueued","Object","keys","offlineQueue","flush","responses"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/react-native/ovok-sink.ts"],"mappings":";;AAIA;AACA,MAAMA,YAAY,GAAIC,WAAmB,IAAuB;EAC9D,MAAM;IAAEC;EAAW,CAAC,GAAGD,WAAuC;EAE9D,OAAOC,UAAU,YAAYC,IAAI,IAAI,CAACC,MAAM,CAACC,KAAK,CAACH,UAAU,CAACI,OAAO,CAAC,CAAC,CAAC,GAAGJ,UAAU,GAAGK,SAAS;AACnG,CAAC;;AAED;AACA,MAAMC,eAAe,GAAIC,MAAY,KAAmB;EACtDC,IAAI,EAAE,MAAAA,CAAO;IAAEC,EAAE;IAAEC,MAAM;IAAEX;EAAY,CAAC,KAAK;IAC3C,MAAMY,MAAM,GAAG,MAAMJ,MAAM,CAACK,YAAY,CAACJ,IAAI,CAAC;MAC5CT,WAAW;MACXc,QAAQ,EAAEJ,EAAE;MACZK,iBAAiB,EAAEhB,YAAY,CAACC,WAAW,CAAC;MAC5CW,MAAM,EAAE;QACND,EAAE,EAAEC,MAAM,CAACD,EAAE;QACbM,IAAI,EAAEL,MAAM,CAACM,GAAG;QAChBC,SAAS,EAAEP,MAAM,CAACK,IAAI;QACtBG,gBAAgB,EAAE,EAAE;QACpBC,gBAAgB,EAAET,MAAM,CAACU,WAAW,EAAED,gBAAgB;QACtDE,KAAK,EAAEX,MAAM,CAACU,WAAW,EAAEC,KAAK;QAChCC,EAAE,EAAEZ,MAAM,CAACU,WAAW,EAAEG,YAAY,IAAI;MAC1C;IACF,CAAC,CAAC;IAEF,OAAOZ,MAAM,CAACa,MAAM,KAAK,OAAO,GAAG;MAAEA,MAAM,EAAE;IAAQ,CAAC,GAAGb,MAAM;EACjE,CAAC;EACDc,WAAW,EAAE,MAAAA,CAAA,KAAYC,MAAM,CAACC,IAAI,CAAC,CAAC,MAAMpB,MAAM,CAACK,YAAY,CAACgB,YAAY,CAACC,KAAK,CAAC,CAAC,EAAEC,SAAS;AACjG,CAAC,CAAC;AAEF,SAASxB,eAAe","ignoreList":[]}
@@ -27,7 +27,8 @@ class ReadingLog {
27
27
  device: {
28
28
  id: device.id,
29
29
  key: device.key,
30
- name: device.name
30
+ name: device.name,
31
+ information: device.information
31
32
  },
32
33
  measurement,
33
34
  receivedAt,
@@ -1 +1 @@
1
- {"version":3,"names":["BluetoothError","KEPT_READINGS","RECOGNISED_READINGS","saveFailed","error","Error","message","String","ReadingLog","recent","Set","sequence","constructor","store","sink","receive","device","id","measurement","remember","receivedAt","Date","reading","getTime","key","name","save","status","set","readings","get","slice","retrySaves","failed","filter","updateReadings","includes","Promise","all","map","flushed","flushQueued","has","queueId","add","size","delete","values","next","value","then","result","current"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/readings.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BluetoothError","KEPT_READINGS","RECOGNISED_READINGS","saveFailed","error","Error","message","String","ReadingLog","recent","Set","sequence","constructor","store","sink","receive","device","id","measurement","remember","receivedAt","Date","reading","getTime","key","name","information","save","status","set","readings","get","slice","retrySaves","failed","filter","updateReadings","includes","Promise","all","map","flushed","flushQueued","has","queueId","add","size","delete","values","next","value","then","result","current"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/readings.ts"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
2
 
3
- const canonicalize = value => {
3
+ const padded = (value, digits = 2) => String(value).padStart(digits, "0");
4
+
5
+ /** The date as a clock on the wall reads it, which a device's stored record keeps in every time zone. */
6
+ const wallClock = date => `${date.getFullYear()}-${padded(date.getMonth() + 1)}-${padded(date.getDate())}T${padded(date.getHours())}:${padded(date.getMinutes())}:${padded(date.getSeconds())}.${padded(date.getMilliseconds(), 3)}`;
7
+ const instant = date => date.toISOString();
8
+ const canonicalize = (value, formatDate) => {
4
9
  if (value instanceof Date) {
5
- return value.toISOString();
10
+ return formatDate(value);
6
11
  }
7
12
  if (Array.isArray(value)) {
8
- return value.map(canonicalize);
13
+ return value.map(item => canonicalize(item, formatDate));
9
14
  }
10
15
  if (value && typeof value === "object") {
11
- return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, nested]) => [key, canonicalize(nested)]));
16
+ return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, nested]) => [key, canonicalize(nested, formatDate)]));
12
17
  }
13
18
  return value;
14
19
  };
@@ -23,6 +28,10 @@ const hash = value => {
23
28
  return `${(first >>> 0).toString(16).padStart(8, "0")}${(second >>> 0).toString(16).padStart(8, "0")}`;
24
29
  };
25
30
 
26
- /** A short hash of `value` that ignores key order and is the same on every run. */
27
- export const stableHash = value => hash(JSON.stringify(canonicalize(value)));
31
+ /** A short hash of `value` that ignores key order, is the same on every run and reads dates by their wall clock. */
32
+ const stableHash = value => hash(JSON.stringify(canonicalize(value, wallClock)));
33
+
34
+ /** `stableHash` as SDKs before 1.16.1 computed it, reading dates as instants; for finding what they saved. */
35
+ const instantStableHash = value => hash(JSON.stringify(canonicalize(value, instant)));
36
+ export { instantStableHash, stableHash };
28
37
  //# sourceMappingURL=stable-hash.js.map