@ovok/native 1.6.49 → 1.6.51

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 (474) hide show
  1. package/README.md +21 -0
  2. package/lib/commonjs/index.js +18 -7
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/modules/auth/default-translation.js +6 -1
  5. package/lib/commonjs/modules/auth/default-translation.js.map +1 -1
  6. package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js +9 -14
  7. package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
  8. package/lib/commonjs/modules/auth/hooks/use-auth-action.js +41 -0
  9. package/lib/commonjs/modules/auth/hooks/use-auth-action.js.map +1 -0
  10. package/lib/commonjs/modules/auth/hooks/use-delete-account.js +27 -0
  11. package/lib/commonjs/modules/auth/hooks/use-delete-account.js.map +1 -0
  12. package/lib/commonjs/modules/auth/hooks/use-session.js +14 -86
  13. package/lib/commonjs/modules/auth/hooks/use-session.js.map +1 -1
  14. package/lib/commonjs/modules/auth/hooks/use-sign-in.js +66 -0
  15. package/lib/commonjs/modules/auth/hooks/use-sign-in.js.map +1 -0
  16. package/lib/commonjs/modules/auth/hooks/use-sign-out.js +15 -0
  17. package/lib/commonjs/modules/auth/hooks/use-sign-out.js.map +1 -0
  18. package/lib/commonjs/modules/auth/hooks/use-social-sign-in.js +92 -0
  19. package/lib/commonjs/modules/auth/hooks/use-social-sign-in.js.map +1 -0
  20. package/lib/commonjs/modules/auth/index.js +55 -0
  21. package/lib/commonjs/modules/auth/index.js.map +1 -1
  22. package/lib/commonjs/modules/auth/logout-button/components/logout-button.js +11 -16
  23. package/lib/commonjs/modules/auth/logout-button/components/logout-button.js.map +1 -1
  24. package/lib/commonjs/modules/auth/profile/components/profile-form-provider.js +5 -3
  25. package/lib/commonjs/modules/auth/profile/components/profile-form-provider.js.map +1 -1
  26. package/lib/commonjs/modules/auth/profile/contexts/profile-form-context.js +1 -1
  27. package/lib/commonjs/modules/auth/profile/contexts/profile-form-context.js.map +1 -1
  28. package/lib/commonjs/modules/auth/profile/hooks/use-profile-form.js +1 -1
  29. package/lib/commonjs/modules/auth/profile/hooks/use-profile-form.js.map +1 -1
  30. package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js +6 -4
  31. package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js.map +1 -1
  32. package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js +2 -4
  33. package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js.map +1 -1
  34. package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js +6 -4
  35. package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
  36. package/lib/commonjs/modules/auth/reset-password/contexts/reset-password-form-context.js +1 -1
  37. package/lib/commonjs/modules/auth/reset-password/contexts/reset-password-form-context.js.map +1 -1
  38. package/lib/commonjs/modules/auth/reset-password/hooks/use-reset-password-form.js +1 -1
  39. package/lib/commonjs/modules/auth/reset-password/hooks/use-reset-password-form.js.map +1 -1
  40. package/lib/commonjs/modules/auth/session/logout-session.js +29 -0
  41. package/lib/commonjs/modules/auth/session/logout-session.js.map +1 -0
  42. package/lib/commonjs/modules/auth/session/session-store.js +152 -0
  43. package/lib/commonjs/modules/auth/session/session-store.js.map +1 -0
  44. package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js +25 -41
  45. package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
  46. package/lib/commonjs/modules/auth/sign-in/components/social-logins/apple-login-button.js +13 -12
  47. package/lib/commonjs/modules/auth/sign-in/components/social-logins/apple-login-button.js.map +1 -1
  48. package/lib/commonjs/modules/auth/sign-in/components/social-logins/google-login-button.js +4 -4
  49. package/lib/commonjs/modules/auth/sign-in/components/social-logins/google-login-button.js.map +1 -1
  50. package/lib/commonjs/modules/auth/sign-in/contexts/login-form-context.js +1 -1
  51. package/lib/commonjs/modules/auth/sign-in/contexts/login-form-context.js.map +1 -1
  52. package/lib/commonjs/modules/auth/sign-in/hooks/use-login-form.js +1 -1
  53. package/lib/commonjs/modules/auth/sign-in/hooks/use-login-form.js.map +1 -1
  54. package/lib/commonjs/modules/bt-device/components/device-list-provider.js +5 -4
  55. package/lib/commonjs/modules/bt-device/components/device-list-provider.js.map +1 -1
  56. package/lib/commonjs/modules/bt-device/components/hooks/use-device-list.js +1 -1
  57. package/lib/commonjs/modules/bt-device/components/hooks/use-device-list.js.map +1 -1
  58. package/lib/commonjs/modules/bt-device/contexts/device-list-context.js +1 -4
  59. package/lib/commonjs/modules/bt-device/contexts/device-list-context.js.map +1 -1
  60. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +176 -84
  61. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  62. package/lib/commonjs/modules/bt-management/components/bt-provider.js +3 -2
  63. package/lib/commonjs/modules/bt-management/components/bt-provider.js.map +1 -1
  64. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js +146 -14
  65. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  66. package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js +17 -11
  67. package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js.map +1 -1
  68. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js +100 -0
  69. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -0
  70. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js +13 -26
  71. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -1
  72. package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js +148 -0
  73. package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js.map +1 -0
  74. package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js +10 -26
  75. package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js.map +1 -1
  76. package/lib/commonjs/modules/bt-management/hooks/use-health-import.js +7 -76
  77. package/lib/commonjs/modules/bt-management/hooks/use-health-import.js.map +1 -1
  78. package/lib/commonjs/modules/bt-management/hooks/use-measurements.js +43 -57
  79. package/lib/commonjs/modules/bt-management/hooks/use-measurements.js.map +1 -1
  80. package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js +12 -16
  81. package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js.map +1 -1
  82. package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js +31 -12
  83. package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
  84. package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js +12 -55
  85. package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
  86. package/lib/commonjs/modules/bt-management/hooks/use-scan-control.js +6 -4
  87. package/lib/commonjs/modules/bt-management/hooks/use-scan-control.js.map +1 -1
  88. package/lib/commonjs/modules/bt-management/index.js +133 -11
  89. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  90. package/lib/commonjs/modules/cms/hooks/use-cms-content.js +50 -0
  91. package/lib/commonjs/modules/cms/hooks/use-cms-content.js.map +1 -0
  92. package/lib/commonjs/modules/cms/hooks/use-cms-locale.js +20 -0
  93. package/lib/commonjs/modules/cms/hooks/use-cms-locale.js.map +1 -0
  94. package/lib/commonjs/modules/cms/hooks/use-cms-translations.js +50 -0
  95. package/lib/commonjs/modules/cms/hooks/use-cms-translations.js.map +1 -0
  96. package/lib/commonjs/modules/cms/index.js +39 -0
  97. package/lib/commonjs/modules/cms/index.js.map +1 -0
  98. package/lib/commonjs/modules/cms/merge-cms-translations.js +49 -0
  99. package/lib/commonjs/modules/cms/merge-cms-translations.js.map +1 -0
  100. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +23 -18
  101. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  102. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +19 -18
  103. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  104. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js +20 -0
  105. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -0
  106. package/lib/commonjs/modules/data-sync/contexts/health-authorization-context.js +18 -0
  107. package/lib/commonjs/modules/data-sync/contexts/health-authorization-context.js.map +1 -0
  108. package/lib/commonjs/modules/data-sync/hooks/use-health-import.js +81 -0
  109. package/lib/commonjs/modules/data-sync/hooks/use-health-import.js.map +1 -0
  110. package/lib/commonjs/modules/data-sync/index.js +37 -0
  111. package/lib/commonjs/modules/data-sync/index.js.map +1 -1
  112. package/lib/commonjs/modules/helpers/hooks/use-shallow-stable-value.js +20 -0
  113. package/lib/commonjs/modules/helpers/hooks/use-shallow-stable-value.js.map +1 -0
  114. package/lib/commonjs/modules/language-switcher/components/language-switcher.js +12 -4
  115. package/lib/commonjs/modules/language-switcher/components/language-switcher.js.map +1 -1
  116. package/lib/commonjs/modules/language-switcher/components/option/context/language-option-context.js +1 -1
  117. package/lib/commonjs/modules/language-switcher/components/option/context/language-option-context.js.map +1 -1
  118. package/lib/commonjs/modules/language-switcher/components/option/language-switcher-option.js +5 -4
  119. package/lib/commonjs/modules/language-switcher/components/option/language-switcher-option.js.map +1 -1
  120. package/lib/commonjs/modules/socket/components/socket-provider.js +78 -73
  121. package/lib/commonjs/modules/socket/components/socket-provider.js.map +1 -1
  122. package/lib/commonjs/modules/tab/components/tab-provider.js +12 -1
  123. package/lib/commonjs/modules/tab/components/tab-provider.js.map +1 -1
  124. package/lib/commonjs/modules/tab/contexts/tab-context.js +1 -1
  125. package/lib/commonjs/modules/tab/contexts/tab-context.js.map +1 -1
  126. package/lib/commonjs/modules/tab/hooks/use-tab.js +1 -1
  127. package/lib/commonjs/modules/tab/hooks/use-tab.js.map +1 -1
  128. package/lib/commonjs/modules/ui/components/health-import-card.js +2 -3
  129. package/lib/commonjs/modules/ui/components/health-import-card.js.map +1 -1
  130. package/lib/commonjs/modules/ui/components/pairing-flow.js.map +1 -1
  131. package/lib/module/index.js +1 -0
  132. package/lib/module/index.js.map +1 -1
  133. package/lib/module/modules/auth/default-translation.js +3 -1
  134. package/lib/module/modules/auth/default-translation.js.map +1 -1
  135. package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js +9 -14
  136. package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
  137. package/lib/module/modules/auth/hooks/use-auth-action.js +36 -0
  138. package/lib/module/modules/auth/hooks/use-auth-action.js.map +1 -0
  139. package/lib/module/modules/auth/hooks/use-delete-account.js +22 -0
  140. package/lib/module/modules/auth/hooks/use-delete-account.js.map +1 -0
  141. package/lib/module/modules/auth/hooks/use-session.js +17 -88
  142. package/lib/module/modules/auth/hooks/use-session.js.map +1 -1
  143. package/lib/module/modules/auth/hooks/use-sign-in.js +61 -0
  144. package/lib/module/modules/auth/hooks/use-sign-in.js.map +1 -0
  145. package/lib/module/modules/auth/hooks/use-sign-out.js +10 -0
  146. package/lib/module/modules/auth/hooks/use-sign-out.js.map +1 -0
  147. package/lib/module/modules/auth/hooks/use-social-sign-in.js +86 -0
  148. package/lib/module/modules/auth/hooks/use-social-sign-in.js.map +1 -0
  149. package/lib/module/modules/auth/index.js +5 -0
  150. package/lib/module/modules/auth/index.js.map +1 -1
  151. package/lib/module/modules/auth/logout-button/components/logout-button.js +11 -16
  152. package/lib/module/modules/auth/logout-button/components/logout-button.js.map +1 -1
  153. package/lib/module/modules/auth/profile/components/profile-form-provider.js +5 -3
  154. package/lib/module/modules/auth/profile/components/profile-form-provider.js.map +1 -1
  155. package/lib/module/modules/auth/profile/contexts/profile-form-context.js +1 -1
  156. package/lib/module/modules/auth/profile/contexts/profile-form-context.js.map +1 -1
  157. package/lib/module/modules/auth/profile/hooks/use-profile-form.js +1 -1
  158. package/lib/module/modules/auth/profile/hooks/use-profile-form.js.map +1 -1
  159. package/lib/module/modules/auth/register/components/form/register-form-provider.js +6 -4
  160. package/lib/module/modules/auth/register/components/form/register-form-provider.js.map +1 -1
  161. package/lib/module/modules/auth/reset-password/components/form/inputs.js +2 -4
  162. package/lib/module/modules/auth/reset-password/components/form/inputs.js.map +1 -1
  163. package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js +6 -4
  164. package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
  165. package/lib/module/modules/auth/reset-password/contexts/reset-password-form-context.js +1 -1
  166. package/lib/module/modules/auth/reset-password/contexts/reset-password-form-context.js.map +1 -1
  167. package/lib/module/modules/auth/reset-password/hooks/use-reset-password-form.js +1 -1
  168. package/lib/module/modules/auth/reset-password/hooks/use-reset-password-form.js.map +1 -1
  169. package/lib/module/modules/auth/session/logout-session.js +24 -0
  170. package/lib/module/modules/auth/session/logout-session.js.map +1 -0
  171. package/lib/module/modules/auth/session/session-store.js +148 -0
  172. package/lib/module/modules/auth/session/session-store.js.map +1 -0
  173. package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js +25 -41
  174. package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
  175. package/lib/module/modules/auth/sign-in/components/social-logins/apple-login-button.js +13 -12
  176. package/lib/module/modules/auth/sign-in/components/social-logins/apple-login-button.js.map +1 -1
  177. package/lib/module/modules/auth/sign-in/components/social-logins/google-login-button.js +4 -4
  178. package/lib/module/modules/auth/sign-in/components/social-logins/google-login-button.js.map +1 -1
  179. package/lib/module/modules/auth/sign-in/contexts/login-form-context.js +1 -1
  180. package/lib/module/modules/auth/sign-in/contexts/login-form-context.js.map +1 -1
  181. package/lib/module/modules/auth/sign-in/hooks/use-login-form.js +1 -1
  182. package/lib/module/modules/auth/sign-in/hooks/use-login-form.js.map +1 -1
  183. package/lib/module/modules/bt-device/components/device-list-provider.js +5 -4
  184. package/lib/module/modules/bt-device/components/device-list-provider.js.map +1 -1
  185. package/lib/module/modules/bt-device/components/hooks/use-device-list.js +1 -1
  186. package/lib/module/modules/bt-device/components/hooks/use-device-list.js.map +1 -1
  187. package/lib/module/modules/bt-device/contexts/device-list-context.js +1 -4
  188. package/lib/module/modules/bt-device/contexts/device-list-context.js.map +1 -1
  189. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +175 -84
  190. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  191. package/lib/module/modules/bt-management/components/bt-provider.js +3 -2
  192. package/lib/module/modules/bt-management/components/bt-provider.js.map +1 -1
  193. package/lib/module/modules/bt-management/hooks/runtime-context.js +144 -13
  194. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  195. package/lib/module/modules/bt-management/hooks/use-background-sync.js +17 -11
  196. package/lib/module/modules/bt-management/hooks/use-background-sync.js.map +1 -1
  197. package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js +94 -0
  198. package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -0
  199. package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js +13 -26
  200. package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -1
  201. package/lib/module/modules/bt-management/hooks/use-bt-device.js +142 -0
  202. package/lib/module/modules/bt-management/hooks/use-bt-device.js.map +1 -0
  203. package/lib/module/modules/bt-management/hooks/use-device-connection.js +11 -26
  204. package/lib/module/modules/bt-management/hooks/use-device-connection.js.map +1 -1
  205. package/lib/module/modules/bt-management/hooks/use-health-import.js +2 -73
  206. package/lib/module/modules/bt-management/hooks/use-health-import.js.map +1 -1
  207. package/lib/module/modules/bt-management/hooks/use-measurements.js +44 -58
  208. package/lib/module/modules/bt-management/hooks/use-measurements.js.map +1 -1
  209. package/lib/module/modules/bt-management/hooks/use-nearby-devices.js +13 -17
  210. package/lib/module/modules/bt-management/hooks/use-nearby-devices.js.map +1 -1
  211. package/lib/module/modules/bt-management/hooks/use-paired-devices.js +31 -12
  212. package/lib/module/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
  213. package/lib/module/modules/bt-management/hooks/use-request-permissions.js +12 -54
  214. package/lib/module/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
  215. package/lib/module/modules/bt-management/hooks/use-scan-control.js +6 -4
  216. package/lib/module/modules/bt-management/hooks/use-scan-control.js.map +1 -1
  217. package/lib/module/modules/bt-management/index.js +8 -1
  218. package/lib/module/modules/bt-management/index.js.map +1 -1
  219. package/lib/module/modules/cms/hooks/use-cms-content.js +44 -0
  220. package/lib/module/modules/cms/hooks/use-cms-content.js.map +1 -0
  221. package/lib/module/modules/cms/hooks/use-cms-locale.js +16 -0
  222. package/lib/module/modules/cms/hooks/use-cms-locale.js.map +1 -0
  223. package/lib/module/modules/cms/hooks/use-cms-translations.js +45 -0
  224. package/lib/module/modules/cms/hooks/use-cms-translations.js.map +1 -0
  225. package/lib/module/modules/cms/index.js +6 -0
  226. package/lib/module/modules/cms/index.js.map +1 -0
  227. package/lib/module/modules/cms/merge-cms-translations.js +46 -0
  228. package/lib/module/modules/cms/merge-cms-translations.js.map +1 -0
  229. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +23 -18
  230. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  231. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +18 -17
  232. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  233. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js +16 -0
  234. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -0
  235. package/lib/module/modules/data-sync/contexts/health-authorization-context.js +13 -0
  236. package/lib/module/modules/data-sync/contexts/health-authorization-context.js.map +1 -0
  237. package/lib/module/modules/data-sync/hooks/use-health-import.js +76 -0
  238. package/lib/module/modules/data-sync/hooks/use-health-import.js.map +1 -0
  239. package/lib/module/modules/data-sync/index.js +2 -0
  240. package/lib/module/modules/data-sync/index.js.map +1 -1
  241. package/lib/module/modules/helpers/hooks/use-shallow-stable-value.js +14 -0
  242. package/lib/module/modules/helpers/hooks/use-shallow-stable-value.js.map +1 -0
  243. package/lib/module/modules/language-switcher/components/language-switcher.js +11 -4
  244. package/lib/module/modules/language-switcher/components/language-switcher.js.map +1 -1
  245. package/lib/module/modules/language-switcher/components/option/context/language-option-context.js +1 -1
  246. package/lib/module/modules/language-switcher/components/option/context/language-option-context.js.map +1 -1
  247. package/lib/module/modules/language-switcher/components/option/language-switcher-option.js +5 -4
  248. package/lib/module/modules/language-switcher/components/option/language-switcher-option.js.map +1 -1
  249. package/lib/module/modules/socket/components/socket-provider.js +78 -73
  250. package/lib/module/modules/socket/components/socket-provider.js.map +1 -1
  251. package/lib/module/modules/tab/components/tab-provider.js +11 -1
  252. package/lib/module/modules/tab/components/tab-provider.js.map +1 -1
  253. package/lib/module/modules/tab/contexts/tab-context.js +1 -1
  254. package/lib/module/modules/tab/contexts/tab-context.js.map +1 -1
  255. package/lib/module/modules/tab/hooks/use-tab.js +1 -1
  256. package/lib/module/modules/tab/hooks/use-tab.js.map +1 -1
  257. package/lib/module/modules/ui/components/health-import-card.js +1 -2
  258. package/lib/module/modules/ui/components/health-import-card.js.map +1 -1
  259. package/lib/module/modules/ui/components/pairing-flow.js.map +1 -1
  260. package/lib/typescript/commonjs/src/index.d.ts +1 -0
  261. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts +53 -1
  263. package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/src/modules/auth/hooks/use-auth-action.d.ts +13 -0
  266. package/lib/typescript/commonjs/src/modules/auth/hooks/use-auth-action.d.ts.map +1 -0
  267. package/lib/typescript/commonjs/src/modules/auth/hooks/use-delete-account.d.ts +8 -0
  268. package/lib/typescript/commonjs/src/modules/auth/hooks/use-delete-account.d.ts.map +1 -0
  269. package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts +6 -4
  270. package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts +24 -0
  272. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts.map +1 -0
  273. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-out.d.ts +4 -0
  274. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-out.d.ts.map +1 -0
  275. package/lib/typescript/commonjs/src/modules/auth/hooks/use-social-sign-in.d.ts +14 -0
  276. package/lib/typescript/commonjs/src/modules/auth/hooks/use-social-sign-in.d.ts.map +1 -0
  277. package/lib/typescript/commonjs/src/modules/auth/index.d.ts +5 -0
  278. package/lib/typescript/commonjs/src/modules/auth/index.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/src/modules/auth/profile/components/profile-form-provider.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/src/modules/auth/profile/contexts/profile-form-context.d.ts +1 -1
  282. package/lib/typescript/commonjs/src/modules/auth/profile/contexts/profile-form-context.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/src/modules/auth/profile/hooks/use-profile-form.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts +1 -1
  288. package/lib/typescript/commonjs/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts.map +1 -1
  289. package/lib/typescript/commonjs/src/modules/auth/session/logout-session.d.ts +6 -0
  290. package/lib/typescript/commonjs/src/modules/auth/session/logout-session.d.ts.map +1 -0
  291. package/lib/typescript/commonjs/src/modules/auth/session/session-store.d.ts +21 -0
  292. package/lib/typescript/commonjs/src/modules/auth/session/session-store.d.ts.map +1 -0
  293. package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
  294. package/lib/typescript/commonjs/src/modules/auth/sign-in/components/social-logins/apple-login-button.d.ts.map +1 -1
  295. package/lib/typescript/commonjs/src/modules/auth/sign-in/components/social-logins/google-login-button.d.ts.map +1 -1
  296. package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts +1 -1
  297. package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
  298. package/lib/typescript/commonjs/src/modules/bt-device/components/device-list-provider.d.ts.map +1 -1
  299. package/lib/typescript/commonjs/src/modules/bt-device/components/hooks/use-device-list.d.ts +1 -5
  300. package/lib/typescript/commonjs/src/modules/bt-device/components/hooks/use-device-list.d.ts.map +1 -1
  301. package/lib/typescript/commonjs/src/modules/bt-device/contexts/device-list-context.d.ts +3 -2
  302. package/lib/typescript/commonjs/src/modules/bt-device/contexts/device-list-context.d.ts.map +1 -1
  303. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +1 -1
  304. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  305. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts +1 -1
  306. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  307. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +40 -9
  308. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  309. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts +17 -0
  311. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts +31 -0
  314. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -0
  315. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts +2 -2
  316. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts +2 -15
  318. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -1
  319. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
  320. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -1
  321. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
  322. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-request-permissions.d.ts +1 -0
  323. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
  324. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-scan-control.d.ts.map +1 -1
  325. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +6 -1
  326. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts +2 -0
  328. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  329. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-content.d.ts +9 -0
  330. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-content.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-locale.d.ts +7 -0
  332. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-locale.d.ts.map +1 -0
  333. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-translations.d.ts +10 -0
  334. package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-translations.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/src/modules/cms/index.d.ts +4 -0
  336. package/lib/typescript/commonjs/src/modules/cms/index.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/src/modules/cms/merge-cms-translations.d.ts +13 -0
  338. package/lib/typescript/commonjs/src/modules/cms/merge-cms-translations.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  340. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  342. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +4 -0
  343. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -0
  344. package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +1 -1
  345. package/lib/typescript/commonjs/src/modules/data-sync/contexts/health-authorization-context.d.ts +17 -0
  346. package/lib/typescript/commonjs/src/modules/data-sync/contexts/health-authorization-context.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-health-import.d.ts +17 -0
  348. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-health-import.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +3 -0
  350. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
  351. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +1 -0
  352. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  353. package/lib/typescript/commonjs/src/modules/helpers/hooks/use-shallow-stable-value.d.ts +2 -0
  354. package/lib/typescript/commonjs/src/modules/helpers/hooks/use-shallow-stable-value.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/src/modules/language-switcher/components/language-switcher.d.ts +6 -5
  356. package/lib/typescript/commonjs/src/modules/language-switcher/components/language-switcher.d.ts.map +1 -1
  357. package/lib/typescript/commonjs/src/modules/language-switcher/components/option/context/language-option-context.d.ts +1 -1
  358. package/lib/typescript/commonjs/src/modules/language-switcher/components/option/context/language-option-context.d.ts.map +1 -1
  359. package/lib/typescript/commonjs/src/modules/socket/components/socket-provider.d.ts.map +1 -1
  360. package/lib/typescript/commonjs/src/modules/tab/components/tab-provider.d.ts +2 -1
  361. package/lib/typescript/commonjs/src/modules/tab/components/tab-provider.d.ts.map +1 -1
  362. package/lib/typescript/commonjs/src/modules/tab/contexts/tab-context.d.ts +1 -1
  363. package/lib/typescript/commonjs/src/modules/tab/contexts/tab-context.d.ts.map +1 -1
  364. package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts +1 -2
  365. package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts.map +1 -1
  366. package/lib/typescript/commonjs/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
  367. package/lib/typescript/module/src/index.d.ts +1 -0
  368. package/lib/typescript/module/src/index.d.ts.map +1 -1
  369. package/lib/typescript/module/src/modules/auth/default-translation.d.ts +53 -1
  370. package/lib/typescript/module/src/modules/auth/default-translation.d.ts.map +1 -1
  371. package/lib/typescript/module/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
  372. package/lib/typescript/module/src/modules/auth/hooks/use-auth-action.d.ts +13 -0
  373. package/lib/typescript/module/src/modules/auth/hooks/use-auth-action.d.ts.map +1 -0
  374. package/lib/typescript/module/src/modules/auth/hooks/use-delete-account.d.ts +8 -0
  375. package/lib/typescript/module/src/modules/auth/hooks/use-delete-account.d.ts.map +1 -0
  376. package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts +6 -4
  377. package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts.map +1 -1
  378. package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts +24 -0
  379. package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts.map +1 -0
  380. package/lib/typescript/module/src/modules/auth/hooks/use-sign-out.d.ts +4 -0
  381. package/lib/typescript/module/src/modules/auth/hooks/use-sign-out.d.ts.map +1 -0
  382. package/lib/typescript/module/src/modules/auth/hooks/use-social-sign-in.d.ts +14 -0
  383. package/lib/typescript/module/src/modules/auth/hooks/use-social-sign-in.d.ts.map +1 -0
  384. package/lib/typescript/module/src/modules/auth/index.d.ts +5 -0
  385. package/lib/typescript/module/src/modules/auth/index.d.ts.map +1 -1
  386. package/lib/typescript/module/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
  387. package/lib/typescript/module/src/modules/auth/profile/components/profile-form-provider.d.ts.map +1 -1
  388. package/lib/typescript/module/src/modules/auth/profile/contexts/profile-form-context.d.ts +1 -1
  389. package/lib/typescript/module/src/modules/auth/profile/contexts/profile-form-context.d.ts.map +1 -1
  390. package/lib/typescript/module/src/modules/auth/profile/hooks/use-profile-form.d.ts.map +1 -1
  391. package/lib/typescript/module/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
  392. package/lib/typescript/module/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
  393. package/lib/typescript/module/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
  394. package/lib/typescript/module/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts +1 -1
  395. package/lib/typescript/module/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts.map +1 -1
  396. package/lib/typescript/module/src/modules/auth/session/logout-session.d.ts +6 -0
  397. package/lib/typescript/module/src/modules/auth/session/logout-session.d.ts.map +1 -0
  398. package/lib/typescript/module/src/modules/auth/session/session-store.d.ts +21 -0
  399. package/lib/typescript/module/src/modules/auth/session/session-store.d.ts.map +1 -0
  400. package/lib/typescript/module/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
  401. package/lib/typescript/module/src/modules/auth/sign-in/components/social-logins/apple-login-button.d.ts.map +1 -1
  402. package/lib/typescript/module/src/modules/auth/sign-in/components/social-logins/google-login-button.d.ts.map +1 -1
  403. package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts +1 -1
  404. package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
  405. package/lib/typescript/module/src/modules/bt-device/components/device-list-provider.d.ts.map +1 -1
  406. package/lib/typescript/module/src/modules/bt-device/components/hooks/use-device-list.d.ts +1 -5
  407. package/lib/typescript/module/src/modules/bt-device/components/hooks/use-device-list.d.ts.map +1 -1
  408. package/lib/typescript/module/src/modules/bt-device/contexts/device-list-context.d.ts +3 -2
  409. package/lib/typescript/module/src/modules/bt-device/contexts/device-list-context.d.ts.map +1 -1
  410. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +1 -1
  411. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  412. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts +1 -1
  413. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  414. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +40 -9
  415. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  416. package/lib/typescript/module/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -1
  417. package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts +17 -0
  418. package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -0
  419. package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -1
  420. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts +31 -0
  421. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -0
  422. package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts +2 -2
  423. package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -1
  424. package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts +2 -15
  425. package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -1
  426. package/lib/typescript/module/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
  427. package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -1
  428. package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
  429. package/lib/typescript/module/src/modules/bt-management/hooks/use-request-permissions.d.ts +1 -0
  430. package/lib/typescript/module/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
  431. package/lib/typescript/module/src/modules/bt-management/hooks/use-scan-control.d.ts.map +1 -1
  432. package/lib/typescript/module/src/modules/bt-management/index.d.ts +6 -1
  433. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  434. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts +2 -0
  435. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  436. package/lib/typescript/module/src/modules/cms/hooks/use-cms-content.d.ts +9 -0
  437. package/lib/typescript/module/src/modules/cms/hooks/use-cms-content.d.ts.map +1 -0
  438. package/lib/typescript/module/src/modules/cms/hooks/use-cms-locale.d.ts +7 -0
  439. package/lib/typescript/module/src/modules/cms/hooks/use-cms-locale.d.ts.map +1 -0
  440. package/lib/typescript/module/src/modules/cms/hooks/use-cms-translations.d.ts +10 -0
  441. package/lib/typescript/module/src/modules/cms/hooks/use-cms-translations.d.ts.map +1 -0
  442. package/lib/typescript/module/src/modules/cms/index.d.ts +4 -0
  443. package/lib/typescript/module/src/modules/cms/index.d.ts.map +1 -0
  444. package/lib/typescript/module/src/modules/cms/merge-cms-translations.d.ts +13 -0
  445. package/lib/typescript/module/src/modules/cms/merge-cms-translations.d.ts.map +1 -0
  446. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  447. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  448. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  449. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +4 -0
  450. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -0
  451. package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +1 -1
  452. package/lib/typescript/module/src/modules/data-sync/contexts/health-authorization-context.d.ts +17 -0
  453. package/lib/typescript/module/src/modules/data-sync/contexts/health-authorization-context.d.ts.map +1 -0
  454. package/lib/typescript/module/src/modules/data-sync/hooks/use-health-import.d.ts +17 -0
  455. package/lib/typescript/module/src/modules/data-sync/hooks/use-health-import.d.ts.map +1 -0
  456. package/lib/typescript/module/src/modules/data-sync/index.d.ts +3 -0
  457. package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
  458. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +1 -0
  459. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  460. package/lib/typescript/module/src/modules/helpers/hooks/use-shallow-stable-value.d.ts +2 -0
  461. package/lib/typescript/module/src/modules/helpers/hooks/use-shallow-stable-value.d.ts.map +1 -0
  462. package/lib/typescript/module/src/modules/language-switcher/components/language-switcher.d.ts +6 -5
  463. package/lib/typescript/module/src/modules/language-switcher/components/language-switcher.d.ts.map +1 -1
  464. package/lib/typescript/module/src/modules/language-switcher/components/option/context/language-option-context.d.ts +1 -1
  465. package/lib/typescript/module/src/modules/language-switcher/components/option/context/language-option-context.d.ts.map +1 -1
  466. package/lib/typescript/module/src/modules/socket/components/socket-provider.d.ts.map +1 -1
  467. package/lib/typescript/module/src/modules/tab/components/tab-provider.d.ts +2 -1
  468. package/lib/typescript/module/src/modules/tab/components/tab-provider.d.ts.map +1 -1
  469. package/lib/typescript/module/src/modules/tab/contexts/tab-context.d.ts +1 -1
  470. package/lib/typescript/module/src/modules/tab/contexts/tab-context.d.ts.map +1 -1
  471. package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts +1 -2
  472. package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts.map +1 -1
  473. package/lib/typescript/module/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
  474. package/package.json +3 -3
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useBTDevice = exports.DeviceSelectionRequiredError = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _runtimeContext = require("./runtime-context.js");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ class DeviceSelectionRequiredError extends Error {
11
+ constructor(model, ids) {
12
+ super(`Choose a device ID for ${model}; found ${ids.join(", ")}.`);
13
+ this.name = "DeviceSelectionRequiredError";
14
+ }
15
+ }
16
+ exports.DeviceSelectionRequiredError = DeviceSelectionRequiredError;
17
+ const EMPTY_RESULTS = [];
18
+ const EMPTY_EVENTS = [];
19
+ const deviceQueues = new WeakMap();
20
+ const serializeForDevice = (runtime, deviceId, operation) => {
21
+ let queues = deviceQueues.get(runtime);
22
+ if (!queues) {
23
+ queues = new Map();
24
+ deviceQueues.set(runtime, queues);
25
+ }
26
+ const previous = queues.get(deviceId) ?? Promise.resolve();
27
+ const current = previous.catch(() => undefined).then(operation);
28
+ queues.set(deviceId, current);
29
+ void current.finally(() => {
30
+ if (queues?.get(deviceId) === current) {
31
+ queues.delete(deviceId);
32
+ }
33
+ }).catch(() => undefined);
34
+ return current;
35
+ };
36
+ const getRawDevice = device => device.device.device;
37
+ const useBTDevice = (model, {
38
+ id,
39
+ autoConnect = false,
40
+ allowRawAccess = false
41
+ } = {}) => {
42
+ const runtime = (0, _runtimeContext.useBluetoothRuntime)();
43
+ const [selectedId, setSelectedId] = React.useState(id);
44
+ const matches = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices.filter(device => device.deviceData.name === model || device.deviceData.model === model), (previous, next) => previous.length === next.length && previous.every((item, index) => {
45
+ const candidate = next[index];
46
+ return candidate?.id === item.id && candidate === item;
47
+ }));
48
+ const selected = selectedId ? matches.find(device => device.id === selectedId) : matches.length === 1 ? matches[0] : undefined;
49
+ const selectedIdRef = React.useRef(selectedId);
50
+ const matchesRef = React.useRef(matches);
51
+ const modelRef = React.useRef(model);
52
+ const autoConnectedRef = React.useRef(new Set());
53
+ selectedIdRef.current = selectedId;
54
+ matchesRef.current = matches;
55
+ modelRef.current = model;
56
+ React.useEffect(() => {
57
+ if (id !== undefined) {
58
+ setSelectedId(id);
59
+ }
60
+ }, [id]);
61
+ React.useEffect(() => {
62
+ if (!autoConnect || !selected) {
63
+ return;
64
+ }
65
+ if (autoConnectedRef.current.has(selected.id)) {
66
+ return;
67
+ }
68
+ autoConnectedRef.current.add(selected.id);
69
+ void selected.device.connect().catch(() => {
70
+ autoConnectedRef.current.delete(selected.id);
71
+ });
72
+ }, [autoConnect, selected]);
73
+ const select = React.useCallback(deviceId => {
74
+ if (!matchesRef.current.some(device => device.id === deviceId)) {
75
+ return false;
76
+ }
77
+ setSelectedId(deviceId);
78
+ return true;
79
+ }, []);
80
+ const connect = React.useCallback(async () => {
81
+ const currentMatches = matchesRef.current;
82
+ const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
83
+ if (!device) {
84
+ throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
85
+ }
86
+ await device.device.connect();
87
+ }, []);
88
+ const disconnect = React.useCallback(async () => {
89
+ const currentMatches = matchesRef.current;
90
+ const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
91
+ if (!device) {
92
+ throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
93
+ }
94
+ await device.device.disconnect();
95
+ }, []);
96
+ const raw = React.useMemo(() => {
97
+ if (!allowRawAccess) {
98
+ return undefined;
99
+ }
100
+ const resolveDevice = () => {
101
+ const currentMatches = matchesRef.current;
102
+ const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
103
+ if (!device) {
104
+ throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
105
+ }
106
+ const rawDevice = getRawDevice(device);
107
+ if (!rawDevice) {
108
+ throw new Error("Raw Bluetooth access is unavailable for this device.");
109
+ }
110
+ return {
111
+ device,
112
+ rawDevice
113
+ };
114
+ };
115
+ return {
116
+ read: (serviceUUID, characteristicUUID) => {
117
+ const {
118
+ device,
119
+ rawDevice
120
+ } = resolveDevice();
121
+ return serializeForDevice(runtime, device.id, () => rawDevice.readCharacteristicForService(serviceUUID, characteristicUUID));
122
+ },
123
+ write: (serviceUUID, characteristicUUID, base64Value, withResponse = true) => {
124
+ const {
125
+ device,
126
+ rawDevice
127
+ } = resolveDevice();
128
+ return serializeForDevice(runtime, device.id, () => withResponse ? rawDevice.writeCharacteristicWithResponseForService(serviceUUID, characteristicUUID, base64Value) : rawDevice.writeCharacteristicWithoutResponseForService(serviceUUID, characteristicUUID, base64Value));
129
+ }
130
+ };
131
+ }, [allowRawAccess, runtime]);
132
+ return {
133
+ model,
134
+ devices: matches,
135
+ device: selected,
136
+ requiresSelection: matches.length > 1 && selected === undefined,
137
+ status: selected?.status,
138
+ latestResult: selected?.latestResult,
139
+ results: selected?.results ?? EMPTY_RESULTS,
140
+ events: selected?.events ?? EMPTY_EVENTS,
141
+ select,
142
+ connect,
143
+ disconnect,
144
+ raw
145
+ };
146
+ };
147
+ exports.useBTDevice = useBTDevice;
148
+ //# sourceMappingURL=use-bt-device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DeviceSelectionRequiredError","Error","constructor","model","ids","join","name","exports","EMPTY_RESULTS","EMPTY_EVENTS","deviceQueues","serializeForDevice","runtime","deviceId","operation","queues","Map","previous","Promise","resolve","current","catch","undefined","then","finally","delete","getRawDevice","device","useBTDevice","id","autoConnect","allowRawAccess","useBluetoothRuntime","selectedId","setSelectedId","useState","matches","useBluetoothSelector","snapshot","devices","filter","deviceData","next","length","every","item","index","candidate","selected","find","selectedIdRef","useRef","matchesRef","modelRef","autoConnectedRef","Set","useEffect","add","connect","select","useCallback","some","currentMatches","map","disconnect","raw","useMemo","resolveDevice","rawDevice","read","serviceUUID","characteristicUUID","readCharacteristicForService","write","base64Value","withResponse","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","requiresSelection","status","latestResult","results","events"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-bt-device.ts"],"mappings":"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","ignoreList":[]}
@@ -4,36 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useDeviceConnection = void 0;
7
- var React = _interopRequireWildcard(require("react"));
8
7
  var _runtimeContext = require("./runtime-context.js");
9
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
8
+ const EMPTY_EVENTS = [];
10
9
  const useDeviceConnection = id => {
11
- const runtime = (0, _runtimeContext.useBluetoothRuntime)();
12
- const [status, setStatus] = React.useState(() => runtime.devices.find(device => device.id === id)?.status);
13
- const [events, setEvents] = React.useState([]);
14
- React.useEffect(() => {
15
- setStatus(runtime.devices.find(device => device.id === id)?.status);
16
- setEvents([]);
17
- }, [id, runtime]);
18
- React.useEffect(() => {
19
- const unsubStatus = runtime.subscribe("status", value => {
20
- if (value.deviceData.id === id) {
21
- setStatus(value.status);
22
- }
23
- });
24
- const unsubEvent = runtime.subscribe("connection", event => {
25
- if (event.deviceData.id === id) {
26
- setEvents(current => [...current, event].slice(-100));
27
- }
28
- });
29
- return () => {
30
- unsubStatus();
31
- unsubEvent();
10
+ const connection = (0, _runtimeContext.useBluetoothSelector)(snapshot => {
11
+ const device = id ? snapshot.devices.find(candidate => candidate.id === id) : undefined;
12
+ const events = device?.events;
13
+ return {
14
+ status: device?.status,
15
+ events: events?.length ? events : EMPTY_EVENTS
32
16
  };
33
- }, [id, runtime]);
17
+ }, (previous, next) => previous.status === next.status && previous.events === next.events);
34
18
  return {
35
- status,
36
- events
19
+ status: connection.status,
20
+ events: connection.events
37
21
  };
38
22
  };
39
23
  exports.useDeviceConnection = useDeviceConnection;
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useDeviceConnection","id","runtime","useBluetoothRuntime","status","setStatus","useState","devices","find","device","events","setEvents","useEffect","unsubStatus","subscribe","value","deviceData","unsubEvent","event","current","slice","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-device-connection.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAKA,IAAAC,eAAA,GAAAD,OAAA;AAAwD,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,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;AAEjD,MAAMkB,mBAAmB,GAC9BC,EAAW,IAC6D;EACxE,MAAMC,OAAO,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EAErC,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG5B,KAAK,CAAC6B,QAAQ,CACxC,MAAMJ,OAAO,CAACK,OAAO,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACR,EAAE,KAAKA,EAAE,CAAC,EAAEG,MAC5D,CAAC;EAED,MAAM,CAACM,MAAM,EAAEC,SAAS,CAAC,GAAGlC,KAAK,CAAC6B,QAAQ,CAAmC,EAAE,CAAC;EAEhF7B,KAAK,CAACmC,SAAS,CAAC,MAAM;IACpBP,SAAS,CAACH,OAAO,CAACK,OAAO,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACR,EAAE,KAAKA,EAAE,CAAC,EAAEG,MAAM,CAAC;IACrEO,SAAS,CAAC,EAAE,CAAC;EACf,CAAC,EAAE,CAACV,EAAE,EAAEC,OAAO,CAAC,CAAC;EAEjBzB,KAAK,CAACmC,SAAS,CAAC,MAAM;IACpB,MAAMC,WAAW,GAAGX,OAAO,CAACY,SAAS,CACnC,QAAQ,EACPC,KAAK,IAAK;MACT,IAAIA,KAAK,CAACC,UAAU,CAACf,EAAE,KAAKA,EAAE,EAAE;QAACI,SAAS,CAACU,KAAK,CAACX,MAAM,CAAC;MAAC;IAC3D,CACF,CAAC;IAED,MAAMa,UAAU,GAAGf,OAAO,CAACY,SAAS,CAAwB,YAAY,EAAGI,KAAK,IAAK;MACnF,IAAIA,KAAK,CAACF,UAAU,CAACf,EAAE,KAAKA,EAAE,EAAE;QAC9BU,SAAS,CAAEQ,OAAO,IAAK,CAAC,GAAGA,OAAO,EAAED,KAAK,CAAC,CAACE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;MACzD;IACF,CAAC,CAAC;IAEF,OAAO,MAAM;MACXP,WAAW,CAAC,CAAC;MACbI,UAAU,CAAC,CAAC;IACd,CAAC;EACH,CAAC,EAAE,CAAChB,EAAE,EAAEC,OAAO,CAAC,CAAC;EAEjB,OAAO;IAAEE,MAAM;IAAEM;EAAO,CAAC;AAC3B,CAAC;AAACW,OAAA,CAAArB,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_runtimeContext","require","EMPTY_EVENTS","useDeviceConnection","id","connection","useBluetoothSelector","snapshot","device","devices","find","candidate","undefined","events","status","length","previous","next","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-device-connection.ts"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAKA,MAAMC,YAA+C,GAAG,EAAE;AAEnD,MAAMC,mBAAmB,GAC9BC,EAAW,IAC8D;EACzE,MAAMC,UAAU,GAAG,IAAAC,oCAAoB,EACpCC,QAAQ,IAAK;IACZ,MAAMC,MAAM,GAAGJ,EAAE,GACbG,QAAQ,CAACE,OAAO,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACP,EAAE,KAAKA,EAAE,CAAC,GACzDQ,SAAS;IAEb,MAAMC,MAAM,GAAGL,MAAM,EAAEK,MAAM;IAE7B,OAAO;MACLC,MAAM,EAAEN,MAAM,EAAEM,MAAM;MACtBD,MAAM,EAAEA,MAAM,EAAEE,MAAM,GAAGF,MAAM,GAAGX;IACpC,CAAC;EACH,CAAC,EACD,CAACc,QAAQ,EAAEC,IAAI,KACbD,QAAQ,CAACF,MAAM,KAAKG,IAAI,CAACH,MAAM,IAAIE,QAAQ,CAACH,MAAM,KAAKI,IAAI,CAACJ,MAChE,CAAC;EAED,OAAO;IACLC,MAAM,EAAET,UAAU,CAACS,MAAM;IACzBD,MAAM,EAAER,UAAU,CAACQ;EACrB,CAAC;AACH,CAAC;AAACK,OAAA,CAAAf,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -3,80 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useHealthImport = void 0;
7
- var React = _interopRequireWildcard(require("react"));
8
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9
- const useHealthImport = ({
10
- types,
11
- background = false,
12
- adapter
13
- }) => {
14
- const [enabled, setEnabled] = React.useState(false);
15
- const [statusByType, setStatusByType] = React.useState({});
16
- const [error, setError] = React.useState();
17
- const typesKey = React.useMemo(() => types.join("\u0000"), [types]);
18
- const configRef = React.useRef({
19
- adapter,
20
- types,
21
- background
22
- });
23
- configRef.current = {
24
- adapter,
25
- types,
26
- background
27
- };
28
- const refresh = React.useCallback(async () => {
29
- void typesKey;
30
- const {
31
- adapter: currentAdapter,
32
- types: currentTypes
33
- } = configRef.current;
34
- const entries = await Promise.allSettled(currentTypes.map(async type => [type, await currentAdapter.getStatus(type)]));
35
- const rejected = entries.find(entry => entry.status === "rejected");
36
- setStatusByType(current => {
37
- const next = {
38
- ...current
39
- };
40
- entries.forEach(entry => {
41
- if (entry.status === "fulfilled") {
42
- next[entry.value[0]] = entry.value[1];
43
- }
44
- });
45
- return next;
46
- });
47
- setEnabled(currentTypes.length > 0 && entries.every(entry => entry.status === "fulfilled" && entry.value[1] === "authorized"));
48
- setError(rejected ? rejected.reason instanceof Error ? rejected.reason : new Error(String(rejected.reason)) : undefined);
49
- }, [typesKey]);
50
- React.useEffect(() => {
51
- void refresh();
52
- }, [refresh]);
53
- const setEnabledForTypes = React.useCallback(async next => {
54
- const {
55
- adapter: currentAdapter,
56
- types: currentTypes,
57
- background: currentBackground
58
- } = configRef.current;
59
- setError(undefined);
60
- try {
61
- if (next) {
62
- await currentAdapter.request(currentTypes, currentBackground);
63
- await refresh();
64
- }
65
- setEnabled(next);
66
- } catch (cause) {
67
- const nextError = cause instanceof Error ? cause : new Error(String(cause));
68
- setError(nextError);
69
- throw nextError;
70
- }
71
- }, [refresh]);
72
- const notShared = types.filter(type => statusByType[type] === "refused");
73
- return {
74
- enabled,
75
- setEnabled: setEnabledForTypes,
76
- statusByType: statusByType,
77
- notShared,
78
- error
79
- };
80
- };
81
- exports.useHealthImport = useHealthImport;
6
+ Object.defineProperty(exports, "useHealthImport", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useHealthImport.useHealthImport;
10
+ }
11
+ });
12
+ var _useHealthImport = require("../../data-sync/hooks/use-health-import.js");
82
13
  //# sourceMappingURL=use-health-import.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useHealthImport","types","background","adapter","enabled","setEnabled","useState","statusByType","setStatusByType","error","setError","typesKey","useMemo","join","configRef","useRef","current","refresh","useCallback","currentAdapter","currentTypes","entries","Promise","allSettled","map","type","getStatus","rejected","find","entry","status","next","forEach","value","length","every","reason","Error","String","undefined","useEffect","setEnabledForTypes","currentBackground","request","cause","nextError","notShared","filter","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-health-import.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_useHealthImport","require"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-health-import.ts"],"mappings":";;;;;;;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -7,72 +7,58 @@ exports.useMeasurements = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _runtimeContext = require("./runtime-context.js");
9
9
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ const sameResults = (previous, next) => previous.length === next.length && previous.every((result, index) => result === next[index]);
11
+ const getMeasurementType = result => String(result.data.measurementTypeKey);
12
+ const applyResultPolicy = (results, policy, getConnectionId) => {
13
+ if (policy === "all") {
14
+ return [...results];
15
+ }
16
+ const seen = new Set();
17
+ return results.filter(result => {
18
+ const type = getMeasurementType(result);
19
+ const connectionId = getConnectionId(result);
20
+ if (policy === "first-reading-per-kind-per-connection") {
21
+ const key = `${result.deviceData.id}:${connectionId}:${type}`;
22
+ if (seen.has(key)) {
23
+ return false;
24
+ }
25
+ seen.add(key);
26
+ return true;
27
+ }
28
+ const temporal = result.data;
29
+ const end = temporal.end instanceof Date ? temporal.end : undefined;
30
+ if (end && end.getTime() > Date.now()) {
31
+ return false;
32
+ }
33
+ const day = temporal.end ?? temporal.start ?? temporal.recordedAt;
34
+ if (!(day instanceof Date)) {
35
+ return true;
36
+ }
37
+ const key = `${result.deviceData.id}:${connectionId}:${type}:${day.toISOString().slice(0, 10)}`;
38
+ if (seen.has(key)) {
39
+ return false;
40
+ }
41
+ seen.add(key);
42
+ return true;
43
+ });
44
+ };
10
45
  const useMeasurements = (onResult, {
11
46
  policy = "all",
12
47
  maxResults = 100
13
48
  } = {}) => {
14
49
  const runtime = (0, _runtimeContext.useBluetoothRuntime)();
15
- const [measurements, setMeasurements] = React.useState([]);
16
- const seen = React.useRef(new Set());
17
- const seenMeasurementKinds = React.useRef(new Set());
18
- const seenDailyTotals = React.useRef(new Set());
50
+ const results = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices.flatMap(device => device.results ?? []), sameResults);
19
51
  const onResultRef = React.useRef(onResult);
20
52
  onResultRef.current = onResult;
21
- const acceptsResult = React.useCallback(result => {
22
- const measurementTypeKey = String(result.data.measurementTypeKey);
23
- if (policy === "first-reading-per-kind-per-connection") {
24
- if (seenMeasurementKinds.current.has(measurementTypeKey)) {
25
- return false;
26
- }
27
- seenMeasurementKinds.current.add(measurementTypeKey);
28
- }
29
- if (policy === "daily-totals-only") {
30
- const temporal = result.data;
31
- const end = temporal.end instanceof Date ? temporal.end : undefined;
32
- if (end && end.getTime() > Date.now()) {
33
- return false;
34
- }
35
- const day = temporal.end ?? temporal.start ?? temporal.recordedAt;
36
- if (day instanceof Date) {
37
- const key = `${measurementTypeKey}:${day.toISOString().slice(0, 10)}`;
38
- if (seenDailyTotals.current.has(key)) {
39
- return false;
40
- }
41
- seenDailyTotals.current.add(key);
42
- }
43
- }
44
- return true;
45
- }, [policy]);
46
- React.useEffect(() => {
47
- return runtime.subscribe("result", result => {
48
- if (!acceptsResult(result)) {
49
- return;
50
- }
51
- if (seen.current.has(result.id)) {
52
- return;
53
- }
54
- seen.current.add(result.id);
55
- setMeasurements(current => [...current, result].slice(-maxResults));
56
- onResultRef.current?.(result);
57
- });
58
- }, [acceptsResult, maxResults, runtime]);
59
- React.useEffect(() => {
60
- const unsubscribe = runtime.subscribe("connection", event => {
61
- if (event.kind === "connected" || event.kind === "bonded") {
62
- seenMeasurementKinds.current.clear();
63
- seenDailyTotals.current.clear();
64
- }
65
- });
66
- return unsubscribe;
67
- }, [runtime]);
53
+ const measurements = React.useMemo(() => {
54
+ const accepted = applyResultPolicy(results, policy, runtime.getResultConnectionId);
55
+ return maxResults > 0 ? accepted.slice(-maxResults) : [];
56
+ }, [maxResults, policy, results, runtime]);
57
+ React.useEffect(() => runtime.subscribe("result", result => onResultRef.current?.(result)), [runtime]);
58
+ const clear = React.useCallback(() => runtime.clearResults(), [runtime]);
68
59
  return {
69
60
  measurements,
70
- clear: () => {
71
- seen.current.clear();
72
- seenMeasurementKinds.current.clear();
73
- seenDailyTotals.current.clear();
74
- setMeasurements([]);
75
- }
61
+ clear
76
62
  };
77
63
  };
78
64
  exports.useMeasurements = useMeasurements;
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useMeasurements","onResult","policy","maxResults","runtime","useBluetoothRuntime","measurements","setMeasurements","useState","seen","useRef","Set","seenMeasurementKinds","seenDailyTotals","onResultRef","current","acceptsResult","useCallback","result","measurementTypeKey","String","data","add","temporal","end","Date","undefined","getTime","now","day","start","recordedAt","key","toISOString","slice","useEffect","subscribe","id","unsubscribe","event","kind","clear","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-measurements.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","sameResults","previous","next","length","every","result","index","getMeasurementType","String","data","measurementTypeKey","applyResultPolicy","results","policy","getConnectionId","seen","Set","filter","type","connectionId","key","deviceData","id","add","temporal","end","Date","undefined","getTime","now","day","start","recordedAt","toISOString","slice","useMeasurements","onResult","maxResults","runtime","useBluetoothRuntime","useBluetoothSelector","snapshot","devices","flatMap","device","onResultRef","useRef","current","measurements","useMemo","accepted","getResultConnectionId","useEffect","subscribe","clear","useCallback","clearResults","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-measurements.ts"],"mappings":"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","ignoreList":[]}
@@ -9,24 +9,20 @@ var _runtimeContext = require("./runtime-context.js");
9
9
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
10
  const useNearbyDevices = () => {
11
11
  const runtime = (0, _runtimeContext.useBluetoothRuntime)();
12
- const [, redraw] = React.useReducer(value => value + 1, 0);
13
- React.useEffect(() => {
14
- const unsubscribeFound = runtime.subscribe("deviceFound", redraw);
15
- const unsubscribeStatus = runtime.subscribe("status", redraw);
16
- return () => {
17
- unsubscribeFound();
18
- unsubscribeStatus();
19
- };
12
+ const devices = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices, (previous, next) => previous.length === next.length && previous.every((item, index) => {
13
+ const candidate = next[index];
14
+ return candidate?.id === item.id && candidate.deviceData === item.deviceData && candidate.status === item.status && candidate.device === item.device;
15
+ }));
16
+ const pair = React.useCallback(async id => {
17
+ const device = runtime.devices.find(item => item.id === id);
18
+ if (device) {
19
+ await device.device.connect();
20
+ }
21
+ return device;
20
22
  }, [runtime]);
21
23
  return {
22
- devices: runtime.devices,
23
- pair: async id => {
24
- const device = runtime.devices.find(item => item.id === id);
25
- if (device) {
26
- await device.device.connect();
27
- }
28
- return device;
29
- }
24
+ devices,
25
+ pair
30
26
  };
31
27
  };
32
28
  exports.useNearbyDevices = useNearbyDevices;
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useNearbyDevices","runtime","useBluetoothRuntime","redraw","useReducer","value","useEffect","unsubscribeFound","subscribe","unsubscribeStatus","devices","pair","id","device","find","item","connect","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-nearby-devices.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAD,OAAA;AAAuE,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,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;AAEhE,MAAMkB,gBAAgB,GAAGA,CAAA,KAG3B;EACH,MAAMC,OAAO,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EACrC,MAAM,GAAGC,MAAM,CAAC,GAAG1B,KAAK,CAAC2B,UAAU,CAAEC,KAAK,IAAKA,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;EAE5D5B,KAAK,CAAC6B,SAAS,CAAC,MAAM;IACpB,MAAMC,gBAAgB,GAAGN,OAAO,CAACO,SAAS,CAAC,aAAa,EAAEL,MAAM,CAAC;IACjE,MAAMM,iBAAiB,GAAGR,OAAO,CAACO,SAAS,CAAC,QAAQ,EAAEL,MAAM,CAAC;IAE7D,OAAO,MAAM;MACXI,gBAAgB,CAAC,CAAC;MAClBE,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACR,OAAO,CAAC,CAAC;EAEb,OAAO;IACLS,OAAO,EAAET,OAAO,CAACS,OAAO;IACxBC,IAAI,EAAE,MAAOC,EAAE,IAAK;MAClB,MAAMC,MAAM,GAAGZ,OAAO,CAACS,OAAO,CAACI,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACH,EAAE,KAAKA,EAAE,CAAC;MAE7D,IAAIC,MAAM,EAAE;QAAC,MAAMA,MAAM,CAACA,MAAM,CAACG,OAAO,CAAC,CAAC;MAAC;MAE3C,OAAOH,MAAM;IACf;EACF,CAAC;AACH,CAAC;AAACI,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useNearbyDevices","runtime","useBluetoothRuntime","devices","useBluetoothSelector","snapshot","previous","next","length","every","item","index","candidate","id","deviceData","status","device","pair","useCallback","find","connect","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-nearby-devices.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAD,OAAA;AAI2B,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,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;AAEpB,MAAMkB,gBAAgB,GAAGA,CAAA,KAG3B;EACH,MAAMC,OAAO,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EAErC,MAAMC,OAAO,GAAG,IAAAC,oCAAoB,EACjCC,QAAQ,IAAKA,QAAQ,CAACF,OAAO,EAC9B,CAACG,QAAQ,EAAEC,IAAI,KAAKD,QAAQ,CAACE,MAAM,KAAKD,IAAI,CAACC,MAAM,IAAIF,QAAQ,CAACG,KAAK,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;IACrF,MAAMC,SAAS,GAAGL,IAAI,CAACI,KAAK,CAAC;IAE7B,OAAOC,SAAS,EAAEC,EAAE,KAAKH,IAAI,CAACG,EAAE,IAC9BD,SAAS,CAACE,UAAU,KAAKJ,IAAI,CAACI,UAAU,IACxCF,SAAS,CAACG,MAAM,KAAKL,IAAI,CAACK,MAAM,IAChCH,SAAS,CAACI,MAAM,KAAKN,IAAI,CAACM,MAAM;EACpC,CAAC,CACH,CAAC;EAED,MAAMC,IAAI,GAAGxC,KAAK,CAACyC,WAAW,CAAC,MAAOL,EAAU,IAAK;IACnD,MAAMG,MAAM,GAAGf,OAAO,CAACE,OAAO,CAACgB,IAAI,CAAET,IAAI,IAAKA,IAAI,CAACG,EAAE,KAAKA,EAAE,CAAC;IAE7D,IAAIG,MAAM,EAAE;MACV,MAAMA,MAAM,CAACA,MAAM,CAACI,OAAO,CAAC,CAAC;IAC/B;IAEA,OAAOJ,MAAM;EACf,CAAC,EAAE,CAACf,OAAO,CAAC,CAAC;EAEb,OAAO;IACLE,OAAO;IACPc;EACF,CAAC;AACH,CAAC;AAACI,OAAA,CAAArB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -17,12 +17,17 @@ const usePairedDevices = ({
17
17
  const runtime = (0, _runtimeContext.useBluetoothRuntime)();
18
18
  const [paired, setPaired] = React.useState(() => runtime.getPairedDeviceIds(storageKey) ?? []);
19
19
  const pairedRef = React.useRef(paired);
20
+ const autoConnectedRef = React.useRef(new Set());
21
+ const storageRef = React.useRef(storage);
22
+ const autoPairRef = React.useRef(autoPair);
23
+ storageRef.current = storage;
24
+ autoPairRef.current = autoPair;
20
25
  const save = React.useCallback(async next => {
21
26
  pairedRef.current = next;
22
27
  setPaired(next);
23
28
  runtime.setPairedDeviceIds(storageKey, next);
24
- await storage.setItem(storageKey, JSON.stringify(next));
25
- }, [runtime, storage, storageKey]);
29
+ await storageRef.current.setItem(storageKey, JSON.stringify(next));
30
+ }, [runtime, storageKey]);
26
31
  React.useEffect(() => runtime.subscribe("pairedDevices", event => {
27
32
  if (event.storageKey !== storageKey) {
28
33
  return;
@@ -45,22 +50,36 @@ const usePairedDevices = ({
45
50
  setPaired(next);
46
51
  });
47
52
  }, [runtime, storage, storageKey]);
53
+ const connectIfPaired = React.useCallback(device => {
54
+ if (!autoPairRef.current || !pairedRef.current.includes(device.id) || autoConnectedRef.current.has(device.id)) {
55
+ return;
56
+ }
57
+ autoConnectedRef.current.add(device.id);
58
+ void device.device.connect().catch(() => {
59
+ autoConnectedRef.current.delete(device.id);
60
+ });
61
+ }, []);
48
62
  React.useEffect(() => {
49
63
  if (!autoPair) {
64
+ autoConnectedRef.current.clear();
50
65
  return;
51
66
  }
52
- runtime.devices.filter(device => paired.includes(device.id)).forEach(device => void device.device.connect());
53
- }, [autoPair, paired, runtime, runtime.devices]);
67
+ runtime.devices.forEach(connectIfPaired);
68
+ return runtime.subscribe("deviceFound", connectIfPaired);
69
+ }, [autoPair, connectIfPaired, paired, runtime]);
70
+ const pair = React.useCallback(device => save([...new Set([...pairedRef.current, device.id])]), [save]);
71
+ const forget = React.useCallback(async id => {
72
+ if (!runtime.manager) {
73
+ throw new Error("Bluetooth manager is not ready; try forgetting the device again.");
74
+ }
75
+ await runtime.manager.forget(id);
76
+ autoConnectedRef.current.delete(id);
77
+ await save(pairedRef.current.filter(candidate => candidate !== id));
78
+ }, [runtime, save]);
54
79
  return {
55
80
  paired,
56
- pair: device => save([...new Set([...pairedRef.current, device.id])]),
57
- forget: async id => {
58
- if (!runtime.manager) {
59
- throw new Error("Bluetooth manager is not ready; try forgetting the device again.");
60
- }
61
- await runtime.manager.forget(id);
62
- await save(pairedRef.current.filter(candidate => candidate !== id));
63
- }
81
+ pair,
82
+ forget
64
83
  };
65
84
  };
66
85
  exports.usePairedDevices = usePairedDevices;